
Alguém pode olhar meu código e me dizer por que, ao usar o comando Invoke, meu PC ainda está sendo usado como intermediário?
Estou tentando fazer com que o computador de destino seja transferido diretamente e não use meu PC como intermediário.
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
Responder1
Sim, você está executando o processo ROBOCOPY
naquele computador com $DestinationComputer
, sim. Mas você ainda está rodando Invoke-Command
em sua máquina que espera stdout
e stderr
.
Dos documentos
O cmdlet Invoke-Command executa comandos em um computador local ou remoto e retorna todas as saídas dos comandos, incluindo erros
Portanto, esse comportamento é esperado com o seu código
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
O que você precisa é passar a InDisconnectedSession
opção. O que faz com que Invoke-Command
você conecte, execute o cmd e desconecte imediatamente. Novamente dos documentos:
Para criar uma sessão desconectada, use o parâmetro InDisconnectedSession do cmdlet Invoke-Command. Ele cria uma sessão, inicia o comando e desconecta imediatamente, antes que o comando possa retornar qualquer saída.
Isto é o que você está pedindo.
Saúde.