S těmito tipy zacházejte s chybami PowerShell jako s šéfem

  • Brian Curtis
  • 0
  • 4137
  • 201
reklama

Při prvním spuštění skriptování v PowerShell může být lákavé zabalit řadu příkazů Powershell Cmdlets, které zlepší vaše Windows Admin Skills Powershell Cmdlets, které zlepší vaše Windows Admin Skills Powershell je nástroj pro příkazový řádek a skriptovací jazyk se stejnými částmi. To vám dává možnost automatizovat počítač pomocí stejných příkazů, které používáte pro jeho správu. . Pokud však váš skript selže, nebudete vědět, kde začít s řešením problémů. Chcete-li si ušetřit čas, který byste chtěli uhodnout, proč se skript nezdařil, měli byste použít zpracování chyb.

Zpracování chyb PowerShell má čtyři části: parametr Error Action, bloky Try / Catch, parametr Error Variable a protokolování.

Snadné řešení chyb PowerShell

Poprvé, když chcete řešit chyby, je to, když něco zastaví skript v jeho stopách. Pokud selhání neovlivní vaše pozdější kroky, může být nejlepší jej přeskočit a jít dál.

Na druhé straně není vždy jasné, kdy daná rutina vyvolá chybu při ukončení. Některé rutiny cmdlets vrátí chybu, ale nezastaví váš skript. Pak můžete skončit čekáním na dokončení skriptu, zatímco to vydá nesmysly.

To je místo, kde -ErrorAction Parametr přichází. Slouží k vynucení rutiny cmdlet k řešení chyby tak, jak chcete. Pokud upravujete existující skript Zvyšte svou produktivitu pomocí skriptů Windows PowerShell Zvyšte svou produktivitu pomocí skriptů Windows PowerShell Co kdybyste mohli přenést produktivitu Linuxu do Windows? Většina linuxových distribucí je dodávána s výkonným Bash shellem. PowerShell je stejně výkonný terminál pro Windows. , připojíte ji na konec řádku cmdlet.

Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction Stop

Samozřejmě, pokud používáte Get-ChildItem cmdlet sám o sobě, chyba pro vás moc neznamená. Pokud však chcete s daty něco dělat, bylo by dobré skript zastavit, takže víte, že vyhledávání selhalo a proč. Alternativně, pokud provádíte více vyhledávání, změňte parametr z Stop na Ticho Pokračovat, takže skript pokračuje, pokud vyhledávání selže. Pokud chcete vidět, o jakou chybu jde, můžete použít Pokračovat jako parametr.

Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction SilentlyContinue

Pokud byste raději měli možnost řídit, co se stane při každém spuštění skriptu, můžete jej změnit Poptávka. Když váš rutina zasáhne zádrhel, nabízí možnosti: Ano, Ano pro všechny, Příkaz zastavit, Pozastavit nebo Nápověda.

Tato možnost je o něco flexibilnější, ale chyby znamenají, že váš skript čeká na váš vstup. To nemusí být něco, co chcete, když máte přes noc dlouhý proces.

Chyba při zpracování programovací cesty

ErrorAction parametr řeší vaše chyby nekomplikovaným způsobem. Nicméně, pokud hledáte trochu větší kontrolu nad chybami, PowerShell vás stále kryje. Použitím Zkus chytit, Nyní můžeme skript rozvětvit, když cmdlets vrátí chybu.

Jak název napovídá, Zkus chytit se skládá ze dvou částí. (Technicky existuje třetina, ale k tomu se dostaneme za minutu.) První je Snaž se sekce. V této sekci se chystáte spustit svůj normální kód. Stále budete používat -ErrorAction parametr, ale lze jej nastavit pouze jako Stop. Tento příznak zajišťuje, že váš cmdlet spustí Úlovek-i když nemá ukončovací chybu.

Vyzkoušejte Get-Process "Cortana" -ErrorAction Stop

Pokud se vyhledávání nezdaří, zkuste také zabránit běhu dalších rutin. V tomto případě, pokud jste odesílali Získat proces výsledky do Zastavení procesu, neúspěšné vyhledávání zabrání spuštění druhé rutiny cmdlet.

Takže teď, když jste vytvořili zkušební blok rutin, co chcete dělat, když selže? Za použití Úlovek napůl, budete to definovat.

Chyťte Write-Host "Process Not Found"

Stejně jako u ErrorAction parametr, když děláte něco složitější 3 Funkce Clever PowerShell po upgradu na Windows 10 3 Funkce Clever PowerShell Po upgradu na Windows 10 Windows 10 nám přináší nový PowerShell, v podstatě příkazový řádek na steroidech. Tento článek ukazuje, jak s PowerShellem udělat jinak nemožné. A je to jednodušší, než si myslíte! Úlovek bude užitečné pro více než jen selhání prostého jazyka. (Ve výše uvedeném příkladu je selhání vynuceno použitím názvu aplikace, nikoli názvu procesu.) Ujistěte se tedy, že hrajete s Snaž se blok pro vytvoření požadovaného vyhledávání / akce. Můžete použít Úlovek blokování skriptu, aby vám poslal e-mail, pokud selže.

