默认情况下,环境的$ ErrorActionPreference设置为“继续”。当cmdlet抛出错误时,脚本将继续。
我想要'停止'并抓住我的try-catch块。在我的脚本中,我能够设置:
$ErrorActionPreference = "Stop"
如果我将值打印到屏幕上,我可以看到它现在设置为“停止”而不是“继续”。但是,当我的cmdlet抛出错误时,它仍然继续。它忽略了我的错误操作首选项,并根据默认值进行操作。
任何人都可以对此有所了解吗?
答案 0 :(得分:3)
所以,我不确定你在做什么,但对我来说它运作正常:
Write-Output "PowerShell Timer trigger function executed at:$(get-date)";
try {
Get-Process 'hh' -erroraction stop
}
catch{
Write-Output "caught"
exit
}
Write-Output "never reached"
或者像这样:
Write-Output "PowerShell Timer trigger function executed at:$(get-date)";
$global:erroractionpreference = 1
try {
Get-Process 'hh'
}
catch{
Write-Output "caught"
exit
}
Write-Output "i do not work"
两者都打印相同(时间戳,ofc除外):
2017-02-02T19:56:35.916执行PowerShell定时器触发功能 时间:02/02/2017 19:56:35
2017-02-02T19:56:35.933抓住了
2017-02-02T19:56:35.933功能完成(成功, ID = 6097f1bf-06e1-4a1d-ba27-392607d9b33c)