我正在编写脚本并想检查是否存在任务名称。 它看起来像这样:
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
有人知道为什么没有触发口号?
感谢您的帮助!
祝你好运
答案 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"
}