
¿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 ROBOCOPY
en esa computadora con $DestinationComputer
, sí. Pero todavía estás ejecutando Invoke-Command
en tu máquina la cual espera stdout
y 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 InDisconnectedSession
opción. Lo que hace Invoke-Command
que 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.