Как я могу использовать VB.NET для запуска командного файла на другом компьютере? - PullRequest
0 голосов
/ 21 мая 2009

В vb.net 2008 я хочу выполнить командный файл, который находится на другом компьютере. Там нет ошибки, но ничего не происходит. Вот код:

Dim pStart As New System.Diagnostics.Process
Dim startInfo As New System.Diagnostics.ProcessStartInfo(serverpath & "\file.bat")
startInfo.RedirectStandardOutput = True
startInfo.WindowStyle = ProcessWindowStyle.Hidden
startInfo.UseShellExecute = False
pStart = System.Diagnostics.Process.Start(startInfo)
pStart.WaitForExit()
pStart.Close()

Ответы [ 3 ]

1 голос
/ 22 мая 2009

Для запуска процесса на удаленном компьютере вы можете использовать Sysinternals бесплатно psexec .

Вы можете вызывать его с надлежащими параметрами и с необходимыми разрешениями, как в примере кода.

1 голос
/ 21 мая 2009

Я никогда не пытался создать процесс, используя командный файл в качестве исполняемого файла. Мне всегда приходилось использовать cmd.exe в качестве программы. Это работало для меня в прошлом:

Dim startInfo As New System.Diagnostics.ProcessStartInfo("cmd.exe", "/c " & serverpath & "\file.bat")

"/ c" как часть списка аргументов указывает cmd.exe завершить работу после завершения пакетного файла.

Если вы собираетесь использовать RedirectStandardOutput, вам действительно нужно использовать RedirectStandardError, а затем подписаться на события класса Process для сбора данных в этих потоках (OutputDataReceived и ErrorDataReceived). В противном случае у вас не будет возможности отладить пакетный скрипт.

0 голосов
/ 21 мая 2009

Это читается как проблема с разрешениями. Я бы разрешил это так, если вы еще не исключили.
Вы пытались запустить тот же пакетный файл с локального компьютера?
Если это проблема с разрешениями, вы можете решить ее, либо скопировав файл локально перед его выполнением, либо подключив диск к удаленному компьютеру, на котором находится файл, а затем запустив пакетный файл по новому пути.

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

...