$之间的区别? 和PowerShell中的$ LastExitCode
在PowerShell中, $?
区别$?
和$LastExitCode
?
我读了关于自动variables ,它说:
$? 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.
在$?
的定义中$?
它并没有解释什么是成功和失败的意思。
我问,因为我推测$?
是当且仅当$ LastExitCode是0,但我发现一个令人惊讶的反例: $ LastExitCode = 0,但在PowerShell中$?= False。 将stderrredirect到stdout会导致NativeCommandError 。
$LastExitCode
是本地应用程序的返回码。 $?
只是返回True
或False
取决于最后一个命令(cmdlet或本地)是否退出没有错误。
对于cmdlet失败通常意味着一个exception,对于本机应用程序来说,它是一个非零的退出代码:
PS> cmd /c "exit 5" PS> $? False PS> cmd /c "exit 0" PS> $? True
使用Ctrl + C取消cmdlet也会被视为失败; 对于本机应用程序,它取决于他们设置的退出代码。