GetA PSSessionConfiguration的ErrorActionPreference和ErrorAction SilentlyContinue

Kiq*_*net 23 error-handling powershell silent

我的情况:

$ErrorActionPreference = "Stop";
"1 - $ErrorActionPreference;"
Get-ChildItem NoSuchFile.txt -ErrorAction SilentlyContinue;
"2 - $ErrorActionPreference;"
Get-ChildItem NoSuchFile.txt -ErrorAction Stop;
"3 - $ErrorActionPreference;"
Run Code Online (Sandbox Code Playgroud)

输出:

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

现在,

$ErrorActionPreference = "Stop";
"1 - $ErrorActionPreference;"
(Get-PSSessionConfiguration -Name "MyShellUri" -ErrorAction SilentlyContinue)
"2 - $ErrorActionPreference;"
Run Code Online (Sandbox Code Playgroud)

输出:

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

为什么不能为Get-PSSessionConfiguration工作-ErrorAction SilentlyContinue?

更新:

现在,

$ErrorActionPreference = "Continue"
"1 - $ErrorActionPreference;"
(Get-PSSessionConfiguration -Name "MyShellUri" -ErrorAction SilentlyContinue)
"2 - $ErrorActionPreference;"
Run Code Online (Sandbox Code Playgroud)

输出:

1 - 继续;
2 - 继续;

现在,

$ErrorActionPreference = "SilentlyContinue"
"1 - $ErrorActionPreference;"
(Get-PSSessionConfiguration -Name "MyShellUri" -ErrorAction SilentlyContinue)
"2 - $ErrorActionPreference;"
Run Code Online (Sandbox Code Playgroud)

输出:

1 - SilentlyContinue;
2 - SilentlyContinue;

这个参考:

ErrorAction无处不在的参数可被用于沉默使用参数值的非终止错误SilentlyContinue,它可用于非终止错误转换为使用参数值终止错误Stop.但它无法帮助您忽略终止错误,在这种情况下,Stop-Transcript会引发终止错误.如果你想忽略,请使用try/catch,例如:

try { Stop-Transcript } catch {}
Run Code Online (Sandbox Code Playgroud)

Kiq*_*net 23

我的解决方案:

$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 
Run Code Online (Sandbox Code Playgroud)

或者使用try-catch

try { 

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

} 
catch {

}
Run Code Online (Sandbox Code Playgroud)

  • 我不知道`-ErrorAction Stop`仍然需要`catch`来获得异常:| (6认同)