Třetí část se hodí, pokud chcete něco běžet bez ohledu na to, zda vaše cmdlet uspěje nebo ne. K tomu můžete použít Konečně blok. Přidáte to po vyzkoušení a chycení a protokolování po skončení části skriptu.

Proměnná chyba a protokolování

Skript nyní řídí, jak zpracovává chyby a jak na ně reaguje. Můžete jej použít jako naplánovaný úkol, nebo alespoň spustit, když nejste u svého stolu. 5 důvodů, proč byste měli používat PowerShell místo dávkového skriptování 5 důvodů, proč byste měli používat PowerShell místo dávkového skriptování PowerShell je to, co byste získali, pokud překročil příkazový řádek s dávkovým skriptováním, hodil nějaké další funkce a všechno to nakopal do několika zářezů. Zde je několik důvodů, proč byste to měli vyzkoušet. . Jak však můžete vyšetřit selhaný skript? S -ErrorVariable parametr chyby vašeho cmdletu zapisují do vlastní proměnné. Toto je alternativa k systému $ Chyba proměnná, která obsahuje všechny chyby z aktuální relace.

Vaše cmdlet musí být trochu delší. Nejprve definujte proměnnou, něco jako $ SearchError uděláme příklad. Když zavoláte SearchError v ErrorVariable parmeter, nepoužíváte znak dolaru. I když voláte proměnnou, kterou jste vytvořili, kvůli jejímu fungování ji nazýváte bez znaku dolaru. Pak to přidejte na konec řádku.

Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction Pokračovat -ErrorVariable SearchError

Pokud přidáte + před název proměnné můžete do proměnné přidat, nikoli ji nahradit přímo. Tím získáte stejné chování jako globální proměnná chyby. Místo toho můžete použít tento výstup a Zkus chytit napsat vlastní výstup a časově ho označit.

Aby to fungovalo, vytvořte textový soubor ihned po nastavení proměnné chyby. Udělejte to pomocí Nový předmět cmdlet. Možná budete chtít použít Poptávka možnost pro ErrorAction parametr. To vám umožní přidat do existujícího protokolu, když Nový předmět cmdlet selže.

$ SearchLog = New-Item "~ \ SearchLog.txt" -type file -ErrorAction Poptávka

Nyní, když stavíte svůj Zkus chytit blok, můžete použít Úlovek pro přihlášení do textového souboru. Používáš Získejte datum vytvořit časové razítko. Formátování může být složité, proto jej nezapomeňte zkopírovat z příkladu.

Zkuste Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction Stop -ErrorVariable SearchError Catch Add-Content -Path $ SearchLog -Value "$ (Get-Date -Format dd-MM-yy- hh_mm_ss) Nebyly nalezeny vrácené soubory: $ SearchError "

Opakujte, že podle potřeby pro všechny vaše cmdlety 15 Rozšířené úlohy, které zvládne PowerShell v systému Windows 10 15 Rozšířené úlohy, které dokáže PowerShell zvládnout v systému Windows 10 PowerShell je podobný příkazovému řádku, ale lepší. Je to mocný nástroj pro správu systému. Zkompilovali jsme 15 úkolů, z nichž některé jsou jednoduché, některé složité a těží z magie PowerShell. , a nyní máte pěkný protokol o všech chybách. Pokud chcete sledovat věci, které běží úspěšně, můžete přidat podobné Přidat obsah na konci roku 2007 Snaž se blok. Toto protokolování se spustí, pouze pokud je váš Snaž se cmdlet uspěje. Poté můžete protokolovat své chyby a úspěchy pomocí časových razítek. Protokolování vám nyní umožní vědět vše, co váš skript udělal, úspěch nebo selhání.

Síla kódu

Použití prostředí PowerShell na příkazovém řádku Příkazový řádek vs. Windows PowerShell: Jaký je rozdíl? Příkazový řádek vs. Windows PowerShell: Jaký je rozdíl? Uživatelé Windows se mohou obejít bez použití příkazového řádku nebo PowerShell. Ale s Windows 10 a novými funkcemi za rohem je možná čas, který jsme se naučili. je výkonný způsob správy systému. Tyto příkazy můžete spojit tak, aby umožňovaly výkonnou automatizaci. Správné zacházení s chybami je nezbytné, aby se zajistilo, že vaše skripty budou dělat pouze to, co chcete. Při protokolování všeho můžete ušetřit čas při odstraňování problémů.

Existuje čas, který při zpracování chyb uložil slaninu? Existuje skript PowerShell, který by mohl použít lepší zpracování chyb? Jaký je váš další projekt PowerShell? Dejte nám vědět v komentářích.




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.