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 - 黙って続行;

この参照:

ユビキタス パラメータはErrorAction、パラメータ値を使用して非終了エラーを沈黙させるために使用でき、パラメータ値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

これは「未処理の例外」のようです。つまり、コマンドレット自体がその例外を認識して処理するようにコーディングされていません。内部エラー処理を実行せずに爆発したため、コマンドレットの-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 に答える