Fortolkning af fejlhandlinger for Windows PowerShell-kommandoer

Fuldført

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.