Get-CimInstance を使用した WMI オブジェクトの取得
このサンプルは、Windows プラットフォームにのみ適用されます。
Windows Management Instrumentation (WMI) は、さまざまな情報を均一な方法で公開するため、Windows システム管理の中核となるテクノロジです。 WMI が可能な量のため、WMI オブジェクト ( Get-CimInstance
) にアクセスするための PowerShell コマンドレットは、実際の作業に最も役立つコマンドレットの 1 つです。 ここでは、CIM コマンドレットを使用して WMI オブジェクトにアクセスする方法と、WMI オブジェクトを使用して特定の操作を行う方法について説明します。
WMI クラスの一覧表示
ほとんどの WMI ユーザーが直面する最初の問題は、WMI で何ができるかを調べることです。 WMI クラスは、管理できるリソースを記述します。 何百もの WMI クラスがあり、その一部には数十のプロパティが含まれています。
Get-CimClass
は、WMI を検出可能にすることで、この問題に対処します。 次のように入力すると、ローカル コンピューターで使用できる WMI クラスの一覧を取得できます。
Get-CimClass -Namespace root/CIMV2 |
Where-Object CimClassName -Like Win32* |
Select-Object CimClassName
CimClassName
------------
Win32_DeviceChangeEvent
Win32_SystemConfigurationChangeEvent
Win32_VolumeChangeEvent
Win32_SystemTrace
Win32_ProcessTrace
Win32_ProcessStartTrace
Win32_ProcessStopTrace
Win32_ThreadTrace
Win32_ThreadStartTrace
Win32_ThreadStopTrace
...
ComputerName パラメーターを使用して、コンピューター名または IP アドレスを指定して、リモート コンピューターから同じ情報を取得できます。
Get-CimClass -Namespace root/CIMV2 -ComputerName 192.168.1.29
リモート コンピューターから返されるクラスの一覧は、コンピューターが実行されている特定のオペレーティング システムと、インストールされているアプリケーションによって特定の WMI 拡張機能が追加されるため、異なる場合があります。
注
CIM コマンドレットを使用してリモート コンピューターに接続する場合、リモート コンピューターは WMI を実行している必要があり、使用しているアカウントはリモート コンピューターのローカル Administrators グループに存在する必要があります。 リモート システムに PowerShell をインストールする必要はありません。 これにより、PowerShell を実行していないが、WMI を使用できるオペレーティング システムを管理できます。
WMI クラスの詳細の表示
WMI クラスの名前が既にわかっている場合は、それを使用してすぐに情報を取得できます。 たとえば、コンピューターに関する情報を取得するために一般的に使用される WMI クラスの 1 つが Win32_OperatingSystem。
Get-CimInstance -Class Win32_OperatingSystem
SystemDirectory Organization BuildNumber RegisteredUser SerialNumber Version
--------------- ------------ ----------- -------------- ------------ -------
C:\WINDOWS\system32 Microsoft 22621 USER1 00330-80000-00000-AA175 10.0.22621
すべてのパラメーターを示していますが、コマンドはより簡潔な方法で表現できます。
ComputerName パラメーターは、ローカル システムに接続するときに必要ありません。 ここでは、最も一般的なケースを示し、パラメーターについて通知します。
名前空間の既定値は root/CIMV2 であり、省略することもできます。 最後に、ほとんどのコマンドレットでは、共通パラメーターの名前を省略できます。
Get-CimInstance
では、最初のパラメーターに名前が指定されていない場合、PowerShell はそれを Class パラメーターとして扱います。 つまり、次のように入力すると、最後のコマンドが発行された可能性があります。
Get-CimInstance Win32_OperatingSystem
Win32_OperatingSystem クラスには、ここに表示されるプロパティよりも多くのプロパティがあります。 Get-Member を使用して、すべてのプロパティを表示できます。 WMI クラスのプロパティは、他のオブジェクト プロパティと同様に自動的に使用できます。
Get-CimInstance -Class Win32_OperatingSystem | Get-Member -MemberType Property
TypeName: Microsoft.Management.Infrastructure.CimInstance#root/cimv2/Win32_OperatingSystem
Name MemberType Definition
---- ---------- ----------
BootDevice Property string BootDevice {get;}
BuildNumber Property string BuildNumber {get;}
BuildType Property string BuildType {get;}
Caption Property string Caption {get;}
CodeSet Property string CodeSet {get;}
CountryCode Property string CountryCode {get;}
CreationClassName Property string CreationClassName {get;}
CSCreationClassName Property string CSCreationClassName {get;}
CSDVersion Property string CSDVersion {get;}
CSName Property string CSName {get;}
CurrentTimeZone Property int16 CurrentTimeZone {get;}
DataExecutionPrevention_32BitApplications Property bool DataExecutionPrevention_32BitApplications {get;}
DataExecutionPrevention_Available Property bool DataExecutionPrevention_Available {get;}
...
Format コマンドレットを使用した既定以外のプロパティの表示
既定では表示されない Win32_OperatingSystem クラスに含まれる情報が必要な場合は、 Format コマンドレットを使用して表示できます。 たとえば、使用可能なメモリ データを表示する場合は、次のように入力します。
Get-CimInstance -Class Win32_OperatingSystem | Format-Table -Property TotalVirtualMemorySize, TotalVisibleMemorySize, FreePhysicalMemory, FreeVirtualMemory, FreeSpaceInPagingFiles
TotalVirtualMemorySize TotalVisibleMemorySize FreePhysicalMemory FreeVirtualMemory FreeSpaceInPagingFiles
---------------------- ---------------------- ------------------ ----------------- ----------------------
41787920 16622096 9537952 33071884 25056628
注
ワイルドカードはFormat-Table
のプロパティ名で使用できるため、最終的なパイプライン要素はFormat-Table -Property Total*Memory*, Free*
に簡略化できます。
次のように入力してリストとして書式設定すると、メモリ データが読みやすくなります。
Get-CimInstance -Class Win32_OperatingSystem | Format-List Total*Memory*, Free*
TotalVirtualMemorySize : 41787920
TotalVisibleMemorySize : 16622096
FreePhysicalMemory : 9365296
FreeSpaceInPagingFiles : 25042952
FreeVirtualMemory : 33013484
Name : Microsoft Windows 11 Pro|C:\Windows|\Device\Harddisk0\Partition2
PowerShell