I'm working on a script and want to check, if a taskname is existing. It looks so far like this:
try {
Get-ScheduledTaskInfo -TaskName "taskname"
}
catch {
echo "doesn't exist"
}
When I run the code, it prints me the error message and not "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
Does anybody has an idea why the catch phrase is not triggered?
Thanks for any help!
Best regards
try
/catch
only catches terminating errors:
Use Try, Catch, and Finally blocks to respond to or handle terminating errors in scripts
Use -ErrorAction Stop
to turn your non-terminating error into a terminating error:
Get-ScheduledTaskInfo -TaskName "taskname" -ErrorAction Stop
You can set global variable parameter $ErrorActionPreference to stop (détail : here). Not necessary to put -Erroraction on all commands with this method ;)
$ErrorActionPreference= "Stop"
try {
Get-ScheduledTaskInfo -TaskName "taskname"
}
catch {
echo "doesn't exist"
}
User contributions licensed under CC BY-SA 3.0