Psexec没有在VB脚本中输出到日志文件

时间:2009-10-27 06:36:58

标签: vbscript md5 psexec

我有一个VB脚本,需要运行psexec才能在远程服务器上启动名为md5的应用程序。 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()来尝试捕获导致随机失败的输出 - 有时它会捕获输出,有时它不会,而不会更改脚本中的任何内容。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我找到了解决方案。而不是使用以下代码:

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

我改为使用了这个:

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

该脚本现在正确地重定向到log.txt。