about_WMI_Cmdlets
簡単な説明
Windows Management Instrumentation (WMI) と Windows PowerShell の背景情報を提供します。
長い説明
このトピックでは、wmi テクノロジ、Windows PowerShell 用の wmi コマンドレット、wmi ベースのリモート処理、wmi アクセラレータ、および wmi のトラブルシューティングについて説明します。 このトピックでは、WMI に関する詳細情報へのリンクも示します。
WMI について
Windows Management Instrumentation (WMI) は、Web-Based Enterprise Management (WBEM) を Microsoft が実装したものです。WBEM とは、企業環境で管理情報にアクセスするための標準技術を確立する業界の取り組みの 1 つです。 WMI では、Common Information Model (CIM) 業界規格を使用して、システム、アプリケーション、ネットワーク、デバイスなどのマネージド コンポーネントを表現します。 CIM は、分散管理タスク フォース (DMTF) によって開発され、管理されています。 WMI を使用して、ローカルコンピューターとリモートコンピューターの両方を管理できます。 たとえば、WMI を使用して次の操作を行うことができます。
- リモートコンピューター上のプロセスを開始します。
- リモートでコンピューターを再起動します。
- ローカルコンピューターまたはリモートコンピューターにインストールされているアプリケーションの一覧を取得します。
- ローカルコンピューターまたはリモートコンピューター上の Windows イベントログを照会します。
WINDOWS POWERSHELL 用の WMI コマンドレット
Windows PowerShell は、既定で Windows PowerShell で使用できる一連のコマンドレットを使用して WMI 機能を実装します。 これらのコマンドレットを使用して、ローカルコンピューターとリモートコンピューターを管理するために必要なエンドツーエンドのタスクを実行できます。
次の WMI コマンドレットが含まれています。
| コマンドレット | 説明 |
|---|---|
| Get-WmiObject | WMI クラスまたは情報のインスタンスを取得します。 |
| 使用可能なクラスについて。 | |
| Invoke-WmiMethod | WMI メソッドを呼び出します。 |
| Register-WmiEvent | WMI イベントをサブスクライブします。 |
| Remove-WmiObject | WMI クラスおよびインスタンスを削除します。 |
| Set-WmiInstance | WMI クラスのインスタンスを作成または変更します。 |
サンプルコマンド
次のコマンドは、ローカルコンピューターの BIOS 情報を表示します。
C:\PS> get-wmiobject win32_bios | format-list *
次のコマンドは、3台のリモートコンピューターの WinRM サービスに関する情報を表示します。
$wql = "select * from win32_service where name='WinRM'"
get-wmiobject -query $wql -computername server01, server01, server03
次のより複雑なコマンドは、プログラムのすべてのインスタンスを終了します。
C:\PS> notepad.exe
C:\PS> $wql = "select * from win32_process where name='notepad.exe'"
C:\PS> $np = get-wmiobject -query $wql
C:\PS> $np | remove-wmiobject
WMI ベースのリモート処理
WMI を使用してローカルシステムを管理する機能は便利ですが、WMI を強力な管理ツールにするリモート処理機能です。 WMI は、Microsoft の分散コンポーネントオブジェクトモデル (DCOM) を使用して、システムへの接続と管理を行います。 場合によっては、DCOM 接続を許可するようにシステムを構成する必要があります。 ファイアウォールの設定とロックダウンされた DCOM のアクセス許可によって、システムをリモートで管理する WMI の機能がブロックされる場合があります。
WMI の種類のアクセラレータ
Windows PowerShell には、WMI 型アクセラレータが含まれています。 これらの WMI 型アクセラレータ (ショートカット) を使用すると、非型のアクセラレータを使用する場合よりも、WMI オブジェクトに対するより直接的なアクセスが可能になります。
WMI では、次の種類のアクセラレータがサポートされています。
[WMISEARCHER]-WMI オブジェクトを検索するためのショートカットです。
[WMICLASS]-クラスの静的プロパティおよびメソッドにアクセスするためのショートカットです。
[WMI]-クラスの単一のインスタンスを取得するためのショートカット。
[WMISEARCHER] は、ManagementObjectSearcher の型アクセラレータです。 文字列コンストラクターを使用してサーチャーを作成することができます。これは、で GET () を実行することができます。
次に例を示します。
PS> $s = [WmiSearcher]'Select * from Win32_Process where Handlecount > 1000'
PS> $s.Get() |sort handlecount |ft handlecount,__path,name -auto
count __PATH name
----- ------ ----
1105 \\SERVER01\root\cimv2:Win32_Process.Handle="3724" PowerShell...
1132 \\SERVER01\root\cimv2:Win32_Process.Handle="1388" winlogon.exe
1495 \\SERVER01\root\cimv2:Win32_Process.Handle="2852" iexplore.exe
1699 \\SERVER01\root\cimv2:Win32_Process.Handle="1204" OUTLOOK.EXE
1719 \\SERVER01\root\cimv2:Win32_Process.Handle="1912" iexplore.exe
2579 \\SERVER01\root\cimv2:Win32_Process.Handle="1768" svchost.exe
[WMICLASS] は ManagementClass の型アクセラレータです。 これには、WMI クラスへのローカルまたは絶対 WMI パスを受け取り、そのクラスにバインドされたオブジェクトを返す文字列コンストラクターがあります。
次に例を示します。
PS> $c = [WMICLASS]"root\cimv2:WIn32_Process"
PS> $c |fl *
Name : Win32_Process
__GENUS : 1
__CLASS : Win32_Process
__SUPERCLASS : CIM_Process
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_Process
__PROPERTY_COUNT : 45
__DERIVATION : {CIM_Process, CIM_LogicalElement,
CIM_ManagedSystemElement}
__SERVER : SERVER01
__NAMESPACE : ROOT\cimv2
__PATH : \\SERVER01\ROOT\cimv2:Win32_Process
[WMI] は System.management.managementobject の型アクセラレータです。 これには、WMI インスタンスに対してローカルまたは絶対の WMI パスを取得し、そのインスタンスにバインドされたオブジェクトを返す文字列コンストラクターがあります。
次に例を示します。
PS> $p = [WMI]'\\SERVER01\root\cimv2:Win32_Process.Handle="1204"'
PS> $p.Name
OUTLOOK.EXE
WMI のトラブルシューティング
次の問題は、リモートコンピューターに接続しようとすると発生する可能性がある最も一般的な問題です。
問題 1: リモートコンピューターがオンラインではありません。
コンピューターがオフラインの場合は、WMI を使用してコンピューターに接続することはできません。 次のエラー メッセージを受け取ることがあります。
Remote server machine does not exist or is unavailable
このエラーメッセージが表示された場合は、コンピューターがオンラインになっていることを確認します。 リモートコンピューターに対して ping を実行します。
問題 2: リモートコンピューターに対するローカル管理者権限がありません。
WMI をリモートで使用するには、リモートコンピューターのローカル管理者権限を持っている必要があります。 そうしないと、そのコンピューターへのアクセスが拒否されます。
名前空間のセキュリティを確認するには:
- [スタート] ボタンをクリックし、[マイコンピューター] を右クリックして、[管理] をクリックします。
- [コンピューターの管理] で、[サービスとアプリケーション] を展開し、[WMI コントロール] を右クリックして、[プロパティ] をクリックします。
- [WMI コントロールのプロパティ] ダイアログボックスで、[セキュリティ] タブをクリックします。
問題 3: ファイアウォールがリモートコンピューターへのアクセスをブロックしている。
WMI は、DCOM (Distributed COM) および RPC (リモートプロシージャコール) プロトコルを使用してネットワークをスキャンします。 既定では、多くのファイアウォールは、DCOM および RPC トラフィックをブロックします。 ファイアウォールでこれらのプロトコルがブロックされている場合、接続は失敗します。 たとえば、Microsoft Windows XP Service Pack 2 の Windows ファイアウォールは、DCOM および WMI を含むすべての要請されていないネットワークトラフィックを自動的にブロックするように構成されています。 既定の構成では Windows ファイアウォールが着信 WMI 要求を拒否し、次のエラーメッセージが表示されます。
Remote server machine does not exist or is unavailable
関連項目
フィードバック
フィードバックの送信と表示