Я думаю, что если вы запустите команду таким образом на другом сервере, вы не сможете найти код возврата вашего скрипта. Это связано с тем, что Invoke-Command
просто запускает одну команду на удаленном компьютере, вероятно, в течение одного временного сеанса, и вы не можете подключиться к этому сеансу снова.
Что вы можете сделать, тем не менее, это создать сеанс на удаленном компьютере и вызвать ваш сценарий в этом сеансе. После этого вы можете просто проверить возвращаемое значение в этом сеансе снова. Так что-то вроде:
$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
Результаты скрипта возвращаются на локальный компьютер. Вы
не нужно копировать файлы.