0

我有一个需要运行 psexec 以在远程服务器上启动名为 md5 的应用程序的 VB 脚本。Md5 生成文件的散列键并采用一个参数 - 文件路径\名称。我需要检索生成以存储在变量中的 has 键。下面是我正在使用的代码:

Set objShell = CreateObject("Wscript.Shell")
strcomputer = "remotecomputer"
tempDest = "C:\somedir"
filename = "somefile"

strCommand = "psexec -accepteula \\" & strcomputer & " -c md5.exe " & tempDest & "\" & filename & " > log.txt"
Set objExecObject = objShell.Exec("%comspec% /c " & strCommand)
Do While objExecObject.Status <> 1 'loop until previous process has finished
WScript.Sleep 100
Loop

运行 MD5 命令,但没有任何内容写入日志文件。当我将 strCommand(将所有变量替换为实际数据)复制并粘贴到 cmd 提示符并运行它时,它成功地将 Md5 的输出写入日志文件。

归根结底,我只需要 Md5 的输出,如果有人知道比将其写入日志文件更好的方法,请告诉我。我已经尝试使用 objExecObject.StdOut.Readall() 来尝试捕获导致随机失败的输出 - 有时它会捕获输出,有时它不会,而无需更改脚本中的任何内容。

4

2 回答 2

0

I found a solution for this. Instead of using the following code:

strCommand = "psexec -accepteula \\" & strcomputer & " -c md5.exe " & tempDest & "\" & filename & " > log.txt"
Set objExecObject = objShell.Exec("%comspec% /c " & strCommand)
Do While objExecObject.Status <> 1 'loop until previous process has finished
WScript.Sleep 100
Loop

I used this instead:

strCommand = "psexec -accepteula \\" & strcomputer & " -c md5.exe " & tempDest & "\" & filename & " > log.txt"
objShell.Run "%comspec% /c " & strCommand, 0, true

The script is now redirecting to log.txt properly.

于 2009-10-28T03:19:08.383 回答
0

只是一个猜测:您确定脚本运行时当前目录是什么?尝试提供日志文件的绝对路径,看看是否有帮助。

于 2009-10-27T06:43:06.680 回答