A PowerShell hibái és kivételei: teljes útmutató a kezelésükhöz

Utolsó frissítés: 09/04/2025
Szerző: Izsák
  • A termináló és nem termináló hibák közötti különbségek PowerShell
  • A Try/Catch/Finally és a $Error és $ErrorActionPreference változók haladó szintű használata
  • A hibaüzenetek szabályozása és testreszabása a jobb diagnózis érdekében
  • Kivételek észlelése típusokkal és Write-Error használatával

Kivételek a PowerShell-kódban

PowerShell Ez az egyik leghatékonyabb és legsokoldalúbb eszköz a környezeti feladatok automatizálására Windows. Azonban, mint minden szkriptnyelv, ennek sincsenek hátrányai. hibák és kivételek. A hibák jelentésének, kezelésének és kezelésének megértése kritikus fontosságú a robusztus, világos és könnyen hibakereshető szkriptek létrehozásához.

Ebben a cikkben belemerülünk a világba Hibák és kivételek a PowerShellben. Megtanulja nemcsak helyesen azonosítani a különböző típusú hibákat, hanem azt is hatékonyan dolgozhat az olyan struktúrákkal, mint a Try/Catch/Finally, használjon olyan kulcsváltozókat, mint pl $Error o $ErrorActionPreference, és elsajátítsák az olyan fejlett technikákat, mint a dobás és a fogás kivételek bizonyos típusokkal.

PowerShell hibák: Kulcsfogalmak

A PowerShell használatakor a hibák a szkriptfejlesztés napi részét képezik. A hiba alapvetően minden váratlan állapot, amely a kód végrehajtása során fordul elő. De nem minden hiba egyforma, és nem is kezelik őket egyformán.

A hibákat két fő típusba sorolhatjuk:: befejező hibák és hibák, amelyek nem állítják le a forgatókönyv (nem megszűnő hibák).

  • Leállítási hibák: olyan kritikus hibák, amelyek azonnal hagyja abba a szkript vagy parancsmag végrehajtása. Ezek a hibák struktúrák segítségével rögzíthetők try/catch.
  • Nem végzetes hibák: ne állítsa le a szkriptet. A PowerShell egyszerűen piros színnel jelzi őket, és elmenti őket $Error és folytatja a kód többi részének végrehajtását.

Ha például egy nem létező fájlhoz próbál hozzáférni, a PowerShell általában jelenti a hibát, de folytassa a feldolgozást, hacsak másként nem határozza meg. A speciális hibakezeléssel kapcsolatos további információkért tekintse meg a következő cikkünket hibakezelés a PowerShellben.

  Pillanatképek létrehozása, kezelése és visszaállítása VMware-ben

A $Error változó és a használat módja

A PowerShell hibatörténetet vezet az automatikus változóban $Error, amely egy listaként működik, ahol a munkamenet során előforduló összes hiba tárolódik.

Néhány kulcs ehhez a változóhoz:

  • $Error Mindig ez a legújabb hiba.
  • ErrorRecord típusú objektumokat tartalmaz, nem csak szöveges üzeneteket.
  • Alapértelmezés szerint legfeljebb 256 hiba tárolhatókeresztül konfigurálható $MaximumErrorCount.

Használati példa:

# Ver el último error
$Error

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

Figyelembe kell vennie, hogy globális változó lévén, az egész munkamenet hibáit itt vannak tárolva, nem csak a szkriptedből. Ezért tanácsos nem támaszkodni rá túlzottan, vagy kiüríteni, ha új rekordokkal készül dolgozni.

Használhatja ErrorVariable alternatívaként, amely rögzíti a hibákat az egyes parancsmagok adott változóiban, anélkül, hogy befolyásolná a globálist $Error.

A hibakezelés paraméterei és beállításai

A PowerShell számos módot kínál erre döntse el, hogyan viselkedjenek a hibák. A két legrelevánsabb a következő:

  • Paraméter -ErrorAction: Használhatja parancsmagok hívásakor annak eldöntésére, hogyan kell eljárni hiba esetén.
  • A globális változó $ErrorActionPreference: Beállítja az általános hibaszabályzatot a teljes környezetre vagy szkriptre.

A használható értékek a következők:

  • folytatódik (alapértelmezett): Megjeleníti a hibát, és folytatja a végrehajtást.
  • Csendben Folytatás: Nem mutatja a hibát, hanem elmenti $Error.
  • megáll: A hibákat végzetesként kezelje és állítsa le a forgatókönyvet, amivel megörökíthetőek try/catch.
  • Érdeklődik: Kérdezze meg a felhasználót, hogy mit tegyen.
  • figyelmen kívül hagy (PowerShell 3.0 óta): Teljesen figyelmen kívül hagyja a hibát, nem menti és nem jeleníti meg.

Gyakorlati példa:

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

Ez brutális döntési rugalmasságot biztosít számunkra milyen hibákat érdemes megszakítani és melyeket nem. A szkriptek hibakezelésével kapcsolatos további részletekért tekintse meg a következő útmutatónkat szkriptek futtatása a PowerShellben.

A Try, Catch és a Végül használata

A PowerShell 2.0-tól kezdve használhatjuk try/catch/végre blokkol a hibák strukturált rögzítésére.

  Tippek annak a problémának a megoldására, hogy az iPhone nem küld fényképeket

A szintaxisa a következő:

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
}

A Try blokk olyan kódot hajt végre, amely potenciálisan hibát generálhat. Ha végzetes (végzetes) típus lép fel, ugrunk a Fogásba megfelelő. Ha nincs megadva kivételtípus, a rendszer minden hibát észlel.

Az Végül blokk Nem kötelező, de hasznos, ha erőforrásokat kell felszabadítania, kapcsolatokat kell bezárnia vagy meg kell tisztítania.

Valódi példa:

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

A Catch-en belül automatikus változókat használhat $_ o $PSItem hogy megtudja a hiba részleteit, mint például az üzenet, a típus, a verem nyomkövetése stb. Ha többet szeretne megtudni a szkriptek javításáról és az egyes kivételek kezeléséről, tekintse meg cikkünket hibajavítások a Windows 10 rendszerben.

...

A hibák helyes kezelése a PowerShellben az egyik kulcsfontosságú készség a professzionális szkriptek létrehozásához. és megakadályozza, hogy egy kritikus feladatot kisebb problémák leállítsanak. Az olyan struktúrák elsajátítása, mint a Try/Catch/Finally, a PowerShell által kínált automatikus változók megértése, valamint a gépelt kivételekkel való munka megtanulása alapvető lépések kódunk minőségének javításához.

Ezen kívül olyan eszközöket, mint pl Írási hiba, olyan paraméterekkel kombinálva, mint pl -ErrorAction, teljes ellenőrzést biztosít számunkra afelől, hogy mikor és hogyan jelenjenek meg a hibák, lehetővé téve számunkra, hogy részletesen testreszabhassuk őket, és hozzájáruljunk a szkriptjeink futtatóinak jobb élményéhez.

A powershell-3 hibáinak kezelése
Kapcsolódó cikk:
A PowerShell hibáinak hatékony kezelése

Szólj hozzá