windows - run - Diferencia entre $? y $ LastExitCode en PowerShell
run powershell script (1)
En PowerShell, ¿cuál es la diferencia entre $?
y $LastExitCode
?
Leí acerca de las variables automáticas , y dijo:
$? Contains the execution status of the last operation. It contains TRUE if the last operation succeeded and FALSE if it failed.
$LastExitCode Contains the exit code of the last Windows-based program that was run.
En la definición de $?
no explica qué significa tener éxito y fallar.
Lo pregunto porque presumo que $?
es verdadero si y solo si $ LastExitCode es 0, pero encontré un sorprendente contraejemplo: $ LastExitCode = 0 pero $? = False en PowerShell. Redirigir stderr a stdout da NativeCommandError .
$LastExitCode
es el código de retorno de las aplicaciones nativas. $?
simplemente devuelve True
o False
dependiendo de si el último comando (cmdlet o nativo) salió sin error o no.
Para las fallas de los cmdlets generalmente significa una excepción, para las aplicaciones nativas es un código de salida distinto de cero:
PS> cmd /c "exit 5"
PS> $?
False
PS> cmd /c "exit 0"
PS> $?
True
La cancelación de un cmdlet con Ctrl + C también contará como falla; para aplicaciones nativas, depende del código de salida que establezcan.