PowerShell 7のWMI寄りなメモを記載します。
Win32_*
クラスの名前を列挙(Win32_PerfRawData_*
とWin32_PerfFormattedData_*
は除外)
Get-CimClass -ClassName Win32_* -Namespace root/CIMV2 |Where-Object CimClassName -cnotmatch"Win32_(PerfRawData|PerfFormattedData)_.*"|Select-Object CimClassName |Sort-Object CimClassName
Win32_PerfRawData_*
とWin32_PerfFormattedData_*
は数が多すぎるので除外しています。表示する場合は3行目を削除します。
システムデバイスのクラス名一覧を取得
Get-CimInstance Win32_SystemDevices |Select-Object @{l ="ClassName"; e = { $_.PartComponent.CimSystemProperties.ClassName } } -Unique|Sort-Object ClassName
Select-Object
関数で特殊なハッシュテーブル@{l=名前; e=スクリプトブロック}
を用いています。Win32_SystemDevices
インスタンス配列から各要素のクラス名を取得にはPartComponent.CimSystemProperties.ClassName
と辿る必要があり、Select-Object
関数にスクリプトブロックを渡すと返される扱いにくい列名の配列を避けるためです。
Win32_Account
インスタンス配列をテーブル形式で表示
Get-CimInstance Win32_Account |Format-Table -AutoSize -Force
Get-CimInstance Win32_Account
だけ呼び出すとなぜか異なる内容のリストとテーブルが順番に表示されます。理由は分かりませんが-Force
オプションを付けるとテーブルにまとめて表示できます。
型アクセラレイタを列挙
[PSObject].Assembly.GetType("System.Management.Automation.TypeAccelerators")::get
MicrosoftのScriptingブログより。ブログでは[accelerators]
が紹介されていますが、PowerShell 7では使えませんでした。使用頻度が低く表記が型アクセラレイターと被るのでObsoluteされたのでしょうか。