Despre Tablouri
- 08/26/2020
- 14 minute pentru a citi
-
- S
- s
- c
o Scurtă Descriere
Descrie tablouri, care sunt structuri de date conceput pentru a storecollections de elemente.o matrice este o structură de date care este proiectat pentru a stoca o colecție de elemente.Elementele pot fi de același tip sau de diferite tipuri.
începând cu Windows PowerShell 3.,0, o colecție de zero sau un obiect areunele proprietăți ale matricelor.
crearea și inițializarea unui tablou
pentru a crea și inițializa un tablou, atribuiți mai multe valori unei variabile. Thevalues stocate în matrice sunt delimitate cu o virgulă și separat de thevariable numele de operator de atribuire (=
).,
De exemplu, pentru a crea o matrice numit $A
care conține șapte numerice (int)valori de 22, 5, 10, 8, 12, 9, și 80, tip:
virgula poate fi, de asemenea, folosit pentru a inițializa un singur element de matrice prin plasarea thecomma înainte de singur element.
De exemplu, pentru a crea un singur element de matrice numit $B
conține singlevalue de 7, tip:
de asemenea, puteți crea și de a inițializa un tablou folosind operatorul de gama (..
).,Următorul exemplu creează o matrice care conține valorile de la 5 la 8.
Ca urmare, $C
conține patru valori: 5, 6, 7, și 8.
când nu este specificat niciun tip de date, PowerShell creează fiecare matrice ca objectarray (sistem.Obiect). Pentru a determina tipul de date al unei matrice, utilizațimetoda getType ()., De exemplu, pentru a determina tipul de date al $A
array, tip:
Pentru a crea un puternic tastat matrice, care este, o matrice care poate conține onlyvalues de un anumit tip, distributie variabila ca o matrice de tip, cum ar asstring, lung, sau int32. Pentru a arunca o matrice, precedenume variabil cu un tip de matrice închis între paranteze., De exemplu, pentru a crea a32-bit integer array numit $ia
conține patru numere întregi (1500, 2230, 3350,și 4000), tip:
Ca urmare, $ia
array poate să conțină numai numere întregi.
puteți crea matrice care sunt exprimate la orice tip acceptat în Microsoft.NET Cadru. De exemplu, obiectele care Get-Process
preia reprezentării de procese din Sistem.Diagnosticare.Tipul procesului., Pentru a crea astrongly tastat serie de procesul de obiecte, introduceți următoarea comandă:
array sub-expresie operator
array sub-expresie operatorul creează o serie de declarații insideit. Oricare ar fi declarația din interiorul operatorului, operatorul o va faceplasați-l într-o matrice. Chiar dacă există zero sau un obiect.
sintaxa operatorului de matrice este următoarea:
puteți utiliza operatorul de matrice pentru a crea o matrice de zero sau un obiect., De exemplu:
matrice operator este util în scripturi, atunci când sunt obtinerea de obiecte, dar nu știu cât de multe obiecte te. De exemplu:
Pentru mai multe informații despre gama sub-expresie operator, seeabout_Operators.
accesarea și utilizarea elementelor de matrice
citirea unui tablou
vă puteți referi la un tablou folosind numele variabilei sale. Pentru a afișa toateelemente din matrice, tastați numele matricei., De exemplu, presupunând că $a
este de obiective care conțin numere naturale 0, 1, 2, până la 9; tastați:
puteți face referire la elementele într-o matrice prin utilizarea unui index, începutul atposition 0. Introduceți numărul indexului între paranteze., De exemplu, pentru a afișa primul element $a
array, tip:
Pentru a afișa cel de-al treilea element $a
array, de tip:
puteți prelua o parte din matrice, folosind o gamă largă de operator pentru index. De exemplu, pentru a prelua al doilea la al cincilea elemente de matrice, ai wouldtype:
numere Negative număra de la sfârșitul șirului., De exemplu,” -1 ” se referă laultimul element al matricei. Pentru a afișa ultimele trei elemente de thearray, în indicele ordine crescătoare, de tip:
Dacă aveți de tip negativ indicii în ordine descrescătoare, de ieșire se schimbă.
cu toate acestea, aveți grijă când utilizați această notație. Ciclurile de notație de lasfârșitul limitei până la începutul matricei.,
puteți folosi operatorul ‘ + (+
) pentru a combina un game cu o listă de elementsin-o matrice. De exemplu, pentru a afișa elemente la index pozițiile 0, 2, 4 și 6, tip:
de Asemenea, pentru a lista mai multe intervale și elemente individuale puteți utiliza plusoperator., De exemplu, pentru lista de elemente de la zero la două, patru și șase, și theelement la a opta poziție de tip:
Iterații peste elementele de matrice
puteți folosi, de asemenea, looping construcții, cum ar fi ForEach, Pentru, și în Timp ce buclele, torefer la elementele într-o matrice. De exemplu, pentru a utiliza o buclă ForEach todisplay elementele în $a
array, tip:
bucla Foreach reiterează prin matrice și se întoarce de fiecare valoare în thearray până când ajunge la sfârșitul șirului.,
bucla For este utilă atunci când incrementați contoarele în timp ce examinați elementele dintr-o matrice. De exemplu, pentru a utiliza o buclă Pentru a reveni de fiecare othervalue într-o matrice, de tip:
puteți folosi o buclă în Timp ce pentru a afișa elemente într-o matrice până la o definedcondition nu mai este valabil., De exemplu, pentru a afișa elementele în $a
array în timp ce indice matrice este mai mic decât 4, tip:
Proprietăți de matrice
Conta sau Lungimea sau LongLength
Pentru a determina cât de multe elemente sunt într-o matrice, utilizați Length
proprietatea sauCount
alias. Longlength
este util dacă matricea conține mai mult de2,147,483,647 elemente.
Rang
Returnează numărul de dimensiuni în matrice., Cele mai multe matrice din PowerShell auo singură dimensiune. Chiar și atunci când credeți că sunteți construirea unui multidimensionalarray; ca în următorul exemplu:
următorul exemplu arată cum să creați o situare cu adevărat de matrice multidimensionale folosesc .Net Framework.
Metode de matrice
Clar
Seturi de tot element valori la valoarea implicită de matrice”s tip de element.Metoda Clear () nu resetează dimensiunea matricei.,
în exemplul următor $a
este o serie de obiecte.
În acest exemplu, $intA
este explicit scris să conțină numere întregi.
ForEach
vă Permite să itera peste toate elementele din matrice și de a efectua o anumită operaționale de fiecare element din matrice.
Forefiecare metodă are mai multe supraîncărcări care efectuează diferite operații.,
ForEach(scriptblock expresie)
ForEach(scriptblock exprimare, obiect argumente)
Această metodă a fost adăugat în PowerShell v4.
notă
sintaxa necesită utilizarea unui bloc de script. Parantezele sunt opționale dacăcriptblock este singurul parametru. De asemenea, nu trebuie să existe un spațiuîntre metodă și paranteza de deschidere sau bretele.
următorul exemplu arată modul de utilizare a metodei foreach. În acest cazintent este de a genera valoarea pătrată a elementelor din matrice.,
la fel ca -ArgumentList
parametru de ForEach-Object
, arguments
parametru permite trecerea dintr-o serie de argumente pentru un script blockconfigured să le accepte.
Pentru mai multe informații despre comportamentul ArgumentList, a se vedeaabout_splatting.,
ForEach(tip convertToType)
ForEach
metodă poate fi folosit pentru a rapid exprimate elementele pentru a o differenttype; următorul exemplu arată cum de a converti o listă de șirul de date să tip.
ForEach(string name)
ForEach(string name, obiect newValue)
ForEach
metoda poate fi de asemenea utilizat pentru a prelua rapid, sau pentru a seta propertyvalues pentru fiecare element în colecție.,
ForEach(string code)
ForEach(string code, obiect argumente)
în cele din Urmă, ForEach
metode pot fi utilizate pentru a executa o metoda pe fiecare element în colecție.
la fel ca -ArgumentList
parametru de ForEach-Object
, arguments
parametru permite trecerea dintr-o serie de argumente pentru un script blockconfigured să le accepte.
notă
începând cu Windows PowerShell 3.,0 preluarea proprietăți și executingmethods pentru fiecare element într-o colecție pot fi, de asemenea, realizată folosind „Metodede scalar obiecte și colecții” puteți citi mai multe despre asta hereabout_methods.
unde
permite filtrarea sau selectarea elementelor din matrice. Script-ul trebuie să evaluateto altceva decât: zero (0), șir gol, $false
sau $null
pentru element pentru a arăta după Where
Există o singură definiție pentru Where
metoda.,
notă
sintaxa necesită utilizarea unui bloc de script. Parantezele sunt opționale dacăcriptblock este singurul parametru. De asemenea, nu trebuie să existe un spațiuîntre metodă și paranteza de deschidere sau bretele.
Expression
este scriptblock care este necesar pentru filtrare, mode
argument opțional permite capacități suplimentare de selecție, șinumberToReturn
argument opțional vă permite capacitatea de a limita cât de multe itemsare întors de la filtru.,p>La valori acceptabile pentru mode
:
- Default (0) – Retur toate elementele
- în Primul rând (1) – returnează primul element
- Ultima (2) – returnează ultimul element
- SkipUntil (3) – Skip elemente până când condiția este adevărată, revenirea la remainingitems
- Până când (4) – Retur toate elementele până când condiția este adevărată
- Split (5) – Întoarce o matrice de două elemente
- primul element conține elemente de potrivire
- Al doilea element conține elementele rămase
următorul exemplu arată cum să selectați toate numerele impare din matrice.,
Acest exemplu arată cum să selectați șirurile care nu sunt goale.
Default
Default
filtre de modul de elemente utilizând Expression
scriptblock.
dacă este furnizat un numberToReturn
, specifică numărul maxim de elementepentru a reveni.,
Nota
de Default
modul și First
modul reveni la prima(numberToReturn
) elemente, și pot fi folosite alternativ.
Trecut
SkipUntil
SkipUntil
modul de sare peste toate obiectele într-o colecție până la un obiect passesthe bloc de script expresie de filtrare. Apoi returnează toate collectionitems rămase fără a le testa. Doar un singur element de trecere este testat.aceasta înseamnă că colecția returnată conține atât elemente de trecere, cât și elemente care nu au fost testate.,
Numărul de articole returnate poate fi limitat prin trecerea unei valori la argumentulnumberToReturn
.
Pana
Until
modul inversează SkipUntil
modul. Se returnează toate elementele din acollection până când un element trece expresia bloc script. Odată ce un itemtrece expresia scriptblock, metoda Where
oprește procesarea articolelor.aceasta înseamnă că primiți primul set de elemente care nu trec de la metodaWhere
., După ce trece un element, restul nu este testat sau returnat.
Numărul de articole returnate poate fi limitat prin trecerea unei valori la argumentulnumberToReturn
.
Nota
Ambele Until
și SkipUntil
opereze sub premisa de a NU testa un batchof elemente.
Until
returnează elementele înainte de prima trecere.
SkipUntil
returnează toate elementele după prima trecere, inclusiv primul element care trece.,
Split
Split
modul desparte, sau grupuri de elemente de colectare în două separatecollections. Cei care trec expresia scriptblock și cei care nu.
Dacă un numberToReturn
este specificat, prima colecție, conține thepassing elemente, nu trebuie să depășească valoarea specificată.obiectele rămase, chiar și cele care trec filtrul de expresii, suntîntoarcut în a doua colecție.,
Ia de membri ai unei matrice
Pentru a obține proprietăți și metode de matrice, cum ar fi Lungimea de proprietate și metoda SetValue, utilizarea InputObject parametru al Get-Member
cmdlet.
atunci Când conducta de o serie de Get-Member
, PowerShell trimite articole oneat un timp și Get-Member
returnează tipul fiecărui element din matrice (ignoringduplicates).
când utilizați parametrul InputObject, Get-Member
returnează membrii array-ului.,
de exemplu, următoarea comandă primește membrii $a
arrayvariable.
puteți obține, de asemenea, membri ai unei matrice prin tastarea o virgulă (,), înainte de valoarea care este adus la Get-Member
cmdlet. Virgula face ca matricea să fieal doilea element într-o serie de matrice. PowerShell conducte matricele one ata timp și Get-Member
returnează membrii matrice. Ca următoarele două exemple.,
Manipularea o matrice
puteți schimba elementele într-o matrice, se adaugă un element într-o matrice, andcombine valorilor din două matrice într-o a treia serie.
Pentru a modifica valoarea unui anumit element într-o matrice, specifica arrayname și indicele elementului pe care doriți să o modificați, și apoi utilizați theassignment operator (=
) pentru a specifica o valoare nouă pentru element., De exemplu,pentru a modifica valoarea celui de-al doilea element din $a
array (indicele de poziție 1) la 10, tip:
de asemenea, puteți utiliza metoda SetValue de o matrice pentru a modifica o valoare. Următorul exemplu modifică de-a doua valoare (indice poziția 1) din $a
arrayto 500:
puteți folosi +=
operator pentru a adăuga un element la o matrice. Următorul exemplu arată cum să adăugați un element la matricea $a
.,
Nota
atunci Când utilizați +=
operator, PowerShell, de fapt, creează o nouă arraywith valorile din matrice inițială și valoarea adăugată. Acest lucru ar putea cauza probleme de performanță dacă operația se repetă de mai multe ori sau dimensiunea matricei este prea mare.nu este ușor să ștergeți elemente dintr-o matrice, dar puteți crea un nouarray care conține numai elemente selectate dintr-o matrice existentă., De exemplu,pentru a crea $t
matrice cu toate elementele în $a
array cu excepția valoarea tragerilor la poziția index 2, tip:
Pentru a combina două tablouri într-o singură matrice, utilizați operatorul ‘ + (+
). Următorul exemplu creează două matrice, le combină, și apoi afișează theresulting matrice combinate.
Ca urmare, $z
array conține 1, 3, 5, și 9.,
pentru a șterge o matrice, atribuiți o valoare de $null
la matrice. Următoarea comandă șterge matricea din variabila $a
.
$a = $null
de asemenea, puteți folosi Remove-Item
cmdlet-ului, dar atribuirea unei valori de $null
isfaster, mai ales pentru rețele mari.
matrice de zero sau unul
începând cu Windows PowerShell 3.0, o colecție de zero sau un obiect areproprietatea Count și lengthe. De asemenea, puteți indexa într-o serie de oneobiect., Această caracteristică vă ajută să evitați erorile de scripting care apar atunci când o comandă care se așteaptă ca o colecție să primească mai puțin de două articole.următoarele exemple demonstrează această caracteristică.
Zero obiecte
Un obiect
Indexare suport pentru Sistem.PowerShell 6.1 a adăugat suportul pentru accesul indexat al obiectelor Tuple, similar cu matricele.,De exemplu:
spre Deosebire de tablouri și alte obiecte de colecție, Tuplu de obiecte sunt tratate ca un obiect atunci când a trecut prin conducte sau prin parametrii care supportarrays de obiecte.
Pentru mai multe informații, consultați sistem.Tuplu.
Vezi și
- about_Assignment_Operators
- about_Hash_Tables
- about_Operators
- about_For
- about_Foreach
- about_While