Variabilele sunt cea mai elementară structură de date în orice tip de codare. Dar variabilele individuale sunt cu greu suficiente pentru majoritatea scopurilor, mai ales atunci când avem de-a face cu algoritmi mai complexi.
Acolo intervin matricele. Fie că este vorba de C++ sau Piton, matricele sunt prezente în fiecare limbaj de programare într-o anumită formă. Dar cum rămâne cu Windows PowerShell? Cum funcționează matricele PowerShell? Cum le folosești? Care este sintaxa lor? Să aflăm.
Matrice PowerShell 101
Pur și simplu vorbind, o matrice este doar o colecție structurată de variabile. Ideea este de a elimina necazul de a ține evidența a zeci de nume prin restrângerea variabilelor asociate într-un set numerotat.
În PowerShell, puteți crea o variabilă adăugând simbolul $ înaintea unui nume de variabilă. De exemplu:
$prime = 13
Variabila poate conține orice tip de date, de la numere la șiruri. Trebuie doar să folosiți ghilimele duble sau simple pentru a specifica un șir.
$name = „Levin”
Acum, pentru a crea o nouă matrice, pur și simplu atribuiți mai multe valori aceleiași variabile, separate prin virgule. Astfel:
$week = „luni”, „marți”, „miercuri”, „joi”, „vineri”, „sâmbătă”, „duminică”
Unii oameni preferă să arunce în mod explicit o variabilă într-o matrice pentru a evita confuzia, deși acest lucru nu este necesar. Pentru a face acest lucru, puneți valorile în paranteze prefațate cu simbolul @.
$week = @(„luni”, „marți”, „miercuri”, „joi”, „vineri”, „sâmbătă”, „duminică”)
Acest lucru este de obicei util atunci când încercați să puneți rezultatul altor comenzi într-o matrice, unde nu le puteți scrie manual în formatul corect.
Crearea unei matrice
Am văzut deja cea mai comună metodă de a crea o matrice. Dar, în funcție de situație, există și alte modalități care ar putea fi mai potrivite. De exemplu, dacă doriți să creați o matrice care conține o serie de numere, puteți utiliza operatorul interval:
$cifre = (0..9)
Acest lucru va crea o matrice cu toate cele zece cifre de la zero la nouă. De asemenea, puteți inițializa o matrice goală, în cazul în care doriți doar un loc pentru a stoca valori mai târziu..
$values = @()
Matricele multiple pot fi chiar imbricate unele în altele, deși acest tip de utilizare poate deveni confuz foarte repede.
$coordonate = @(
(5, 10, 23),
(11, 7, 16)
)
În mod implicit, o matrice poate stoca orice tip de variabilă, fie că este vorba de numere, șiruri de caractere sau o combinație a ambelor. Dar puteți defini explicit un tip în cazul în care doriți să limitați valorile introduse în el. De exemplu:
[int[]] $numbers = 2,3,4,5
În acest fel, matricea poate conține numai numere întregi. Încercarea de a-i atribui orice alt tip de valoare va returna o eroare. Acest lucru poate fi util pentru a preveni erorile simple pentru tablourile care lucrează exclusiv cu valori numerice, deoarece introducerea unui șir într-o variabilă pentru a fi utilizată în calcule va crea probleme.
Accesarea matricelor
Până acum am văzut mai multe metode pentru a crea matrice care conțin diferite tipuri de date. Dar cum procedați pentru a accesa aceste date?
Matricele PowerShell folosesc același format folosit de alte limbaje de programare. Fiecare variabilă matrice poate fi accesată prin numărul său de index. De exemplu:
$var = $numbers[5]
Acest lucru va copia valoarea stocată în indexul cinci al matricei $numbersdin variabila $var. Rețineți că indicii de matrice încep să conteze de la 0, astfel încât primul element este accesat cu zero.
Dacă ar fi să scoatem acest lucru, de exemplu:
„$days[2]”
Vom primi miercuri, nu marți.
Puteți folosi aceeași metodă pentru a modifica și aceste valori. De exemplu, următoarea comandă va schimba al doilea element al matricei la zero:
$numbers[1] = 0
De asemenea, puteți adăuga mai multe elemente la o matrice existentă în loc să modificați valorile intrărilor curente doar adăugându-le ca o expresie aritmetică.
$names += „Johny”
Această metodă poate fi folosită și pentru a adăuga mai multe intrări simultan sau chiar și matrice întregi.
$names += „Charlie, Liam, Teresa”
$nume += $nume
Metoda separată prin virgulă este valabilă și pentru accesarea mai multor elemente ale matricei. Introducerea acesteia, de exemplu, stochează primele cinci elemente ale $daysîn $weekdays..
$zile săptămânii = $days[0,1,2,3,4]
Iterarea prin matrice
Accesarea manuală a anumitor elemente ale unei matrice este bine și bună, dar dacă doriți să efectuați acțiuni asupra întregului conținut al unei matrice, poate deveni plictisitor. O abordare mai elegantă este utilizarea unei bucle For.
Buclele For pot parcurge sistematic toate elementele unui tablou, procesând fiecare valoare conform instrucțiunilor. Iată cum puteți construi o astfel de buclă:
Pentru ($i = 0 ; $i -lt $zile.Lungime ; $i++)
{
$zile[$i]
}
Funcția array.Length returnează dimensiunea matricei, care este practic numărul de elemente din acesta. Acesta poate fi conectat la un parametru al expresiei de testare a buclei For pentru a repeta cuprinzător peste toate elementele.
Bucla Foreach și bucla pentru obiecte Foreach pot face același lucru cu un script PowerShell și mai slab.
Foreach ($day în $days)
{
$day
}
Acest lucru vă scutește de efortul de a determina dimensiunea matricei, lăsând detaliile pentru ca PowerShell să le gestioneze.
Când ar trebui să utilizați matricele PowerShell
Cea mai mare sursă de erori într-un script complex sunt variabilele referite incorect. Acest lucru se întâmplă din cauza prezenței unui număr mare de variabile cu nume unic, ceea ce face dificilă amintirea scopului lor.
Cea mai simplă remediere pentru această problemă este utilizarea extensivă a matricelor. Toate variabilele legate într-un fel sau altul pot fi atribuite unei singure matrice și accesate prin numerele lor de index.
Microsoft PowerShell principalul caz de utilizare este automatizarea, iar matricele joacă un rol esențial în acest sens. Obiectele returnate de cmdleturile PowerShell pot fi stocate în matrice și repetate. Acest lucru permite ca sarcinile secvențiale să fie efectuate automat, simplificând foarte mult administrarea sistemului.
.