Parametrii
După ce ați creat câteva scripturi, este posibil să observați că scripturile dvs. nu sunt flexibile. Accesarea scripturilor pentru a le modifica nu este eficientă. Există o modalitate mai bună de a gestiona modificările: utilizați parametri.
Utilizarea parametrilor vă face scripturile flexibile, deoarece le permite utilizatorilor să selecteze opțiuni sau să trimită intrări la scripturi. Nu va trebui să modificați scripturile la fel de frecvent, deoarece, în unele cazuri, va trebui doar să modificați o valoare de parametru.
Cmdleturile, funcțiile și scripturile acceptă toți parametrii.
Declararea și utilizarea unui parametru
Pentru a declara un parametru, trebuie să utilizați cuvântul cheie Param
cu o paranteză deschisă și închisă:
Param()
Între paranteze, definiți parametrii, separându-i prin virgulă. O declarație de parametri tipică poate arăta astfel:
# CreateFile.ps1
Param (
$Path
)
New-Item $Path # Creates a new file at $Path.
Write-Host "File $Path was created"
Scriptul are un parametru $Path
care este utilizat ulterior în script pentru a crea un fișier. Scriptul este acum mai flexibil.
Utilizați parametrul
Pentru a apela un script cu un parametru, trebuie să furnizați un nume și o valoare. Să presupunem că scriptul de mai sus se numește CreateFile.ps1
. Puteți să îl numiți astfel:
./CreateFile.ps1 -Path './newfile.txt' # File ./newfile.txt was created.
./CreateFile.ps1 -Path './anotherfile.txt' # File ./anotherfile.txt was created.
Pentru că ați utilizat un parametru, nu trebuie să modificați fișierul script atunci când doriți să apelați fișierul altceva.
Notă
Acest script particular poate să nu beneficieze mult de utilizarea unui parametru, deoarece apelează doar New-Item
. Imediat ce scriptul dvs. are o lungime de câteva linii, utilizarea parametrului se va plăti.
Îmbunătățirea parametrilor
Când creați pentru prima dată un script care utilizează parametri, este posibil să vă amintiți exact la ce sunt parametrii și pentru ce valori sunt rezonabile pentru ele. Pe măsură ce trece timpul, este posibil să uitați aceste detalii. De asemenea, poate doriți să oferiți un script unui coleg. Soluția din aceste cazuri este de a fi explicită, ceea ce face scripturile ușor de utilizat. Doriți ca un script să nu reușească mai devreme dacă trece valori de parametri nerezonabile. Iată câteva lucruri de luat în considerare atunci când definiți parametri:
- Este obligatoriu? Parametrul este opțional sau obligatoriu?
- Ce valori sunt permise? Ce valori sunt rezonabile?
- Acceptă mai multe tipuri de valori? Parametrul acceptă orice tip de valoare, cum ar fi șir, boolean, întreg și obiect?
- Parametrul se poate baza pe o setare implicită? Puteți să omiteți complet valoarea și să vă bazați pe o valoare implicită?
- Puteți îmbunătăți și mai mult experiența utilizatorului? Puteți fi și mai clar pentru utilizator, furnizând un mesaj de Ajutor?
Selectați o abordare
Toți parametrii sunt opționali în mod implicit. Această setare implicită poate funcționa în unele cazuri, dar uneori aveți nevoie ca utilizatorul dvs. să furnizeze valori de parametri, iar valorile trebuie să fie rezonabile. Dacă utilizatorul nu furnizează o valoare unui parametru, scriptul ar trebui să se închidă sau să îi spună utilizatorului cum să remedieze problema. Cel mai rău scenariu este ca scriptul să continue și să facă lucruri pe care nu doriți să le facă.
Există câteva abordări pe care le puteți utiliza pentru a vă face scriptul mai sigur. Puteți scrie cod particularizat pentru a inspecta valoarea parametrului. Sau puteți utiliza decoratori care fac aproximativ același lucru. Să ne uităm la ambele abordări.
Utilizați
If/Else
. ConstruireaIf/Else
vă permite să verificați valoarea unui parametru, apoi să decideți ce să faceți. Iată un exemplu:Param( $Path ) If (-Not $Path -eq '') { New-Item $Path Write-Host "File created at path $Path" } Else { Write-Error "Path cannot be empty" }
Scriptul va rula
Write-Error
dacă nu furnizați o valoare pentru$Path
.Parameter[]
decorator . O modalitate mai bună, care necesită tastare mai puțină, este să utilizațiParameter[]
decorator:Param( [Parameter(Mandatory)] $Path ) New-Item $Path Write-Host "File created at path $Path"
Dacă rulați acest script și omiteți o valoare pentru
$Path
, ajungeți într-o casetă de dialog care vă solicită valoarea:cmdlet CreateFile.ps1 at command pipeline position 1 Supply values for the following parameters: Path:
Puteți îmbunătăți acest decorator, furnizând un mesaj de ajutor pe care îl vor vedea utilizatorii atunci când rulează scriptul:
[Parameter(Mandatory, HelpMessage = "Please provide a valid path")]
Atunci când rulați scriptul, primiți un mesaj care vă spune să tastați
!?
pentru mai multe informații:cmdlet CreateFile.ps1 at command pipeline position 1 Supply values for the following parameters: (Type !? for Help.) Path: !? # You type !? Please provide a valid path # Your Help message.
Atribuiți un tip. Dacă atribuiți un tip unui parametru, puteți spune, de exemplu, că parametrul acceptă numai șiruri, nu șiruri Booleans. Astfel, utilizatorul știe la ce să se aștepte. Puteți atribui un tip unui parametru dacă îl precedați cu tipul cuprins între paranteze:
Param( [string]$Path )
Aceste trei abordări nu se exclud reciproc. Le puteți combina pentru a vă face scriptul în siguranță.