script run open from ejecutar desde commands comandos batch windows powershell command-line

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.