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を使用するサンプルでした。