In PowerShell, what is the difference between $?
and $LastExitCode
?
I read about automatic variables , and it said:
$? 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.
In the definition of $?
it doesn't explain what succeed and fail mean.
I ask because I presumed that $?
is True if and only if $LastExitCode is 0, but I found a surprising counter-example: $LastExitCode=0 but $?=False in PowerShell. Redirecting stderr to stdout gives NativeCommandError .
$LastExitCode
is the return code of native applications. $?
just returns True
or False
depending on whether the last command (cmdlet or native) exited without error or not.
For cmdlets failure usually means an exception, for native applications it's a non-zero exit code:
PS> cmd /c "exit 5"
PS> $?
False
PS> cmd /c "exit 0"
PS> $?
True
Cancelling a cmdlet with Ctrl + C will also count as failure; for native applications it depends on what exit code they set.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.