27

我的情况:

$ErrorActionPreference = "Stop";
"1 - $ErrorActionPreference;"
Get-ChildItem NoSuchFile.txt -ErrorAction SilentlyContinue;
"2 - $ErrorActionPreference;"
Get-ChildItem NoSuchFile.txt -ErrorAction Stop;
"3 - $ErrorActionPreference;"

输出:

1 - 停止;
2 - 停止;
并显示错误...

现在,

$ErrorActionPreference = "Stop";
"1 - $ErrorActionPreference;"
(Get-PSSessionConfiguration -Name "MyShellUri" -ErrorAction SilentlyContinue)
"2 - $ErrorActionPreference;"

输出:

1 - 停止;
并显示错误...

为什么 Get-PSSessionConfiguration 不起作用 -ErrorAction SilentlyContinue) ?

更新:

现在,

$ErrorActionPreference = "Continue"
"1 - $ErrorActionPreference;"
(Get-PSSessionConfiguration -Name "MyShellUri" -ErrorAction SilentlyContinue)
"2 - $ErrorActionPreference;"

输出:

1 - 继续;
2 - 继续;

现在,

$ErrorActionPreference = "SilentlyContinue"
"1 - $ErrorActionPreference;"
(Get-PSSessionConfiguration -Name "MyShellUri" -ErrorAction SilentlyContinue)
"2 - $ErrorActionPreference;"

输出:

1 - 静默继续;
2 - 静默继续;

这个参考

ErrorActionubiquitous 参数可用于使用参数 value 使非终止错误静音,并可用于使用参数 value将SilentlyContinue非终止错误转换为终止错误Stop。但是,它不能帮助您忽略终止错误,在这种情况下,Stop-Transcript 会引发终止错误。如果您想忽略,请使用 try/catch 例如:

try { Stop-Transcript } catch {}
4

3 回答 3

24

对我来说一个解决方案:

$old_ErrorActionPreference = $ErrorActionPreference
$ErrorActionPreference = 'SilentlyContinue'
if((Get-PSSessionConfiguration -Name "MyShellUri" -ErrorAction SilentlyContinue) -eq $null) {
   WriteTraceForTrans "The session configuration MyShellUri is already unregistered."
}
else {        
   #Unregister-PSSessionConfiguration -Name "MyShellUri" -Force -ErrorAction Ignore
}
$ErrorActionPreference = $old_ErrorActionPreference 

或者使用 try-catch

try { 

(Get-PSSessionConfiguration -Name "MyShellUri" -ErrorAction SilentlyContinue)

} 
catch {

}
于 2013-03-21T11:47:45.307 回答
2

看起来这是一个“未处理的异常”,这意味着 cmdlet 本身没有被编码来识别和处理该异常。它在没有运行它的内部错误处理的情况下爆炸了,因此 cmdlet 上的 -ErrorAction 设置从未发挥作用。

于 2013-03-21T11:04:59.403 回答
1

提示 #2

你不能使用经典的2>重定向运算符。

(Get-PSSessionConfiguration -Name "MyShellUri" -ErrorAction SilentlyContinue) 2> $NULL
if(!$?){
   'foo'
}

我不喜欢错误,所以我不惜一切代价避免它们。

于 2013-03-22T02:44:01.403 回答