Quantcast
Channel: プログラミング
Viewing all articles
Browse latest Browse all 7857

PowerShell 7 覚書き WMI関係 - potisanのプログラミングメモ

$
0
0

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されたのでしょうか。


Viewing all articles
Browse latest Browse all 7857

Trending Articles