PowerShell tr​​y-catch不起作用

时间:2018-02-09 13:38:21

标签: powershell try-catch

我正在编写脚本并想检查是否存在任务名称。 它看起来像这样:

try {
    Get-ScheduledTaskInfo -TaskName "taskname"
}
catch {
    echo "doesn't exist"
}

当我运行代码时,它会向我显示错误消息而不是"不存在":

PS C:\Windows\system32> try {
    Get-ScheduledTaskInfo -TaskName "taskname"
}
catch {
    echo "doesn't exist"
}
Get-ScheduledTaskInfo : The system cannot find the file specified.
At line:2 char:5
+     Get-ScheduledTaskInfo -TaskName "taskname"
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (PS_ScheduledTask:Root/Microsoft/...S_ScheduledTask) [Get-ScheduledTaskInfo], CimException
    + FullyQualifiedErrorId : HRESULT 0x80070002,Get-ScheduledTaskInfo

有人知道为什么没有触发口号?

感谢您的帮助!

祝你好运

2 个答案:

答案 0 :(得分:4)

try/catch only catches terminating errors

  

使用Try,Catch和Finally块来响应或处理脚本中的终止错误

使用-ErrorAction Stop将非终止错误转换为终止错误:

Get-ScheduledTaskInfo -TaskName "taskname" -ErrorAction Stop

答案 1 :(得分:0)

您可以将全局变量参数$ ErrorActionPreference设置为stop(détail:here)。没有必要使用此方法将-Erroraction放在所有命令上;)

$ErrorActionPreference= "Stop"

try {
    Get-ScheduledTaskInfo -TaskName "taskname"
}
catch {
    echo "doesn't exist"
}