Да, вы запускаете процесс ROBOCOPY
на этом компьютере $DestinationComputer
, да. Но вы все еще работаете Invoke-Command
на своей машине, которая ждет stdout
и stderr
.
Из документов
Командлет Invoke-Command выполняет команды на локальном или удаленном компьютере и возвращает все выходные данные команд, включая ошибки
Так что это поведение ожидается с вашим кодом
Invoke-Command -ComputerName $DestinationComputer -Credential $creds -Authentication Credssp -ScriptBlock { robocopy \\$($args[0])\C$\usmt \\$($args[1])\C$\usmt /E /COPY:DATOU /E /ZB /mt:32 /r:5 /w:0 }-ArgumentList $SourceComputer,$DestinationComputer -ErrorAction Inquire
Что вам нужно, это передать InDisconnectedSession
опцию. Что заставляет Invoke-Command
подключаться, запускать cmd и быстро отключаться. Опять из документов:
Чтобы создать отключенный сеанс, используйте параметр InDisconnectedSession командлета Invoke-Command. Он создает сеанс, запускает команду и немедленно отключается, прежде чем команда сможет вернуть какой-либо вывод.
Это то, что вы просите.
Приветствия.