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 内のスタートアップ スクリプトとして追加できます。