最近はシンクライアントの導入も進んでいるので、1名のユーザが物理マシンと仮想マシンの両方を使用しているケースがあります。
物理マシンにはインストールしたいけれど、仮想マシンにはインストールしたくないなどの場合です。
その場合にはログインユーザ名でインストールできないので、コンピュータ名で判断するスクリプトを作成しました。
仮想マシンのコンピュータ名は末尾に「-vClient」が付きます。
なので、-vClientが末尾に付いている仮想マシンへはインストールしないようにしています。
IngServiceCount = InStr(UCase(objItem.Name), "-vClient") の箇所です。
また、既にインストールされているかどうかは、Windowsサービスが起動しているかどうかチェックして判断しています。
「TESTSERVICE_01」という名前のサービス名が存在している場合は、既にインストール済と判断しています。
strServiceName = "TESTSERVICE_01" の箇所です。
最後にインストール対象と判断されたクライアントへは、以下を実行してインストールを開始します。
objWShell.Run "\\testdomain.local\NETLOGON\setup.exe", 0, False
★★★ 以下はサンプルVBSスクリプトです。 ★★★
On Error Resume Next
Dim objWShell
Dim objServiceList
Dim strQuery
Dim strServiceName
Dim IngServiceCount
Dim result
strComputer = "."
Set objWShell = CreateObject("WScript.Shell")
strServiceName = "TESTSERVICE_01"
IngServiceCount = 0
strQuery = "SELECT * FROM Win32_Service" &_
" WHERE Name ='" & strServiceName & "'"
Set objServiceList = GetObject("winmgmts:").ExecQuery(strQuery)
For Each objServiceInfo In objServiceList
IngServiceCount = IngServiceCount + 1
Next
If IngServiceCount > 0 Then
WScript.Quit
End If
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_ComputerSystem")
For Each objItem in colItems
IngServiceCount = InStr(UCase(objItem.Name), "-vClient")
Next
If IngServiceCount > 0 Then
WScript.Quit
End If
objWShell.Run "\\testdomain.local\NETLOGON\setup.exe", 0, False
Set objServiceList = Nothing
Set objWShell = Nothing
Tweet