Psexec не выводится в лог-файл в VB-скрипте - PullRequest
0 голосов
/ 27 октября 2009

У меня есть скрипт 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 голосов
/ 28 октября 2009

Я нашел решение для этого. Вместо использования следующего кода:

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.

0 голосов
/ 27 октября 2009

Просто предположение: вы уверены, что текущий каталог находится во время работы скрипта? Попробуйте указать абсолютный путь к файлу журнала и посмотрите, поможет ли он.

...