ErrorActionPreference og ErrorAction SilentlyContinue for Get-PSSessionConfiguration

stemmer
18

Min sak:

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

Produksjon:

1 - Stopp;
2 - Stopp;
og vise en feil ...

Nå,

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

Produksjon:

1 - Stopp;
og vise en feil ...

Hvorfor fungerer ikke -ErrorAction SilentlyContinue) for Get-PSSessionConfiguration?

Oppdater:

Nå,

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

Produksjon:

1 - Fortsett;
2 - Fortsett;

Nå,

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

Produksjon:

1 - SilentlyContinue;
2 - SilentlyContinue;

Denne referansen :

Den ErrorActionallestedsnærværende parameteren kan brukes for å slå ikke-terminerende feil ved bruk av parameterverdien SilentlyContinueog den kan brukes til å konvertere ikke-terminerende feil for å terminere feil ved hjelp av parameterverdien Stop. Men det kan ikke hjelpe deg ignorere avslutning feil og i dette tilfellet Stop-transkripsjon er å kaste en avslutningsfeil. Hvis du vil ignorere, kan du bruke en prøve / fangst f.eks:

try { Stop-Transcript } catch {}
Publisert på 21/03/2013 klokken 07:51
kilden bruker
På andre språk...                            


3 svar

stemmer
1

Det ser ut som det er en "ubehandlet unntak", som betyr at cmdlet selv har ikke blitt kodet til å gjenkjenne og håndtere det unntak. Det blåste opp uten noen gang å få til å kjøre den interne feilhåndtering, slik at -ErrorAction innstillingen på cmdlet aldri kom inn i bildet.

Svarte 21/03/2013 kl. 08:04
kilden bruker

stemmer
19

En løsning for meg:

$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 

Eller bruk try-catch

try { 

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

} 
catch {

}
Svarte 21/03/2013 kl. 08:47
kilden bruker

stemmer
1

Tips # 2

Kan du ikke bruke den klassiske 2>omdirigering operatøren.

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

Jeg liker ikke feil så jeg unngå dem på alle kostnader.

Svarte 21/03/2013 kl. 23:44
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more