【问题标题】:Checking command execution status using if condition使用 if 条件检查命令执行状态
【发布时间】:2019-09-13 09:14:59
【问题描述】:

我在 Windows 10 上使用 Powershell 5.1 版。

我有下面的代码,我正在尝试检查执行状态,如果它有效,则输出为成功,否则失败。

当我运行代码时,代码可以运行,但输出失败。

下面是代码

if(Enable-LocalUser -Name TEST)
{
    Write-Host "Success"
}
else
{
    Write-Host "Failed"
}

如何正确确认命令执行?请帮忙

【问题讨论】:

  • Enable-LocalUser cmdlet 不返回任何内容。 [grin] 来自该 cmdlet 的帮助 >>> OUTPUTS - None - This cmdlet does not generate any output. $NULL 和 $NULL 强制测试为 @987654326 @ 就像零一样。 ///// 相反,运行 cmdlet 并使用 (Get-LocalUser -Name $env:USERNAME).Enabled 之类的东西来测试帐户是否已启用。

标签: powershell powershell-4.0 powershell-5.0


【解决方案1】:

你可以使用 $?检查最后一个powershell命令是否成功执行:

Enable-LocalUser -Name TEST
if($?)
{
    Write-Host "Success"
}
else
{
    Write-Host "Failed"
}

如果您想要异常详细信息,那么我建议您尝试 catch:

try{
    Enable-LocalUser -Name TEST2 -ErrorAction Stop
    #The below line will only run if enable-localuser did not generate any exception
    Write-Host "Success"
}
catch
{
    Write-Host "Failed,Due to :"
    $_.exception
}

$?包含上次操作的执行状态。如果最后一个操作成功则包含 TRUE,如果失败则包含 FALSE。(Excerpt from: Powershell Automatic Variables Documentation)

【讨论】:

  • 如果我需要捕获异常消息,我可以在try块中使用上面的代码并捕获异常吗?
  • @RajivIyer 我已经用提供异常详细信息的版本更新了答案
  • 非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-02
  • 1970-01-01
  • 2015-02-23
  • 2015-04-22
  • 2019-05-19
  • 2019-03-11
相关资源
最近更新 更多