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