Invoke-command continua usando meu PC como intermediário durante o robocopy?

0

Alguém pode ver meu código e me dizer por que, ao usar o invoke-command, 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
    
por Christopher Heisler 09.10.2018 / 17:10

1 resposta

1

Sim, você está executando o processo ROBOCOPY nesse computador com $DestinationComputer , sim. Mas você ainda está executando Invoke-Command em sua máquina, que aguarda stdout e stderr .

A partir dos documentos

The Invoke-Command cmdlet runs commands on a local or remote computer and returns all output from the commands, including errors

Portanto, este 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 opção InDisconnectedSession . O que faz com que Invoke-Command se conecte, execute cmd e desconecte imediatamente. Novamente a partir dos documentos:

To create a disconnected session, use the InDisconnectedSession parameter of the Invoke-Command cmdlet. It creates a session, starts the command, and disconnects immediately, before the command can return any output.

Isso é o que você está pedindo.

Felicidades.

    
por 09.10.2018 / 20:51