
Michael Fisher
0
808
183
Kada prvi put pokrenete skriptiranje u programu PowerShell, može biti primamljivo spakirati niz naredbi Powershell Cmdlets koji će poboljšati vaše Windows Admin Skills Powershell Cmdlets koji će poboljšati vaše Windows Admin Skills Powershell jednake dijelove alat naredbenog retka i skriptni jezik. Pruža vam mogućnost automatizacije vašeg računala pomoću istih naredbi koje koristite za njegovo upravljanje. , No ako vam skripta ne uspije, nećete znati gdje započeti rješavanje problema. Da biste se spasili od gubitka vremena pokušavajući pogoditi zašto vam skripta nije uspjela, koristite rukovanje pogreškama.
Postoje četiri dijela za upravljanje pogreškama u PowerShell-u: parametar Error Action, Try / Catch blokovi, parametar varijable pogreške i evidentiranje.
Pogreška PowerShell-a Rukovanje lakim putem
Prvi put kada želite riješiti pogreške je kada nešto zaustavi vašu skriptu u njezinim pjesmama. Ako neuspjeh ne utječe na vaše kasnije korake, možda je najbolje da ga samo preskočite i krenete dalje.
S druge strane, nije uvijek jasno kada neki cmdlet baca krajnju grešku. Neki cmdleti vraćaju pogrešku, ali ne zaustavljaju vašu skriptu. Tada možete završiti i čekajući da se vaša skripta dovrši, dok ona proizvodi gluposti.
Ovdje je -ErrorAction Dolazi parametar. To koristite da biste primorali cmdlet da obrađuje pogrešku na način koji želite. Ako modificirate postojeću skriptu, povećajte produktivnost pomoću skripti sustava Windows PowerShell, povećajte produktivnost pomoću skripti PowerShell za Windows. Što ako možete produktivnost Linuxa prenijeti na Windows? Većina Linux distribucija dolazi upakirana s moćnom Bash školjkom. PowerShell je jednako moćan terminal za sustav Windows. , dodajete ga na kraju cmdlet linije.
Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction Stop
Očito ako koristite Get-ChildItem cmdlet samostalno, pogreška ne čini mnogo za vas. Međutim, ako želite učiniti bilo što s podacima, bilo bi dobro zaustaviti skriptu, tako da znate da pretraživanje nije uspjelo i zašto. Alternativno, ako obavljate više pretraživanja, promijenite parametar iz Stop do SilentlyContinue, pa se skripta nastavlja ako pretraživanje ne uspije. Ako želite vidjeti u čemu je pogreška, možete to koristiti Nastaviti umjesto parametra.
Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction SilentlyContinue
Ako biste radije imali mogućnost kontrole onoga što se događa svaki put kada se pokrene vaša skripta, možete je promijeniti u raspitati se. Kad cmdlet udari u njušku, daje opcije: Da, da za sve, zaustavljanje naredbe, obustava ili pomoć.
Ova je opcija malo fleksibilnija, ali znači da pogreške uzrokuju da scenarij čeka vaš unos. To možda nije nešto što želite kada vodite dug proces preko noći.
Pogreška pri rukovanju načinom programiranja
ErrorAction parametar rješava vaše pogreške na jednostavan način. Međutim, ako tražite malo više kontrole nad pogreškama, PowerShell vam je i dalje obuhvaćen. koristeći Pokušaj uhvatiti, sada možemo razgranati skriptu kada cmdleti vrate grešku.
Kao što ime sugerira, Pokušaj uhvatiti sastoji se od dva dijela. (Tehnički postoji trećina, ali do toga ćemo doći za minutu.) Prvo je Probati odjeljak. U ovom ćete odjeljku pokrenuti svoj uobičajeni kod. I dalje ćete koristiti -ErrorAction parametar, ali može se postaviti samo kao Stop. Ova zastava osigurava da vaš cmdlet aktivira Ulov-čak i ako nema grešku u zatvaranju.
Pokušajte Get-Process "Cortana" -ErrorAction Stop
Pokušajte također možete spriječiti pokretanje drugih cmdleta ako pretraživanje ne uspije. U ovom slučaju, ako ste slali Get-Process rezultata do Stop-Proces, neuspješno pretraživanje sprječava pokretanje drugog cmdleta.
Dakle, sada kad ste stvorili pokušajni blok cmdleta, što želite učiniti kad ne uspije? Koristiti Ulov pola, to ćete definirati.
Uhvatite Write-host "Proces nije pronađen"
Kao i kod ErrorAction parametar, kad radite nešto malo složenije 3 pametne funkcije PowerShell nakon nadogradnje na Windows 10 3 pametne funkcije PowerShell nakon nadogradnje na Windows 10 Windows 10 donosi nam novi PowerShell, u osnovi naredbeni redak na steroidima. Ovaj članak prikazuje vam kako učiniti PowerShell-om drugačije nemoguće. I lakše je nego što mislite! Ulov bit će korisno za više nego davanje običnog jezika. (U gornjem primjeru, neuspjeh je prisiljen upotrebom naziva aplikacije, a ne naziva procesa.) Stoga se pobrinite da se igrate sa Probati blok za stvaranje pretraživanja / akcije koja vam je potrebna. Možete koristiti Ulov blokirajte vašu skriptu ako vam ne uspije.
Treći dio vam je koristan ako želite da se nešto pokrene bez obzira na to je li cmdlet uspio ili ne. Za to možete koristiti Konačno blok. To dodajete nakon Isprobajte i uhvatite i prijavite se kad odjeljak skripte završi.
Varijabla pogreške i evidentiranje
Vaša skripta sada kontrolira kako postupa s pogreškama i kako na njih reagira. Možete ga koristiti kao zakazan zadatak ili ga barem pokrenuti kada niste za svojim stolom. 5 razloga zbog kojih biste trebali koristiti PowerShell umjesto grupnog skriptiranja 5 razloga zašto biste trebali koristiti PowerShell umjesto paketnog skriptiranja PowerShell je ono što biste dobili ako biste prešao je naredbeni redak s Batch Scriptingom, ubacio neke dodatne značajke i sve to podvalio na nekoliko zareza. Evo nekoliko razloga što biste trebali isprobati. , Međutim, kako možete istražiti neuspjelu skriptu? Sa -ErrorVariable parametrirajte pogreške greške u cmdletu u prilagođenu varijablu. Ovo je alternativa sustavu $ Greška varijabla, koja sadrži sve pogreške iz trenutne sesije.
Vaša cmdlet mora malo duže. Prvo definirajte varijablu, nešto slično $ SearchError učinit će za primjer. Kad nazovete SearchError u ErrorVariable parmetar, ne upotrebljavate znak dolara. Iako pozivate varijablu koju ste stvorili, zbog načina na koji parametar radi nazivate je bez znaka dolara. Zatim dodajte to na kraj retka.
Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction Continue -ErrorVariable SearchError
Ako dodate a + ispred naziva varijable možete je dodati varijabli, a ne izravno je zamijeniti. Zbog toga dobivate isto ponašanje kao i varijabla globalne pogreške. Umjesto toga, možete koristiti ovaj izlaz i Pokušaj uhvatiti napisati prilagođeni izlaz i vremenski žig.
Da biste ovo učinili, napravite tekstualnu datoteku odmah nakon što postavite varijablu pogreške. Učinite to s Nova stvar cmdlet. Možda želite koristiti raspitati se mogućnost za ErrorAction parametar. To vam omogućuje dodavanje u postojeći dnevnik kada Nova stvar cmdlet ne uspijeva.
$ SearchLog = Nova stavka "~ \ SearchLog.txt" datoteka tipa -ErrorAction Upit
Sad kad sastavite svoj Pokušaj uhvatiti blok, možete koristiti Ulov za prijavu u tekstualnu datoteku. Ti koristiš Get-datum za stvaranje vremenske oznake. Oblikovanje može biti škakljivo pa obavezno to kopirajte iz primjera.
Pokušajte Get-ChildItem -Path "~ \ Documents \ *. Jpg" -Recurse -ErrorAction Stop -ErrorVariable SearchError Uhvatite Add-Content -Path $ SearchLog -Value "$ (Get-Date -Format dd-MM-yy- hh_mm_ss) Datoteke nisu pronađene, vraćena je pogreška: $ SearchError "
Ponovite da je prema potrebi za sve vaše cmdlete 15 Napredni zadaci PowerShell se može nositi u sustavu Windows 10 15 Napredni zadaci PowerShell Can Handle u sustavu Windows 10 PowerShell je sličan naredbenom retku, ali bolji. To je moćan alat za administraciju sustava. Sastavili smo 15 zadataka, nekoliko jednostavnih, složenih, koji imaju koristi od čarolije PowerShell-a. i sada imate lijep dnevnik bilo kakvih pogrešaka. Ako želite pratiti stvari koje uspješno rade, možete dodati slično Add-Sadržaj na kraju Probati blok. Ova se prijava pokreće samo kada Probati cmdlet uspijeva. Potom možete zabilježiti svoje pogreške i uspjehe pomoću vremenskih oznaka. Zapisivanje sada daje vam do znanja sve što je vaš scenarij učinio, uspjeh ili neuspjeh.
Moć koda
Korištenje PowerShell-a iz naredbenog retka naredbeni redak u odnosu na Windows PowerShell: Kakva je razlika? Komandni redak i Windows PowerShell: Kakva je razlika? Korisnici sustava Windows mogu se koristiti bez upotrebe naredbenog retka ili PowerShell-a. Ali s Windowsom 10 i novim funkcijama iza ugla, možda je došlo vrijeme koje smo naučili. je moćan način upravljanja vašim sustavom. Te iste naredbe možete povezati na način koji omogućava moćnu automatizaciju. Pravilno postupanje s pogreškama potrebno je kako bi se osiguralo da vaše skripte rade samo ono što vi želite. Zapisivanjem svega možete uštedjeti vrijeme prilikom rješavanja problema.
Je li došlo vrijeme da vam je rukovanje pogreškama spasilo slaninu? Postoji li skripta PowerShell koja bi mogla koristiti bolje rukovanje pogreškama? Koji je vaš sljedeći PowerShell projekt? Javite nam se u komentarima.