次の方法で共有


WMI タスク: コンピューター ソフトウェア

コンピューター ソフトウェアの WMI タスクは、Microsoft Windows インストーラー (MSI) によってインストールされているソフトウェアやソフトウェアのバージョンなどの情報を取得します。 その他の例については、https://www.microsoft.com/technetの TechNet ScriptCenter を参照してください。

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

次の手順では、スクリプトを実行する方法について説明します。

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

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

手記

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

手記

"select * from Win32_Product" クエリを実行すると、予期しない動作が発生する可能性があります。 これは、Win32_Productをサポートするプロバイダーがクエリ最適化されていないためです。 詳細については、サポート技術情報の記事の974524を参照してください。

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

方法:... WMI クラスまたはメソッド
...スクリプトを使用してソフトウェアをアンインストールしますか? ソフトウェアが Microsoft Windows インストーラー (MSI) を使用してインストールされている場合は、WMI クラス Win32_ProductUninstall メソッドを使用します。
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery _
    ("Select * from Win32_Product " _
        & "Where Name = 'Personnel database'")
For Each objSoftware in colSoftware
    objSoftware.Uninstall()
Next

PowerShell
              
              $colSoftware = Get-WmiObject -Class Win32_Product |Where-Object {$_.name -eq "Personnel database"}

foreach ($colItem in $colSoftware) { $colItem.Uninstall() }

...スクリプトを使用してコンピューターにインストールされているすべてのソフトウェアのインベントリを作成しますか?

ソフトウェアが Microsoft Windows インストーラー (MSI) を使用してインストールされている場合は、WMI クラス Win32_Productを使用します。

VB
              
              strComputer = "."Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set colSoftware = objWMIService.ExecQuery _ ("Select * from Win32_Product")

For Each objSoftware in colSoftware Wscript.Echo "Name: " & objSoftware.Name Wscript.Echo "Version: " & objSoftware.Version Next

PowerShell
              
              $colSoftware = Get-WmiObject -Class Win32_Product

foreach ($colItem in $colSoftware) { "Name: " + $colItem.Name "Version: "+ $colItem.Version }

...インストールされている Microsoft Office のバージョンを確認する

Win32_Product クラスを使用し、Version プロパティの値を確認します。

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colSoftware = objWMIService.ExecQuery(_
    "Select * from Win32_Product " & _
    "Where IdentifyingNumber =" _
        & " '{90280409-6000-11D3-8CFE-0050048383C9}'")
For Each objItem in colSoftware
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "Version: " & objItem.Version
Next

PowerShell
              
              $colSoftware = Get-WmiObject -Class Win32_Product |{$_を Where-Object します。IdentifyingNumber -eq "{90280409-6000-11D3-8CFE-0050048383C9}"}

foreach ($colItem in $colSoftware) { "Name: " + $colItem.Name "Version: " + $colItem.Version }

スクリプトとアプリケーションの WMI タスクの

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

TechNet ScriptCenter