O comando Invoke ainda usa meu PC como intermediário durante a robocópia?

O comando Invoke ainda usa meu PC como intermediário durante a robocópia?

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 ROBOCOPYnaquele computador com $DestinationComputer, sim. Mas você ainda está rodando Invoke-Commandem sua máquina que espera stdoute 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 InDisconnectedSessionopção. O que faz com que Invoke-Commandvocê 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.

informação relacionada