Creo que si ejecuta un comando de esa manera en otro servidor no hay manera de que pueda obtener el código de retorno de su script allí. Esto se debe a que Invoke-Command
simplemente ejecuta un comando en la máquina remota, probablemente dentro de una sola sesión temporal y no puede conectarse a esa sesión nuevamente.
Lo que puede hacer, sin embargo, es crear una sesión en la computadora remota e invocar su secuencia de comandos dentro de esa sesión. Luego puede verificar nuevamente el valor de retorno en esa sesión. Así que algo similar a:
$s = New-PSSession -ComputerName <server_name>
Invoke-Command -Session $s -ScriptBlock { ... }
Invoke-Command -Session $s -ScriptBlock { $? }
podría funcionar. De esta forma tendrá acceso al mismo estado y variables que el primer Invoke-Command
en la máquina remota.
También es poco probable que Invoke-Command
pase por el valor de retorno del comando remoto. ¿Cómo se daría cuenta entonces que el propio Invoke-Command
falló?
ETA: Bien, te he leído mal con respecto al "código de retorno". Asumía que querías decir $?
. De todos modos, según la documentación puede ejecutar una secuencia de comandos en un equipo remoto de la siguiente manera:
para ejecutar un script local en equipos remotos, utilice el parámetro de Invoke-Command
FilePath
.
Por ejemplo, el siguiente comando ejecuta el script Sample.ps1
en los equipos S1
y S2
:
invoke-command -computername S1, S2 -filepath C:\Test\Sample.ps1
Los resultados del script se devuelven al equipo local. Usted no necesita copiar ningún archivo.
cosa rara en Invoke-comando cuando se ejecuta en el contexto Jenkins, el código de retorno como esto $ returnCode = Invoke-Command -file somescript.ps1 volvería cada de somescript.ps1. si se ejecutó dentro de una ventana de comandos, el valor devuelto se devuelve correctamente. Alguien tiene alguna idea? – koo9
@ koo9: '$ returnCode' recibirá _pipeline output_ del archivo de script. No es un código de salida. – Joey
supuestamente, pero al ejecutar el script en el trabajo de Jenkins, de alguna manera $ returncode captura todos los resultados del script ps1 – koo9