1

リモートマシンにmsiファイルをインストールするスクリプトは次のとおりです。

Const MSIFileName = "\\<IP ADDR>\c$\MySetup\<FILENAME>"

Set WshShell = WScript.CreateObject( "WScript.Shell" )
WshShell.Run "msiexec /a " & MSIFileName & " /quiet /log c:\install.log", 1, True

このスクリプトをローカル マシンから実行すると、実行元のマシンにファイルがインストールされます。代わりに、で指定されたマシンにインストールしたいと考えていますMSIFileName。どこが間違っていますか?

4

1 に答える 1

0

ローカル ホストでリモート MSI を実行しています。リモート ホストにリモート実行可能ファイルをインストールするには、WMI を使用できます。

host  = "<IP ADDR>"
setup = "msiexec /a ""C:\MySetup\<FILENAME>"" /quiet ..."

Set wmi = GetObject("winmgmts://" & host & "/root/cimv2")

rc = wmi.Get("Win32_Process").Create(setup, , , pid)

If rc = 0 Then
  WScript.Echo "Setup started with PID " & pid & "."
Else
  WScript.Echo "Starting setup failed. (" & rc & ")"
End If

上記はプロセスを非同期に開始します (つまり、Createすぐに戻ります)。リモート プロセスが完了するのを待つ必要がある場合は、次のように監視する必要があります。

Do
  WScript.Sleep 100
  Set p = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE ProcessID=" & pid)
Loop Until p.Count = 0

ただし、次のように、必要なことを行うためのより簡単な方法がある場合がありますPsExec

psexec \\<IP ADDR> msiexec /a "C:\MySetup\<FILENAME>" /quiet ...
于 2013-08-19T08:47:59.837 に答える