PowerShell 中 $Lastexitcode 和 $? 变量有哪些用途?


Powershell 中的$LastExitCode 是表示最后执行的脚本或应用程序的退出代码/错误级别的数字,$? (美元钩子) 也表示最后一条命令的成功或失败。一般来说,两者表示相同的内容,但输出方式不同。第一个命令的输出以数字格式(0 和 1) 输出,而后一个命令的输出则以布尔(真或假)格式输出。

例如,

PS C:\WINDOWS\system32> $LASTEXITCODE
0
PS C:\WINDOWS\system32> $?
True

如你所见,输出中0 表示 $LastExitCode 命令的成功状态,而$?

现在,如果该命令无法成功运行,那么你会得到这两个命令的什么输出。查看下面的示例。

PS C:\WINDOWS\system32> ping anyhost.test
Ping request could not find host anyhost.test. Please check the name and try
again.
PS C:\WINDOWS\system32> $LASTEXITCODE
1
PS C:\WINDOWS\system32> $?
True

如果你在执行过程中终止了任何命令的输出,$lastexitcode 将会不同,但$? 命令的输出将为真,因为该命令存在并且它能够解析域名。

PS C:\WINDOWS\system32> ping google.com

Pinging google.com [172.217.166.174] with 32 bytes of data:
Reply from 172.217.166.174: bytes=32 time=30ms TTL=55

Ping statistics for 172.217.166.174:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 30ms, Maximum = 30ms, Average = 30ms
Control-C
PS C:\WINDOWS\system32> $LASTEXITCODE
-1073741510
PS C:\WINDOWS\system32> $?
True

更新于: 2020-05-27

超过 6K 次浏览

启动您的职业生涯

学习课程后获得认证

开始
广告