Fel och undantag i PowerShell: En komplett guide för att hantera dem

Senaste uppdateringen: 09/04/2025
Författare: Isaac
  • Skillnader mellan avslutande och icke-avslutande fel i Power
  • Avancerad användning av Try/Catch/Finally och variabler som $Error och $ErrorActionPreference
  • Hur man kontrollerar och anpassar felmeddelanden för bättre diagnos
  • Fånga specifika undantag med hjälp av typer och använda Write-Error

Undantag i PowerShell-kod

PowerShell är ett av de mest kraftfulla och mångsidiga verktygen för att automatisera uppgifter i Windows- miljöer . Men precis som alla skriptspråk är det inte utan fel och undantag . Att förstå hur dessa fel rapporteras, hanteras och hanteras är avgörande för att skapa robusta, tydliga och lättfelsökta skript.

I den här artikeln dyker vi huvudstupa ner i felens och undantagens värld i PowerShell . Du lär dig inte bara hur du korrekt identifierar olika typer av fel, utan också hur du arbetar effektivt med strukturer som Try/Catch/Finally , använder nyckelvariabler som $Error eller $ErrorActionPreference , och bemästrar avancerade tekniker som att kasta och fånga undantag med specifika typer.

PowerShell-fel: Nyckelbegrepp

När man använder PowerShell är fel en del av den dagliga skriptutvecklingen. Ett fel är i princip alla oväntade tillstånd som uppstår under kodkörning. Men alla fel är inte likadana, och de hanteras inte heller på samma sätt.

Vi kan klassificera fel i två huvudtyper : avslutande fel och icke - avslutande fel.

  • Uppsägningsfel: är kritiska fel som sluta omedelbart körningen av skriptet eller cmdleten. Dessa fel kan fångas med hjälp av strukturer try/catch.
  • Icke-fatala fel: stoppa inte skriptet. PowerShell rapporterar dem helt enkelt i rött, sparar dem i $Error och fortsätter att köra resten av koden.

Om du till exempel försöker komma åt en fil som inte finns, rapporterar PowerShell vanligtvis felet men fortsätter bearbetningen om du inte anger något annat. För mer information om avancerad felhantering, se vår artikel om felhantering i PowerShell.

  Sättet att ställa in iCloud Drive på Home Windows 10

Variabeln $Error och hur man använder den

PowerShell håller en felhistorik i den automatiska variabeln $Error, som fungerar som en lista där alla fel som uppstod under sessionen lagras.

Några nycklar om denna variabel:

  • $Error Det är alltid det senaste misstaget.
  • Innehåller objekt av typen ErrorRecord, inte bara textmeddelanden.
  • Maximalt 256 fel lagrade som standard, konfigurerbar genom $MaximumErrorCount.

Användningsexempel:

# Ver el último error
$Error

# Limpiar la lista de errores
$Error.Clear()

Tänk på att eftersom det är en global variabel lagras fel från hela sessionen här, inte bara de från ditt skript. Därför är det lämpligt att inte förlita sig för mycket på den eller att rensa den om du ska arbeta med nya poster.

Du kan också använda ErrorVariable som ett alternativ, som fångar upp fel i specifika variabler för varje cmdlet, utan att påverka den globala $Error.

Parametrar och inställningar för felhantering

PowerShell erbjuder flera sätt att bestämma hur fel ska bete sig . De två mest relevanta är:

  • Parameter -ErrorAction: Du kan använda den när du anropar en cmdlet för att bestämma hur du ska agera vid ett fel.
  • Den globala variabeln $ErrorActionPreference: Ställer in den allmänna felpolicyn för hela miljön eller skriptet.

Värdena du kan använda är:

  • Fortsätta (standard): Visar felet och fortsätter körningen.
  • Tyst Fortsätt: Det visar inte felet men sparar det i $Error.
  • Sluta: Behandla fel som ödesdigra och stoppa manuset, så att de kan fångas med try/catch.
  • Fråga oss: Fråga användaren vad han ska göra.
  • Ignorera (sedan PowerShell 3.0): ignorerar felet helt, varken sparar eller visar det.

Praktiskt exempel:

$ErrorActionPreference = "Stop"  # Todos los errores serán tratados como fatales
Get-ChildItem "C:\RutaInexistente" -ErrorAction SilentlyContinue

Detta ger oss otrolig flexibilitet i att avgöra vilka typer av fel som är värda att avbryta och vilka som inte är det . För mer information om felhantering i skript, se vår guide om hur du kör skript i PowerShell.

Använda Try, Catch och Finally

Från och med PowerShell 2.0 kan vi använda try/catch/finally-block för att fånga fel på ett strukturerat sätt.

  Kan inte ta bort fotoalbum på iPhone: Lär dig hur man reparerar?

Dess syntax är följande:

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
}

Try-blocket exekverar kod som potentiellt kan generera ett fel. Om ett allvarligt (avslutande) fel inträffar hoppar koden till motsvarande Catch-block. Om ingen undantagstyp anges fångas eventuella fel upp.

Blocket Slutligen är valfritt men användbart när du behöver frigöra resurser, stänga anslutningar eller rensa upp.

Verkligt exempel:

Try {
  Get-Content "C:\ArchivoInexistente.txt" -ErrorAction Stop
}
Catch {
  Write-Error "No se pudo abrir el archivo: $($_.Exception.Message)"
}
Finally {
  Write-Output "Finalizado"
}

Inom Catch kan du använda automatiska variabler $_ o $PSItem för att få information om felet, såsom dess meddelande, typ, stackspårning, etc. Om du vill lära dig mer om hur du förbättrar skript och hanterar specifika undantag, kolla in vår artikel om buggfixar i Windows 10.

.

Att hantera fel korrekt i PowerShell är en viktig färdighet för att skapa professionella skript och förhindra att kritiska uppgifter stoppas av mindre problem. Att behärska strukturer som Try/Catch/Finally, förstå de automatiska variablerna som PowerShell erbjuder och lära sig att arbeta med typade undantag är grundläggande steg mot att förbättra kodkvaliteten.

Dessutom verktyg som t.ex Skriv-fel, kombinerat med parametrar som t.ex -ErrorAction, ger oss fullständig kontroll över när och hur fel ska visas, så att vi kan anpassa dem i detalj och bidra till en bättre upplevelse för dem som kör våra skript.

Hur man hanterar fel i powershell-3
Relaterad artikel:
Hur man hanterar fel i PowerShell effektivt