Dacă sunteți ca mine, nu numai că nu ați făcut niciodată o eroare în scriptul dvs., dar toate forțele externe care sunt în afara controlului dvs. funcționează întotdeauna așa cum a fost intenționat… Punând o mică pauză asupra sarcasmului, ce fac oamenii fără magic PowerShell touch? Ei se îmbarcă în lupta antică care a continuat de generații numite manipularea erorilor.

PowerShell eroare de manipulare exemplu

eroare de manipulare cu PowerShell ajută să se asigure că o excepție neașteptată nu lasa un script continua să cauzeze probleme., Să aruncăm o privire la un script care se va asigura că numai oamenii se răcească au acces la toate lucrurile se răcească. (A se vedea Get-conținut)

funcționează excelent! Cu toate acestea, Kris Powell a aflat despre lista rece, și în furie la a fi lăsat de pe listă, el efectuează o acțiune care dovedește că avem dreptate să-l țină afară. El șterge CoolPeople.csv.

data Viitoare când script-ul ruleaza, vom obține o excepție:

Cu un gol $UpdatedCoolList variabilă se elimină toată lumea are acces. Foarte nu se răcească Kris.,

excepții

înainte de a intra în manipularea sabotajului, este important să învățăm despre excepții. O excepție este o eroare sau un rezultat neașteptat pe care PowerShell trebuie să îl gestionați.există două tipuri de excepții: terminare și non-terminare. Excepțiile de încheiere opresc scriptul care rulează. Excepțiile care nu se termină doar scriu la conducta de eroare.

efectuarea unei excepții care nu se termină o excepție care se termină este simplă. Puteți seta parametrul comenzii la-ErrorAction pentru a opri.,

$UpdatedCoolList = Get-Content \\FileShare\Location\CoolPeople.csv -ErrorAction Stop

de asemenea, puteți seta acțiunea implicită de toate erorile să se oprească prin setarea variabilei $ErrorActionPreference = "Stop".în cele mai multe cazuri, un cmdlet generează o excepție care nu se termină, dar manipularea erorilor cu PowerShell necesită o excepție de încheiere pentru a funcționa.

Try/Catch/în cele din Urmă

-ErrorAction este setat la Stop, putem înveliți-l într-un bloc Try/Catch., Tryeste locul unde rulăm comanda, iar Catch este ceea ce va rula dacă se execută într-o eroare de terminare. (A se vedea Out-File)

în acest script-bloc, am capturat excepția și a pus-o într-un fișier jurnal. Break a fost folosit pentru a ieși din script, astfel încât să nu continue. Dacă am fi lăsat blocul de captură gol, acesta ar absorbi eroarea și ar continua scriptul.

ultima piesă a manipulării erorilor cu un bloc Try / Catch / Finally este Finally., Aceasta este utilizată pentru a oferi acțiuni care vor rula întotdeauna înainte de a ieși din script (sau de a continua). Acest lucru este folosit mai ales pentru a curăța. Puteți să-l utilizați pentru a închide conexiunile bazei de date, pentru a elimina fișierele sau pentru a închide blocările de fișiere. Finally vă permite să reveniți la orice modificări efectuate ca urmare a script-ul dacă o excepție este întâlnită sau nu.

concluzie

asta este pentru elementele de bază. Ori de câte ori aveți de-a face cu elemente care sunt volatile sau în afara controlului dvs., manipularea erorilor este o modalitate excelentă de a vă asigura că scriptul dvs. nu va cauza probleme dacă lucrurile nu merg bine.