Как я могу использовать VB.NET для выполнения пакетного файла на другом компьютере?

StackOverflow https://stackoverflow.com/questions/893867

Вопрос

В 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()
Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top