PowerShell try-catch isn't working

1

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

powershell
try-catch
asked on Stack Overflow Feb 9, 2018 by Paul

2 Answers

4

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
answered on Stack Overflow Feb 9, 2018 by gms0ulman
0

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"
}
answered on Stack Overflow Feb 11, 2018 by Esperento57

User contributions licensed under CC BY-SA 3.0