- Verschillen tussen beëindigende en niet-beëindigende fouten in PowerShell
- Geavanceerd gebruik van Try/Catch/Finally en variabelen zoals $Error en $ErrorActionPreference
- Hoe u foutmeldingen kunt beheren en aanpassen voor een betere diagnose
- Specifieke uitzonderingen opvangen met behulp van typen en Write-Error

PowerShell is een van de krachtigste en meest veelzijdige tools voor het automatiseren van taken in Windows- omgevingen . Net als elke scripttaal is het echter niet vrij van fouten en uitzonderingen . Inzicht in hoe deze fouten worden gerapporteerd, beheerd en afgehandeld, is essentieel voor het maken van robuuste, duidelijke en gemakkelijk te debuggen scripts.
In dit artikel duiken we diep in de wereld van fouten en uitzonderingen in PowerShell . Je leert niet alleen hoe je verschillende soorten fouten correct kunt identificeren, maar ook hoe je effectief kunt werken met structuren zoals Try/Catch/Finally , hoe je belangrijke variabelen zoals $Error of $ErrorActionPreference kunt gebruiken en hoe je geavanceerde technieken onder de knie krijgt, zoals het gooien en vangen van uitzonderingen met specifieke typen.
PowerShell-fouten: belangrijkste concepten
Bij het gebruik van PowerShell zijn fouten een inherent onderdeel van de dagelijkse scriptontwikkeling. Een fout is in principe elke onverwachte situatie die zich voordoet tijdens de uitvoering van code. Maar niet alle fouten zijn hetzelfde, en ze worden ook niet allemaal op dezelfde manier afgehandeld.
We kunnen fouten indelen in twee hoofdtypen : fatale fouten en niet - fatale fouten.
- Beëindigingsfouten: zijn kritieke fouten die onmiddellijk stoppen de uitvoering van het script of de cmdlet. Deze fouten kunnen worden vastgelegd met behulp van structuren
try/catch. - Niet-fatale fouten: stop het script niet. PowerShell rapporteert ze eenvoudigweg in het rood en slaat ze op in
$Erroren gaat verder met het uitvoeren van de rest van de code.
Als u bijvoorbeeld probeert een bestand te openen dat niet bestaat, zal PowerShell doorgaans een foutmelding geven, maar de verwerking voortzetten tenzij u anders aangeeft. Zie ons artikel over foutafhandeling in PowerShell voor meer informatie over geavanceerde foutafhandeling.
De variabele $Error en hoe deze te gebruiken
PowerShell houdt een foutengeschiedenis bij in de automatische variabele $Error, die fungeert als een lijst waarin alle fouten worden opgeslagen die tijdens de sessie zijn opgetreden.
Enkele sleutels met betrekking tot deze variabele:
$ErrorHet is altijd de meest recente fout.- Bevat objecten van het type ErrorRecord, niet alleen tekstberichten.
- Standaard worden maximaal 256 fouten opgeslagen, configureerbaar via
$MaximumErrorCount.
Gebruiksvoorbeeld:
# Ver el último error
$Error
# Limpiar la lista de errores
$Error.Clear()
Houd er rekening mee dat, aangezien dit een globale variabele is, fouten van de hele sessie hierin worden opgeslagen, niet alleen die van uw script. Het is daarom raadzaam om er niet te veel op te vertrouwen of om deze te wissen als u met nieuwe records gaat werken.
U kunt ook gebruiken Foutvariabele als alternatief, waarbij fouten in specifieke variabelen voor elke cmdlet worden vastgelegd, zonder dat dit de globale variabelen beïnvloedt $Error.
Parameters en voorkeuren voor foutverwerking
PowerShell biedt verschillende manieren om te bepalen hoe fouten moeten worden afgehandeld . De twee belangrijkste zijn:
- Parameter
-ErrorAction:U kunt dit gebruiken wanneer u een cmdlet aanroept om te bepalen hoe er moet worden gehandeld in geval van een fout. - De globale variabele
$ErrorActionPreference: Hiermee stelt u het algemene foutbeleid in voor de gehele omgeving of het script.
De waarden die u kunt gebruiken zijn:
- Doorgaan (standaard): Geeft de fout weer en gaat verder met de uitvoering.
- StilDoorgaan: Het toont de fout niet, maar slaat deze op in
$Error. - stop: Beschouw fouten als fataal en stop het scriptwaardoor ze kunnen worden vastgelegd met
try/catch. - Informeren: Vraag de gebruiker wat hij moet doen.
- negeren (sinds PowerShell 3.0): De fout wordt volledig genegeerd, niet opgeslagen en niet weergegeven.
Praktisch voorbeeld:
$ErrorActionPreference = "Stop" # Todos los errores serán tratados como fatales
Get-ChildItem "C:\RutaInexistente" -ErrorAction SilentlyContinue
Dit geeft ons ongelooflijke flexibiliteit bij het bepalen welke soorten fouten het waard zijn om te onderbreken en welke niet . Zie onze handleiding over het uitvoeren van scripts in PowerShell voor meer informatie over foutafhandeling in scripts.
Gebruik Try, Catch en Finally
Vanaf PowerShell 2.0 kunnen we try/catch/finally-blokken gebruiken om fouten op een gestructureerde manier af te handelen.
De syntaxis is als volgt:
Try {
# Código que podría fallar
}
Catch {
# Código para manejar esa excepción
}
Catch {
# Código para manejar errores genéricos
}
Finally {
# Código que siempre se ejecuta al final, falle o no
}
Het `try`-blok voert code uit die mogelijk een fout kan veroorzaken. Als er een fatale (afsluitende) fout optreedt, springt de code naar het bijbehorende `catch`-blok. Als er geen uitzonderingstype is gespecificeerd, wordt elke fout opgevangen.
Het Finally-blok is optioneel, maar handig wanneer je resources moet vrijmaken, verbindingen moet sluiten of moet opruimen.
Echt voorbeeld:
Try {
Get-Content "C:\ArchivoInexistente.txt" -ErrorAction Stop
}
Catch {
Write-Error "No se pudo abrir el archivo: $($_.Exception.Message)"
}
Finally {
Write-Output "Finalizado"
}
Binnen de Catch kunt u automatische variabelen gebruiken $_ o $PSItem om details van de fout te krijgen, zoals het bericht, het type, de stack trace, enz. Als u meer wilt weten over hoe u scripts kunt verbeteren en specifieke uitzonderingen kunt afhandelen, bekijk dan ons artikel over bugfixes in Windows 10.
...
Het correct afhandelen van fouten in PowerShell is een essentiële vaardigheid voor het maken van professionele scripts en het voorkomen dat cruciale taken worden stilgelegd door kleine problemen. Het beheersen van structuren zoals Try/Catch/Finally, het begrijpen van de automatische variabelen die PowerShell biedt en het leren werken met getypte uitzonderingen zijn fundamentele stappen naar een betere codekwaliteit.
Bovendien zijn er hulpmiddelen zoals Schrijffout, gecombineerd met parameters zoals -ErrorActiongeven ons volledige controle over wanneer en hoe fouten moeten worden weergegeven. Zo kunnen we ze tot in detail aanpassen en bijdragen aan een betere ervaring voor degenen die onze scripts uitvoeren.
Gepassioneerd schrijver over de wereld van bytes en technologie in het algemeen. Ik deel mijn kennis graag door te schrijven, en dat is wat ik in deze blog ga doen: je de meest interessante dingen laten zien over gadgets, software, hardware, technologische trends en meer. Mijn doel is om u te helpen op een eenvoudige en onderhoudende manier door de digitale wereld te navigeren.