Mulți oameni le place să folosească PowerShell , deoarece le permite să facă lucruri care nu pot fi făcute cu GUI Windows. Chiar și așa, nu se poate nega că unele cmdleturi PowerShell pot fi puțin plictisitoare sau complicate. Dar dacă ar exista o modalitate de a putea edita aceste cmdleturi și de a le face să se „comporte” așa cum doriți? Credeți sau nu, există o modalitate ușoară de a face asta. Puteți modifica comportamentul cmdlet-ului modificând valorile parametrilor impliciti PowerShell. Acest articol vă va arăta cum să utilizați parametrii impliciti ai PowerShell pentru a modifica comportamentul comenzii cmdlet.
Avertizare
Înainte de a începe, există câteva lucruri de care trebuie să ții cont. Deși modificarea parametrilor impliciti PowerShell și a comportamentului cmdelt este convenabilă, poate duce la probleme. Dacă rulați un script și acel script presupune că cmdletul modificat se va comporta într-un anumit mod, este posibil să obțineți rezultate imprevizibile. Prin urmare, ar trebui să vă asigurați că modificați cu atenție parametrii impliciti PowerShell.
Scurtă revizuire
Există două concepte PowerShell cu care trebuie să fii familiarizat pentru a lucra cu parametrii impliciti. Primul concept este variabil. În PowerShell, numele variabilelor încep întotdeauna cu un semn dolar și puteți scrie conținutul unei variabile tastând numele variabilei.
Al doilea concept cu care poate fii familiarizat este tabelul hash. Un tabel hash este în esență o listă alcătuită din perechi cheie/valoare. De exemplu, să presupunem că doriți să creați un tabel hash care să conțină numele statelor din SUA și abrevierile acestora. Mai jos este codul:
$StateList = @{}
$StateList.add('Florida','FL')
$StateList.add('South Carolina','SC')
$StateList.add('Georgia','GA')
$StateList
Prima linie de cod creează un tabel hash gol numit $StateList . Următoarele trei rânduri adaugă intrări la tabel. Fiecare intrare este alcătuită dintr-o cheie (nume de stat) și o valoare (abreviere de stat). Ultima linie listează conținutul tabelului. Puteți vedea codul în acțiune în imaginea de mai jos.
Acesta este doar un exemplu foarte simplu și există multe alte moduri de a utiliza tabelele hash.
Lucrați cu parametrii impliciti PowerShell
PowerShell are o variabilă încorporată folosită pentru a stoca parametrii impliciti utilizați cu cmdleturile sale. Această variabilă se numește $PSDefaultParameterValues . După cum poate ați observat din introducerea inițială și numele variabilei, aceasta nu este o variabilă obișnuită, ci un tabel hash. Cu toate acestea, dacă introduceți numele variabilei în PowerShell, veți vedea rapid că tabelul este gol, așa cum se arată mai jos.

Deci, ce putem face cu această variabilă $PSDefaultParameterValues . După cum sa menționat mai sus, puteți controla comportamentul cmdlet-urilor PowerShell. Singurul punct este că nu puteți depăși capacitățile inerente ale comenzii cmdlet. Deci, să ne uităm la un exemplu.
Acest exemplu poate să nu fie ceva pe care doriți să îl utilizați în viața reală, dar vă va arăta cât de ușor este să schimbați radical comportamentul cmdlet-ului. Dacă introduceți cmdletul Get-TimeZone în PowerShell, veți vedea numele fusului orar pentru care computerul dvs. este configurat în prezent. Puteți vedea acest exemplu în imaginea de mai jos.
![Cum să utilizați parametrii impliciti PowerShell pentru a schimba comportamentul comenzii Cum să utilizați parametrii impliciti PowerShell pentru a schimba comportamentul comenzii]()
Acum schimbăm acest cmdlet astfel încât să nu afișeze fusul orar pe care sistemul este configurat să îl folosească, ci fusurile orare disponibile. Pentru a face acest lucru, avem nevoie de sintaxa cmdlet-ului folosind cmdletul Get-Help urmat de cmdletul Get-TimeZone . Puteți vedea mai jos sintaxa cmdlet-ului.
![Cum să utilizați parametrii impliciti PowerShell pentru a schimba comportamentul comenzii Cum să utilizați parametrii impliciti PowerShell pentru a schimba comportamentul comenzii]()
Această sintaxă include un parametru numit ListAvailable . Introdu comanda de mai jos:
$PSDefaultParameterValues.Add(„Get-TimeZone:ListAvailable”,$True)
Prima parte a acestei comenzi îi spune pur și simplu lui PowerShell că doriți să adăugați o valoare tabelului hash, la fel cum am făcut cu exemplul de abreviere de stat din SUA din secțiunea anterioară. Acest tabel hash conține o pereche cheie/valoare. În acest caz, cheia este numele cmdlet-ului (Get-TimeZone) urmat de o virgulă și numele parametrului pe care doriți să îl setați. În acest caz, numele parametrului este ListAvailable. A doua parte a acestui cmdlet este valoarea pe care doriți să o atribuiți parametrului. Aici este $True . Parametrul ListAvailable nu are nevoie în mod normal de o valoare, așa că specificarea $True este modul în care îi spuneți lui PowerShell să folosească acest parametru fără a-i atribui o valoare.
Dacă vă uitați la imaginea de mai jos, veți vedea ce se întâmplă când rulați cmdletul Get-TimeZone.
![Cum să utilizați parametrii impliciti PowerShell pentru a schimba comportamentul comenzii Cum să utilizați parametrii impliciti PowerShell pentru a schimba comportamentul comenzii]()
Lucruri de reținut
Cel mai important lucru de înțeles este că adăugarea unei noi valori pentru un parametru implicit PowerShell este de a modifica comportamentul implicit al cmdlet-ului, nu de a elimina capacitățile cmdlet-ului. Chiar și atunci când modificați cmdletul Get-TimeZone pentru a afișa fusurile orare disponibile în loc să afișați fusul orar actual. Puteți afișa în continuare informațiile despre fusul orar actual dacă vedeți mai multe.
Un alt lucru pe care trebuie să-l știți este că parametrii prestabiliți personalizați pot fi eliminați. Pentru a elimina un singur articol, utilizați comanda $PSDefaultParameterValues.Remove , urmată de numele articolului pe care doriți să îl eliminați. De exemplu:
$PSDefaultParameterValues.Remove(„Get-TimeZone:ListAvailable”)
În schimb, puteți șterge întregul conținut al tabelului hash folosind această comandă:
$PSDefaultParameterValues.Clear();
Mai jos puteți vedea exemple ale ambelor tehnici:
![Cum să utilizați parametrii impliciti PowerShell pentru a schimba comportamentul comenzii Cum să utilizați parametrii impliciti PowerShell pentru a schimba comportamentul comenzii]()
Puteți șterge întregul tabel hash sau puteți șterge o singură intrare.
Modificarea comportamentului implicit al unei comenzi cmdlet este ceva ce nu faceți des, dar atunci când aveți nevoie, știți deja cum să o schimbați.
Vă doresc succes!
Vezi mai mult: