リモートサーバ(windows)にインストールされいているソフトウェア一覧を取得するVBScript。外部ベンダーに大量のサーバを対象としたソフトウェアインストール作業を依頼したが、ベンダーがチャント入れたかチェックするために作った。
これでCSVに出してExcelのピポッドでサーバxアプリケーション一覧のマトリクスを使ってチェックする予定。
'----------------------------------- 'インストールされたソフトウエアの一覧 '----------------------------------- Const USERNAME = "OSユーザID" Const PASSWORD = "OSユーザパスワード" Dim filename Dim objWshShell Dim objFileSys Dim objOutFile Dim Locator Dim Service Dim objEntries Dim objEntry Dim curNode '配列の数にあわせる Dim serverArr(1) '配列のサイズを指定(以下のインデックス番号 - 1) 'serverArrにサーバ名 serverArr(0) = "サーバ名1" serverArr(1) = "サーバ名2" 'WScript.Shellオブジェクトの作成 Set objWshShell = CreateObject("WScript.Shell") filename = objWshShell.CurrentDirectory&"\applications.csv" 'ファイルシステムオブジェクトの作成 Set objFileSys = WScript.CreateObject("Scripting.FileSystemObject") 'テキストファイルを書き込み。上書モード:2 true:無い場合新規作成、Unicodeとしてファイル作成 Set objOutFile = objFileSys.OpenTextFile(filename,8,True,True) '------------------- 処理部分 -------------------------------- objOutFile.WriteLine "サーバ" & Chr(9) &_ "application" & Chr(9) & _ "caption" & Chr(9) & _ "version" For Each curNode in serverArr Set Locator = WScript.CreateObject("WbemScripting.SWbemLocator") Set Service = Locator.ConnectServer( curNode, "root\cimv2", USERNAME, PASSWORD ) Set objEntries = Service.ExecQuery("Select * From Win32_Product") msgbox curNode & " を処理しています" For each objEntry in objEntries objOutFile.WriteLine curNode & Chr(9) & objEntry.Name & vbTab & objEntry.Caption & vbTab & objEntry.Version Next Next 'テキストファイルのクローズ objOutFile.Close '終了処理 msgbox "処理完了"