PowerShellからWMIを使用する方法を以下に記します。
以下、VBScriptでWMIを使用するサンプルコードを公開しています。
Get-WmiObjectコマンドレットを使用することにより簡単にWMIにアクセスすることができます。
Get-WmiObjectにWin32_ComputerSystemを指定して実行した例です。
PS C:\> Get-WmiObject Win32_ComputerSystem Domain : WORKGROUP Manufacturer : LENOVO Model : ABCDEFG Name : THINKPAD PrimaryOwnerName : sakura TotalPhysicalMemory : 8428290048
WMIによる情報が簡単に取れていることが確認できます。
以下のように-queryを指定することによりSQL構文を記述し出力することができます。
Win32_Serviceを指定し、StateがRunningになっているものを出力しています。
ft(Format-Tableにて出力を整形しています。
PS C:\> Get-WmiObject -query "SELECT * FROM Win32_Service WHERE State=""Running""" | ft
ExitCode Name ProcessId StartMode State Status
-------- ---- --------- --------- ----- ------
0 AdobeARMservice 1600 Auto Running OK
0 AeLookupSvc 1020 Manual Running OK
0 Appinfo 1020 Manual Running OK
0 Apple Mobile Dev... 1640 Auto Running OK
0 AudioEndpointBui... 316 Auto Running OK
0 Audiosrv 988 Auto Running OK
0 AVControlCenter 1684 Auto Running OK
0 BFE 1400 Auto Running OK
0 BITS 1020 Auto Running OK
0 Bonjour Service 1796 Auto Running OK
0 BrokerInfrastruc... 680 Auto Running OK
0 Browser 1020 Manual Running OK
<snip>
以下は、Win32_Processorを出力した時の結果です。
PS C:\> Get-WmiObject Win32_Processor Caption : Intel64 Family 6 Model 58 Stepping 9 DeviceID : CPU0 Manufacturer : GenuineIntel MaxClockSpeed : 2501 Name : Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz SocketDesignation : CPU Socket - U3E1
以下は、Win32_LogicalDiskを指定し、Format-Table(ft)にて整形して出力した結果です。
PS C:\> Get-WmiObject Win32_LogicalDisk | Format-Table DeviceID DriveType ProviderName FreeSpace Size VolumeName -------- --------- ------------ --------- ---- ---------- C: 3 58719133696 126106988544 Windows8_OS D: 5 E: 2 46781014016 63467155456
以上、PowerShellでWMIを使用するサンプルでした。