"Diary" インターネットさんへの恩返し

いつもソースコードコピペばかりなので,みなさまへ少しばかりの恩返しを

【VBS】リモートサーバにインストールされいているアプリケーション一覧を取得



スポンサーリンク


リモートサーバ(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 "処理完了"

参考:http://www.wmifun.net/sample/win32_product.html