- 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
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.
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.
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.
Szenvedélyes író a bájtok és általában a technológia világáról. Szeretem megosztani tudásomat írásban, és ezt fogom tenni ebben a blogban, megmutatom a legérdekesebb dolgokat a kütyükről, szoftverekről, hardverekről, technológiai trendekről stb. Célom, hogy egyszerű és szórakoztató módon segítsek eligazodni a digitális világban.