在Powershell中$?
是什么意思?
编辑:TechNet answers的同义反复,没有解释什么是 '成功' 或 '失败' 的意思。
$?
包含上次操作的执行状态。如果上次操作成功,则它包含TRUE,如果失败,则包含FALSE。
我推定$?会简单地测试$ LastExitCode是否为0,但我发现counter example其中$?是False,但$ LastExitCode是True。
在Powershell中$?
是什么意思?
编辑:TechNet answers的同义反复,没有解释什么是 '成功' 或 '失败' 的意思。
$?
包含上次操作的执行状态。如果上次操作成功,则它包含TRUE,如果失败,则包含FALSE。
我推定$?会简单地测试$ LastExitCode是否为0,但我发现counter example其中$?是False,但$ LastExitCode是True。
如果最后一条命令成功则返回true
否则返回false
。
但是,有一些警告和非显而易见的行为(例如,“成功”的含义是什么)。我强烈建议您阅读this article进行更全面的治疗。
例如,考虑调用Get-ChildItem。
PS> Get-ChildItem
PS> $?
True
$?将调用Get-ChildItem成功返回True
。
但是,如果您在不存在的目录上调用Get-ChildItem,它将返回一个错误。
PS> Get-ChildItem \Some\Directory\Which\Does\Not\Exist
Get-ChildItem : Cannot find path 'C:\Some\Directory\Which\Does\Not\Exist' because it does not exist.
PS> $?
False
$?将返回False
,因为上一个命令不成功。
$?
如果最后一条命令导致错误,将包含$false
。如果没有,它将包含$true
。在PowerShell v1天内,这是进行错误处理的常用方式。例如,在一个脚本,如果你想检查一个文件是否存在,然后打印自定义消息,如果没有,你可以这样做:
Get-Item -Path john -ErrorAction silentlycontinue;
if(-not $?)
{
'could not find file.';
exit
}`
现在人们在做什么呢? – mikemaccana
@mikemaccana,在这里的同一条船上....我会想想try/catch语句。 – Johnrad
什么命令? –
@MattHickford命令是使用Powershell执行的。例如,它可以是cmdlet或可执行文件。看看我已经添加的例子。 –
'成功'是什么意思?你认为这意味着'如果且仅当$ LastExitCode是0'? –