Запустите exe / bat на удаленном сервере с помощью PowerShell (не копируйте содержимое на мой сервер) - PullRequest
0 голосов
/ 09 мая 2018

Я обнаружил командлет Invoke-Command в PowerShell, который предположительно вызывает команду на другом сервере, но это не совсем работает. Вместо этого я получаю печать того, что летучая мышь / exe. Мой exe - консольное приложение, а bat - тест, который я выполнил, запустив exe с start "" "myexe.exe".

Я пытаюсь выполнить команду:

Invoke-Command -ComputerName 10.10.10.10 -ScriptBlock {
    'C:\Program Files\program.exe'
}

или

Invoke-Command -ComputerName 10.10.10.10 -ScriptBlock {
    'C:\Program Files\batch.bat'
}

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

Я где-то пропустил спор? Я хочу запустить exe / bat на удаленном сервере, а не на сервере, на котором я работаю.

EDIT

Я заставил это работать с этим:

$command = "PathtoExe.exe"
$process = [WMICLASS]"\\10.10.10.10\ROOT\CIMV2:win32_process"
$result = $process.Create($command) 

Но теперь exe не отображается, это похоже на работу в фоновом режиме.

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

У меня была такая же боль при попытке запустить «netsh.exe» на удаленном хосте. В конце концов получил его работать со следующим кодом:

Invoke-Command -ComputerName 10.10.10.10 -ScriptBlock {Invoke-Expression "C:\Program Files\program.exe"}
0 голосов
/ 09 мая 2018

Ваша проблема в том, как вы пытаетесь вызвать исполняемый файл. В PowerShell все является объектом . Вы печатаете String на консоли вместо выполнения. Чтобы вызвать строку, вам нужно использовать оператор вызова: &

Invoke-Command -ComputerName 10.10.10.10 -ScriptBlock {
    & 'C:\Program Files\batch.bat'
}

Это заставит его использовать программу по умолчанию для этого расширения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...