ловля кода возврата команды с “вызывать-командой” - Powershell 2

Выезд Тест Joel . При реализации этих методов, поскольку независимый разработчик был полезной проблемой.

17
задан Ruben Bartelink 19 April 2013 в 14:23
поделиться

1 ответ

Я думаю, что если вы запустите команду таким образом на другом сервере, вы не сможете получить там код возврата вашего скрипта. Это потому, что Invoke-Command просто запускает одну команду на удаленном компьютере, вероятно, в рамках одного временного сеанса, и вы не можете снова подключиться к этому сеансу.

Что вы можете do, однако, создает сеанс на удаленном компьютере и вызывает ваш скрипт в этом сеансе. После этого вы можете просто снова проверить возвращаемое значение в этом сеансе. Так что что-то вроде:

$s = New-PSSession -ComputerName <server_name>
Invoke-Command -Session $s -ScriptBlock { ... }
Invoke-Command -Session $s -ScriptBlock { $? }

может сработать. Таким образом, вы получаете доступ к тому же состоянию и переменным, что и первая Invoke-Command на удаленном компьютере.

Также Invoke-Command очень маловероятно, чтобы пройти через удаленную команду возвращаемое значение. Как бы вы тогда выяснили, что сама Invoke-Command не сработала?

ETA: Хорошо, я неправильно вас понял относительно «кода возврата». Я предполагал, что вы имели в виду $? . В любом случае, согласно документации, вы можете запустить сценарий на удаленном компьютере следующим образом:

Чтобы запустить локальный сценарий на удаленных компьютерах, используйте команду Параметр FilePath в Invoke-Command .

Например, следующая команда запускает сценарий Sample.ps1 на компьютерах S1 и S2 :

 invoke-command -computername S1, S2 -filepath C: \ Test \ Sample.ps1

Результаты сценария возвращаются на локальный компьютер. Вы не нужно копировать файлы.

10
ответ дан 30 November 2019 в 14:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: