¿El comando Invoke sigue usando mi PC como intermediario durante la robocopia?

¿El comando Invoke sigue usando mi PC como intermediario durante la robocopia?

¿Alguien puede mirar mi código y decirme por qué cuando uso el comando invoke, mi PC todavía se usa como intermediario?

Estoy intentando que la computadora de destino realice la transferencia directamente y no use mi PC como intermediario.

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

Respuesta1

Sí, estás ejecutando el proceso ROBOCOPYen esa computadora con $DestinationComputer, sí. Pero todavía estás ejecutando Invoke-Commanden tu máquina la cual espera stdouty stderr.

De los documentos

El cmdlet Invoke-Command ejecuta comandos en una computadora local o remota y devuelve todos los resultados de los comandos, incluidos los errores.

Entonces se espera este comportamiento con su 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

Lo que necesitas es pasar la InDisconnectedSessionopción. Lo que hace Invoke-Commandque se conecte, ejecute cmd y se desconecte rápidamente. Nuevamente de los documentos:

Para crear una sesión desconectada, use el parámetro InDisconnectedSession del cmdlet Invoke-Command. Crea una sesión, inicia el comando y se desconecta inmediatamente, antes de que el comando pueda devolver algún resultado.

Esto es lo que estás pidiendo.

Salud.

información relacionada