WMI タスク: WMI サービスへの接続

ローカル コンピューターまたはリモート コンピューターの WMI からデータを取得するには、特定の "名前空間" に接続することで WMI サービスに接続する必要があります。 ほとんどの場合、短縮モニカー接続またはロケーター接続のいずれかを使用します。 その他の例については、https://www.microsoft.com/technet の TechNet ScriptCenter を参照してください。

リモート接続を行うには、Windows ファイアウォールと DCOM を適切に設定する必要があります。 詳しくは、「リモート コンピューター上の WMI への接続」と Windows ファイアウォール経由の接続に関する記事をご覧ください。 Windows Vista 以降では、ユーザー アカウント制御 (UAC) で WMI アクセスに影響を与えることができます。 詳細については、「ユーザー アカウント制御と WMI」を参照してください。

このトピックに示すスクリプト例では、ローカル コンピューターからのみデータを取得しています。 スクリプトを使用してリモート コンピューターからデータを取得する方法の詳細については、「リモート コンピューター上の WMI への接続」を参照してください。

以下の手順では、スクリプトの実行方法を説明します。

スクリプトを実行するには

  1. コードをコピーし、拡張子 .vbs を付けたファイル (filename.vbs など) に保存します。 テキスト エディターによってファイルに .txt 拡張子が追加されていないことを確認します。
  2. コマンド プロンプト ウィンドウを開き、ファイルを保存したディレクトリに移動します。
  3. コマンド プロンプトで「cscript filename.vbs」と入力します。
  4. イベント ログにアクセスできない場合は、管理者特権でのコマンド プロンプトから実行しているかどうかを確認します。 セキュリティ イベント ログなどの一部のイベント ログは、ユーザー アクセス制御 (UAC) によって保護されている場合があります。

注意

既定では、cscript により、コマンド プロンプト ウィンドウにスクリプトの出力が表示されます。 WMI スクリプトでは大量の出力が生成される可能性があるため、出力をファイルにリダイレクトすることが必要になる場合があります。 コマンド プロンプトで「cscript filename.vbs > outfile.txt」と入力し、filename.vbs スクリプトの出力を outfile.txt にリダイレクトします。

次の表に、ローカル コンピューターからさまざまな種類のデータを取得するために使用できるスクリプトの例の一覧を示します。

操作方法 WMI のクラスまたはメソッド
WMI を使ってリモート コンピューターに接続する モニカーの接続文字列の一部として、次のいずれかを指定します。
  • NetBIOS コンピューター名 ("atl-dc-01" など)
  • 完全修飾ドメイン名 ("atl-dc-01.fabrikam.com" など)
  • IPv4 アドレス ("192.168.1.1" など)
  • Windows Vista 以降では、ターゲット コンピューターと接続元のコンピューターの両方で IPv6 が実行されている場合は、IPv6 アドレスを指定できます。
詳しくは、「リモート コンピューター上の WMI への接続」と「WMI での IPv6 と IPv4 のサポート」をご覧ください。
VB
strComputer = "atl-dc-01"
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery ("Select * from Win32_Process")
For Each objProcess in colProcessList
    Wscript.Echo "Process Name: " & objProcess.Name 
Next
PowerShell
strComputer = "atl-dc-01"
Get-WmiObject -Class Win32_Process -ComputerName $strComputer -Namespace "root\cimv2" | format-list -Property Name
代替資格情報を使って WMI スクリプトを実行する

SWbemLocator.ConnectServer メソッドまたは IWbemLocator::ConnectServer (C++ の場合) を使って、適切なユーザー名とパスワードを含めます。 ローカル コンピューターに接続するときは、資格情報を変更できません。 詳しくは、「WMI スクリプトの作成」と「リモート コンピューター上の WMI への接続」をご覧ください。

VB
strComputer = "atl-dc-01"
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer (strComputer, "root\cimv2", "fabrikam\administrator", "password")
Set colProcessList = objSWbemServices.ExecQuery("Select * From Win32_Process")
For Each objProcess in colProcessList
    Wscript.Echo "Process Name: " & objProcess.Name 
Next
PowerShell
$StrComputer = "atl-dc-01"
$strCredentials = "FABRIKAM\administrator"
Get-WmiObject -Class Win32_Process -ComputerName $strComputer -Namespace "root\cimv2" -credential $strCredentials `
   -Impersonation Impersonate | format-list -Property Name

スクリプトおよびアプリケーション用の WMI タスク

WMI C++ アプリケーションの例

TechNet ScriptCenter

`