GPO からソフトウェアがインストールされているクライアント マシンを特定する方法はありますか?

GPO からソフトウェアがインストールされているクライアント マシンを特定する方法はありますか?

GPO を使用してソフトウェアを割り当てると、クライアント マシンは次回再起動時にこれをインストールするものと想定します。ただし、実際に各クライアントにアクセスして自分で確認しない限り、確信は持てません。どのクライアントにソフトウェアがインストールされているのかを確認する方法 (WSUS など) や、クライアントにインストールされているソフトウェアのバージョンを確認するスクリプトを作成する方法はありますか?

答え1

GPO にはレポート メカニズムが組み込まれていません。適切な構成管理ソフトウェアであれば、インストールされているものをレポートできますし、スクリプト化することもできます。


警告Microsoft が推奨する次のコードには重大な問題があります。この回答の下のコメントと、2009 年の「Rapid Publishing」(緊急) ナレッジ ベース記事へのリンクを参照してください。


比較的新しいコンピューター (Vista/2008+) を使用している場合は、PowerShell を使用して、gwmi -comp computer_name Win32_Productインストールされているソフトウェアの一覧を取得できます。次のような情報が返されます。

IdentifyingNumber : {D11F66FF-82B3-DDB8-1146-525370552BE1}
Name              : Windows Software Development Kit for Windows Store Apps
Vendor            : Microsoft Corporation
Version           : 8.59.25584
Caption           : Windows Software Development Kit for Windows Store Apps

これをさらにスクリプト化して、特定のソフトウェアのさまざまなバージョンがインストールされているコンピューターのリストを作成したり、CVS またはその他の ODBC 接続にエクスポートしたり、さまざまなタスクを実行したりできます... 目的によって異なります。このプロセスは少し遅いので、複数のクエリを並行して実行するには、この "-AsJob" の実行を検討することをお勧めします。

答え2

質問があまりにも一般的すぎるので、せいぜいヒントしか提供できません。インストールを確認する方法について考えてください。たとえば、%programfiles%\Company\SoftwareXYZ\abc.exe にファイルが存在すると、アプリが正常にインストールされたことがわかりますか?

  • レジストリキーですか?
  • 成功キーを含むログ ファイルですか?
  • イベントログ?

それがわかったら、それをチェックするためのスクリプトを作成する必要があります。

次に、結果をどこかに報告する必要があります。たとえば、COMPUTERNAME をネットワーク共有内のファイルとして投稿できます。たとえば、バッチ ファイルの次の行でそれが実行されます。

echo. > \\MyServer\MyShare\%COMPUTERNAME%_Success.txt

最後に、そのスクリプトを同じ GPO 内のスタートアップ スクリプトとして追加できます。

関連情報