Fortolkning af fejlhandlinger for Windows PowerShell-kommandoer
PowerShell-fejl er enten afsluttende eller ikke-terminerende. En afsluttende fejl stopper kommandoen straks—PowerShell kan ikke gendanne og fortsætte. Ved en ikke-terminerende fejl fortsætter scriptet eller pipelinen med at køre. Ikke-terminerende fejl er langt mere almindelige.
Eksempel:
Get-CimInstance -ClassName Win32_BIOS -ComputerName LON-SVR1,LON-DC1
Hvis LON-SVR1 ikke er tilgængelig på netværket, genererer Get-CimInstance en fejl. Kommandoen fortsætter dog med den næste computer, LON-DC1. Den adfærd gør fejlen ikke-terminerende.
$ErrorActionPreference
$ErrorActionPreference er en indbygget global variabel. Når en ikke-terminerende fejl opstår, tjekker PowerShell denne variabel for at afgøre, hvordan den skal fortsætte. Variablen accepterer seks værdier:
- Fortsæt er standard. PowerShell viser en fejlmeddelelse og fortsætter med at køre.
-
SilentlyContinue undertrykker fejlmeddelelsen, men fortsætter med at køre. Fejlen registreres stadig i
$Error. -
Ignore undertrykker fejlmeddelelsen og registrerer ikke fejlen i
$Error. Brug kun denne værdi, når du er sikker på, at fejlen er forventet og irrelevant. - Forespørgsel viser en prompt, der spørger brugeren, hvad der skal gøres.
- Stop behandler fejlen som afsluttende og stopper med at køre.
- Break går ind i PowerShell-debuggeren, når en fejl opstår, hvilket muliggør interaktiv undersøgelse af scriptets tilstand ved fejlpunktet.
For at sætte $ErrorActionPreference:
$ErrorActionPreference = 'Inquire'
Seddel
Vær selektiv med hensyn til brug af SilentlyFortsæt til $ErrorActionPreference. Denne indstilling kan virke mere brugervenlig for dit script, men det gør fejlfinding meget sværere.
For at fange og håndtere fejl i dit script skal kommandoerne bruge Stop-handlingen . Du kan kun diffusere og administrere afslutningsfejl.
-Parameteren ErrorAction
Alle PowerShell-kommandoer har parameteren -ErrorAction (alias: -EA). Den accepterer de samme værdier som $ErrorActionPreference og overskriver dem for den kommando. Hvis du forventer en fejl, så sæt -ErrorAction Stop på den kommando. Denne parameter lader dig fange og håndtere fejl der, mens alle andre kommandoer fortsætter med at bruge $ErrorActionPreference. Eksempel:
Get-CimInstance -ClassName Win32_BIOS -ComputerName LON-SVR1,LON-DC1 -ErrorAction Stop
Brug $ErrorActionPreference kun, når du forventer en fejl uden for en PowerShell-kommando – for eksempel når du kalder en metode:
Get-Process –Name Notepad | ForEach-Object { $PSItem.Kill() }
Kill()-metoden kan give en fejl. Fordi det ikke er en PowerShell-kommando, har den ikke parameteren -ErrorAction . I stedet sætter $ErrorActionPreference du til Stop før du kører metoden, og nulstiller den til Continue bagefter.