PowerShell オブジェクトのすべてのプロパティを表示する方法
-
Get-WmiObject
を使用して PowerShell オブジェクトのすべてのプロパティを表示する - クラスインスタンス/オブジェクト情報を取得する
-
プロパティを表示するために
Format-List
コマンドレットを使用する - 結論

Windows マシンとそのコンポーネント、ネットワーク、アプリケーション、サービスに関する情報を見つけるための要件があります。共通情報モデル(CIM)は、これらのコンポーネントとその情報を操作するためのオープンソースの標準です。
Microsoft は、コンピュータ、サービス、ネットワーク情報をクエリおよび操作するために CIM の上に Windows 管理インストゥルメンテーション(WMI)と呼ばれる標準を実装しました。
Get-WmiObject
を使用して PowerShell オブジェクトのすべてのプロパティを表示する
Get-WmiObject
コマンドレットは、特にシステム管理と管理タスクのための強力なツールです。ハードウェア、インストールされたソフトウェア、ネットワーク構成など、システムに関する豊富な情報を含む Windows 管理インストゥルメンテーション(WMI)データにアクセスできます。
Get-WmiObject
のあまり知られていないが強力な機能の 1つは、-List
パラメータを使用することです。このオプションを使用すると、指定されたネームスペース内のすべての WMI クラスのリストを取得できます。
Get-WmiObject -List
の基本構文は次のとおりです:
Get-WmiObject -List [-Namespace <String>] [-ComputerName <String>]
主要なパラメータは以下の通りです:
-Namespace <String>
:WMI リポジトリネームスペースを指定します。デフォルトはroot\cimv2
で、一般的に使用される WMI クラスのほとんどが含まれています。-ComputerName <String>
:リモートコンピュータを対象とします。このパラメータがない場合、コマンドレットはローカルマシンで操作します。
したがって、Windows システム管理プロセスははるかに簡単になります。Get-WmiObject
コマンドレットを使用して利用可能なクラスを確認しましょう。
Get-WmiObject -List
このコマンドは、ローカルマシンのデフォルトネームスペースにあるすべてのクラスを出力します。デフォルトネームスペースは、Windows コンピュータの ROOT\cimv2
です。
出力:
デフォルトのもの(ROOT\cimv2
)とは異なるネームスペースを指定することも可能です。デフォルトネームスペースを変更するには、-Namespace
パラメータを使用できます。
Get-WmiObject -Namespace <custom_namespace>
クラスインスタンス/オブジェクト情報を取得する
Get-WmiObject -Class
の使用は、システムの特定の側面に関する詳細情報を取得するために主に行われます。たとえば、Win32_Processor
クラスにクエリを実行すると、プロセッサに関する情報が提供され、Win32_OperatingSystem
は OS に関する詳細を明らかにします。
このコマンドレットの -Class
パラメータは、WMI リポジトリ内の特定のクラスをクエリすることを可能にします。これらはシステム情報を表現するオブジェクトのテンプレートです。これらのクラスは、ハードウェアの詳細から構成設定まで、幅広いデータをカバーします。
構文:
Get-WmiObject -Class <String> [-Namespace <String>] [-ComputerName <String>]
主要なパラメータは以下の通りです:
-Class <String>
:情報を必要とする WMI クラスを指定します。-Namespace <String>
:オプション。WMI リポジトリネームスペースを指定します(デフォルトはroot\cimv2
)。-ComputerName <String>
:オプション。コマンドをリモートコンピュータに指示します。
使用できる WMI クラスは数百あります。指定されたクラスの情報を取得できます。次のように示します。
Get-WmiObject -Class Win32_computersystem
ここでは、Win32_computersystem
クラスの情報を取得しています。それは、コンピュータシステムに関するすべての情報を保持している Win32_computersystem
オブジェクトとそのプロパティを返します。次のように示されています。
出力に表示されるプロパティの数は限られています。Win32_computersystem
オブジェクトは、これらの他にも多くのプロパティを含んでいます。
取得したオブジェクトのすべてのプロパティを表示するために、Format-List
コマンドレットを使用できます。
プロパティを表示するために Format-List
コマンドレットを使用する
Format-List
は、別のコマンドの出力とパイプすることで結果をフォーマットできます。このコマンドレットは、取得した WMI オブジェクトの指定されたまたはすべてのプロパティを読みやすい形式で表示できます。
構文:
Get-WmiObject -Class Win32_computersystem | Format-List -Property Name, Model, Manufacturer
Win32_computersystem
インスタンスに対していくつかのプロパティを指定してみましょう。
Format-List [-Property <PropertyName[]>]
:出力をリストとしてフォーマットします。-Property <PropertyName[]>
:オプション。表示するプロパティを指定します。省略すると、すべてのプロパティが表示されます。
出力:
Get-WmiObject
は、Win32_computersystem
オブジェクトのデフォルトプロパティを返します。その後、出力はパイプライン演算子(|
)を介して Format-List
コマンドに渡されます。
Format-List
コマンドレットに -Property
パラメータを渡すことができます。これにより、指定された 3つのプロパティで最終出力がフィルタリングされます。
時々、指定された WMI オブジェクトのすべてのプロパティと値を確認することが重要です。その場合、-Property *
を使用して利用可能なすべてのプロパティとその値を取得する必要があります。
*
はすべてのプロパティを示します。
Get-WmiObject -Class Win32_computersystem | Format-List -Property *
出力:
出力には、Win32_computersystem
オブジェクトのすべてのプロパティと値が含まれています。上記のコマンドで -Property
パラメータを省略することもできます。
Get-WmiObject -Class Win32_computersystem | Format-List *
上記のコマンドは、上記と同じ出力を表示する必要があります。
結論
PowerShell の Get-WmiObject
の探求において、Windows システム管理におけるその重要な役割を明らかにしました。-List
パラメータはユーザーにすべての WMI クラスを列挙する機能を与え、関連データソースの特定を助けます。
-Class
に焦点を当て、Win32_ComputerSystem
を例に詳細なシステム情報を取得する精度を示しました。Format-List
の追加は出力の可読性を高め、幅広いプロパティリストを扱う際に重要です。
さらなる知識を深めるために、Win32_Processor
や Win32_OperatingSystem
などのさまざまな WMI クラスを掘り下げてください。スクリプトに Get-WmiObject
を組み込むことで、システム管理タスクを合理化できます。
多用途なツールとして、Get-WmiObject
は初心者から経験豊富なユーザーまで幅広く対応しており、多様な IT タスクや自動化における PowerShell の重要性を体現しています。
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.