- Begrijp het verschil tussen beëindigende en niet-beëindigende fouten.
- Gebruik $Error en ErrorVariable om fouten op de juiste manier af te handelen.
- Gebruik Try/Catch/Finally-blokken om uitzonderingen met gedetailleerde controle af te handelen.
- Stel $ErrorActionPreference in op het gewenste foutgedrag.
PowerShell is een buitengewoon krachtig hulpmiddel voor het beheren, automatiseren en administreren van taken binnen het Windows - besturingssysteem en andere omgevingen. Net als bij elke programmeertaal is foutafhandeling echter essentieel om ervoor te zorgen dat scripts soepel en efficiënt werken.
In dit artikel gaan we dieper in op hoe u met fouten in PowerShell omgaat, van de basisbeginselen tot meer specifieke technieken. We bespreken verschillende methoden en strategieën die u kunt implementeren om de robuustheid van uw scripts te verbeteren en ervoor te zorgen dat fouten correct worden afgehandeld, zonder dat kritieke processen worden onderbroken.
Basisprincipes van foutverwerking in PowerShell
Om te begrijpen hoe je fouten in PowerShell moet afhandelen, is het belangrijk om onderscheid te maken tussen twee hoofdtypen fouten: fatale fouten en niet- fatale fouten.
- Niet-beëindigende fouten: Dit type fout onderbreekt de uitvoering van de script. Als PowerShell bijvoorbeeld een afzonderlijk bestand in een lijst niet kan verwerken, probeert het de volgende items te verwerken.
- Beëindigingsfouten: Deze fouten zorgen ervoor dat het script of de pijplijn onmiddellijk stopt. Deze problemen zijn ernstiger en vereisen onmiddellijke aandacht.
Het is van cruciaal belang dat u dit onderscheid begrijpt om de juiste hulpmiddelen voor foutverwerking in PowerShell te kunnen gebruiken.
Foutverwerking met $Error en ErrorVariable
Foutafhandeling in PowerShell is voornamelijk gebaseerd op het gebruik van automatische variabelen zoals $Error en de parameter ErrorVariable.
Fout: Het is een globale variabele die fungeert als een cumulatieve lijst met fouten tijdens de huidige sessie. Nieuwe fouten worden bovenaan de lijst toegevoegd en u kunt de meest recente openen door $Error[0]. Om alle opgebouwde fouten te wissen, gebruikt u $Error.Clear().
ErrorVariable: Met deze parameter kunt u fouten van een specifiek commando vastleggen in een aangepaste variabele. In tegenstelling tot $Error verzamelt ErrorVariable geen fouten van andere, eerder uitgevoerde commando's .
Bijvoorbeeld:
Get-ChildItem -Pad "C:\CarpetaInexistente" -Foutvariabele MiError
In dit geval worden de fouten die door de opdracht worden gegenereerd, opgeslagen in de variabele $MiError.
$ErrorActionPreference en ErrorAction gebruiken
Binnen PowerShell is er een automatische variabele genaamd $ErrorActionPreference die bepaalt hoe fouten worden afgehandeld. Deze variabele accepteert, net als de parameter ErrorAction , verschillende waarden:
- Doorgaan met: Dit is de standaardinstelling. Geef de fout weer in de console en ga door met het uitvoeren van het script.
- StilDoorgaan: Onderdruk de foutmelding en ga door met de uitvoering.
- Stop: Stopt het script wanneer er een fout optreedt.
- Informeer: Vraag de gebruiker wat hij moet doen als er een fout optreedt.
- Negeren: Negeer de fout volledig en registreer deze niet (beschikbaar sinds PowerShell 3.0).
Als u bijvoorbeeld wilt dat fouten worden behandeld als beëindigingsfouten, kunt u het volgende gebruiken:
$ErrorActionPreference = "Stoppen"
Probeer/Vang/Eindelijk Blokken
Try/Catch/Finally -blokken zijn een essentieel hulpmiddel voor het afhandelen van beëindigingsfouten in PowerShell. Met deze methode kunt u uitzonderingen op een gecontroleerde manier opvangen en verwerken.
De basisstructuur is:
Probeer { # Code die een fout kan veroorzaken } Catch [SpecificException] { # Een specifieke uitzondering afhandelen } Catch { # Een andere uitzondering afhandelen } Tot slot { # Code die altijd wordt uitgevoerd, ongeacht of er een fout is }
Het Finally- blok is handig voor het vrijgeven van resources of het uitvoeren van acties die moeten worden uitgevoerd, ongeacht of er een fout is opgetreden.

Nuttige eigenschappen van ErrorRecord
Wanneer er een fout optreedt, genereert PowerShell een object Foutrecord. Dit bevat gedetailleerde informatie over de fout en is toegankelijk via de variabelen $Error o $_ binnen een blok het worstelen.
Enkele belangrijke eigenschappen van ErrorRecord zijn:
- Doelobject: Het object dat de fout veroorzaakte.
- CategorieInfo: Categorie en korte beschrijving van de fout.
- uitzondering: Details van de gegenereerde uitzondering.
- Aanroepinfo: Specifieke informatie over de opdracht of het script waarin de fout is opgetreden.
Deze eigenschappen zijn ontzettend handig om de oorzaak van de fout te identificeren en corrigerende maatregelen te nemen.
Tips om foutbeheer te verbeteren
Wij delen enkele praktische aanbevelingen:
- Vermijd het negeren van fouten met StilDoorgaan of lege blokken in het worstelen.
- Als u externe programma's gebruikt, gebruik dan
$LASTEXITCODEom de exitcode te controleren en ervoor te zorgen dat deze voldoet aan de standaardconventies. - Voer tests uit om mogelijke fouten en hun gedrag te identificeren voordat u een script in productieomgevingen implementeert.
- Gebruik blokken Proberen/vangen om ernstige fouten te verwerken en ervoor te zorgen dat uw scripts robuust en voorspelbaar zijn.
Het begrijpen en effectief beheren van fouten in PowerShell is essentieel voor elke beheerder of ontwikkelaar. Met de uitgelegde hulpmiddelen en strategieën kunt u problemen proactiever aanpakken, uw processen optimaliseren en onderbrekingen tot een minimum beperken. Nu u de foutverwerking in PowerShell onder de knie hebt, is het tijd om het in de praktijk te brengen!