Over Arrays
- 08/26/2020
- 14 minuten te lezen
-
- S
- s
- c
een Korte Beschrijving
– Tags-arrays die zijn data structuren ontworpen om storecollections van items.
lange beschrijving
een array is een gegevensstructuur die is ontworpen om een verzameling items op te slaan.De items kunnen hetzelfde type of verschillende types zijn.
begint in Windows PowerShell 3.,0, een verzameling van nul of een object heeft sommige eigenschappen van arrays.
een array aanmaken en initialiseren
om een array te maken en te initialiseren, wijs je meerdere waarden toe aan een variabele. De waarden opgeslagen in de array worden gescheiden door een komma en gescheiden van de variabele naam door de toegewezen operator (=
).,
bijvoorbeeld, om een array te maken met de naam $A
die de zeven numerieke (int)waarden van 22, 5, 10, 8, 12, 9, en 80, type:
de komma kan ook worden gebruikt om een enkele item array te initialiseren door thecomma voor het enkele item te plaatsen.
Als u bijvoorbeeld een array wilt maken met de naam $B
die de enkelvoudige waarde van 7 bevat, typt u:
u kunt ook een array aanmaken en initialiseren met behulp van de range operator (..
).,Het volgende voorbeeld maakt een array met de waarden 5 tot en met 8.
hierdoor bevat $C
vier waarden: 5, 6, 7 en 8.
als er geen gegevenstype is opgegeven, maakt PowerShell elke array als een objectarray (systeem.Object). Om het gegevenstype van een array te bepalen, gebruikt u de methode GetType ()., Bijvoorbeeld, om het gegevenstype van de $A
array te bepalen, typt u:
om een sterk getypte array te maken, dat wil zeggen een array die alleen waarden van een bepaald type kan bevatten, cast u de variabele als een array type, zoals string, long of int32. Om een array te casten, ga je vooraf aan de variable naam met een array type tussen haakjes., Om bijvoorbeeld een a32-bit integer array te maken met de naam $ia
die vier gehele getallen bevat (1500, 2230, 3350,en 4000), typt u:
als gevolg hiervan kan de $ia
array alleen gehele getallen bevatten.
u kunt arrays maken die naar elk ondersteund type in de Microsoft.NET Framework. Bijvoorbeeld, de objecten die Get-Process
opvraagt om processen voor te stellen, zijn van het systeem.Diagnostiek.Procestype., Om een astronomisch getypte array van procesobjecten te maken, voert u het volgende commando in:
de operator subexpressie van de array
de operator subexpressie van de array maakt een array aan van de statements insideit. Wat het statement in de operator ook produceert, de operator plaatst het in een array. Zelfs als er nul of één object is.
de syntaxis van de array-operator is als volgt:
u kunt de array-operator gebruiken om een array van nul of één object te maken., Voorbeeld:
de array-operator is nuttig in scripts wanneer u objecten krijgt, maar weet niet hoeveel objecten u krijgt. Bijvoorbeeld:
voor meer informatie over de subexpressie-operator van de array, zie over_operators.
toegang tot en gebruik van array-elementen
het lezen van een array
u kunt naar een array verwijzen met de naam van de variabele. Als u alle elementen in de array wilt weergeven, typt u de naam van de array., Bijvoorbeeld, aangenomen dat $a
een array is die gehele getallen 0, 1, 2, tot 9 bevat; typ:
U kunt naar de elementen in een array verwijzen door een index te gebruiken, beginnend bij positie 0. Voeg het indexnummer tussen haakjes., Bijvoorbeeld om eerste element in de $a
array, type je:
Voor weergave van het derde element in de $a
array van het type:
U kunt ophalen een onderdeel van de matrix met een bereik operator voor de index. Bijvoorbeeld, om de tweede tot vijfde elementen van de array op te halen, typt u:
negatieve getallen tellen vanaf het einde van de array., Bijvoorbeeld,” -1 ” verwijst naar het laatste element van de array. Om de laatste drie elementen van de array weer te geven, typ je:
als je negatieve indexen in aflopende volgorde typt, verandert je uitvoer.
wees echter voorzichtig bij het gebruik van deze notatie. De notatiecycli van de eindgrens tot het begin van de array.,
u kunt de plus-operator (+
) gebruiken om een bereik te combineren met een lijst van elementen in een array. Om bijvoorbeeld de elementen op indexposities 0, 2 en 4 tot en met 6 weer te geven, typt u:
ook kunt u de plusoperator gebruiken om meerdere bereiken en afzonderlijke elementen weer te geven., Bijvoorbeeld, om elementen nul tot twee, vier tot zes, en het element op achtste positie type:
iteraties over array-elementen
u kunt ook loopingconstructies gebruiken, zoals ForEach, For, and While loops, om naar de elementen in een array te verwijzen. Als u bijvoorbeeld een ForEach-lus wilt gebruiken om de elementen in de $a
array weer te geven, typt u:
de foreach-lus itereert door de array en geeft elke waarde in de array terug tot aan het einde van de array.,
de lus For is handig wanneer u tellers verhoogt terwijl u de elementen in een array onderzoekt. Als u bijvoorbeeld een For-lus wilt gebruiken om elke andere waarde in een array te retourneren, typt u:
U kunt een While-lus gebruiken om de elementen in een array weer te geven totdat een bepaalde voorwaarde niet langer waar is., Bijvoorbeeld om de elementen in de $a
array terwijl de array-index van minder dan 4, type je:
Eigenschappen van matrices
aantal of de Lengte of de LongLength
om Te bepalen hoeveel items worden in een array gebruik de Length
woning of deCount
alias. Longlength
is nuttig als de array meer dan 2,147,483,647 elementen bevat.
Rank
geeft het aantal dimensies in de array terug., De meeste arrays in PowerShell hebben slechts één dimensie. Zelfs als je denkt dat je een multidimensionalarray bouwt; zoals het volgende voorbeeld:
het volgende voorbeeld laat zien hoe je een echt multidimensionale array maakt met behulp van het.NET Framework.
Methods of arrays
Clear
stelt alle elementwaarden in op de standaardwaarde van het elementtype van de array.De methode Clear () reset de grootte van de array niet.,
in het volgende voorbeeld $a
is een array van objecten.
in dit voorbeeld wordt $intA
expliciet getypt om gehele getallen te bevatten.
ForEach
maakt het mogelijk om over alle elementen in de array te herhalen en een bepaalde operatie uit te voeren voor elk element van de array.
de ForEach methode heeft meerdere overbelasting die verschillende bewerkingen uitvoert.,
ForEach(scriptblock expressie)
ForEach (scriptblock expressie, object argumenten)
deze methode is toegevoegd in PowerShell v4.
Note
de syntaxis vereist het gebruik van een scriptblok. Haakjes zijn optioneel als het scriptblock de enige parameter is. Ook mag er geen ruimte zijn tussen de methode en de openingshaakje of brace.
het volgende voorbeeld laat zien hoe de foreach methode wordt gebruikt. In dit geval is de bedoeling dat de kwadraatwaarde van de elementen in de array wordt gegenereerd.,
net als de -ArgumentList
parameter van ForEach-Object
, staat de arguments
parameter het doorgeven van een array van argumenten toe aan een script blockconfigured om ze te accepteren.
voor meer informatie over het gedrag van ArgumentList, zie over_splatting.,
ForEach (type convertToType)
de ForEach
methode kan worden gebruikt om snel de elementen naar een andertype te casten; het volgende voorbeeld laat zien hoe een lijst met tekenreeksdatums naar type kan worden geconverteerd.
ForEach(string propertyName)
ForEach(string propertyName, object newValue)
de ForEach
methode kan ook worden gebruikt om snel propertyvalues voor elk item in de collectie.,
ForEach(string methodName)
ForEach(string methodName, objectargumenten)
ten slotte kunnen ForEach
methoden worden gebruikt om een methode uit te voeren op elk item in de collectie.
net als de -ArgumentList
parameter van ForEach-Object
, staat de arguments
parameter het doorgeven van een array van argumenten toe aan een script blockconfigured om ze te accepteren.
opmerking
start in Windows PowerShell 3.,0 het ophalen van eigenschappen en het uitvoeren van methoden voor elk item in een collectie kan ook worden bereikt met behulp van “methods of scalar objects and collections” u kunt meer hierover lezen hier over_methoden.
waarbij
toestaat om de elementen van de array te filteren of selecteren. Het script moet op iets anders evalueren dan: nul( 0), lege tekenreeks, $false
of $null
Voor het element dat getoond wordt na de Where
er is één definitie voor de Where
methode.,
opmerking
de syntaxis vereist het gebruik van een scriptblok. Haakjes zijn optioneel als het scriptblock de enige parameter is. Ook mag er geen ruimte zijn tussen de methode en de openingshaakje of brace.
het Expression
is scriptblock dat vereist is voor filtering, het mode
optioneel argument maakt extra selectiemogelijkheden mogelijk, en hetnumberToReturn
optioneel argument maakt het mogelijk om te beperken hoeveel items uit het filter worden geretourneerd.,p>the acceptable values for mode
are:
- Default (0) – Return all items
- First (1) – Return the first item
- Last (2) – Return the last item
- SkipUntil (3) – Skip items until condition true, the return the remainingitems
- Until (4) – Return all items until (4) True
- Split (5) – Geef een array van twee elementen
- het eerste element bevat overeenkomende items
- het tweede element bevat de resterende items
het volgende voorbeeld laat zien hoe alle oneven getallen uit de array worden geselecteerd.,
dit voorbeeld laat zien hoe u de tekenreeksen selecteert die niet leeg zijn.
standaard
de mode filtert items met behulp van de Expression
scriptblock.
als een numberToReturn
wordt verstrekt, geeft dit het maximum aantal items aan dat moet worden geretourneerd.,
Note
zowel de mode en First
mode retourneren de eerste(numberToReturn
) items, en kunnen door elkaar worden gebruikt.
Laatste
SkipUntil
de modus SkipUntil
slaat alle objecten in een verzameling over totdat een object het script block expression filter passeert. Het retourneert dan alle resterende collectionitems zonder ze te testen. Slechts één passerend item wordt getest.
Dit betekent dat de geretourneerde collectie zowel passerende als niet-passerende items bevat die niet zijn getest.,
het aantal geretourneerde items kan worden beperkt door een waarde door te geven aan het argumentnumberToReturn
.
totdat
de Until
modus de SkipUntil
modus omdraait. Het retourneert alle items in acollection totdat een item de script blok expressie passeert. Zodra een item de scriptblock expressie passeert, stopt deWhere
methode met het verwerken van items.
Dit betekent dat u de eerste set niet-passerende items ontvangt van deWhere
methode., Nadat één item is gepasseerd, wordt de rest niet getest of geretourneerd.
het aantal geretourneerde items kan worden beperkt door een waarde door te geven aan het argumentnumberToReturn
.
Note
beide Until
en SkipUntil
werken onder de premisse van het niet testen van een reeks items.
Until
geeft de items vóór de eerste pass terug.
SkipUntil
geeft alle items terug na de eerste pas, inclusief het eerste passerende item.,
splitsen
deSplit
modus splitst, of groepeert collecties in twee gescheiden collecties. Degenen die de scriptblock expressie passeren, en degenen die dat niet doen.
als een numberToReturn
is gespecificeerd, bevat de eerste verzameling de passerende items, die de opgegeven waarde niet mogen overschrijden.
de overige objecten, zelfs die welke het expressiefilter passeren, worden in de tweede verzameling geturnd.,
haal de leden van een array
om de eigenschappen en methoden van een array te verkrijgen, zoals de lengte-eigenschap en de SetValue-methode, gebruik de Inputobjectparameter van de Get-Member
cmdlet.
wanneer u een array pijpt naar Get-Member
, verzendt PowerShell de items een keer en Get-Member
geeft het type van elk item in de array terug (igningduplicates).
wanneer u de InputObject parameter gebruikt, geeft Get-Member
de leden van de array terug.,
bijvoorbeeld, het volgende commando krijgt de leden van de $a
arrayvariable.
u kunt ook de leden van een array krijgen door een komma (,) te typen voor de waarde die wordt doorgesluisd naar de Get-Member
cmdlet. De komma maakt de array het tweede item in een array van arrays. PowerShell pipes de arrays een voor een en Get-Member
geeft de leden van de array. Zoals de volgende twee voorbeelden.,
Manipulating an array
U kunt de elementen in een array wijzigen, een element aan een array toevoegen en de waarden van twee arrays combineren in een derde array.
om de waarde van een bepaald element in een array te wijzigen, specificeer je de arraynaam en de index van het element dat je wilt wijzigen, en gebruik dan de assignment operator (=
) om een nieuwe waarde voor het element te specificeren., Als u bijvoorbeeld de waarde van het tweede item in de $a
array (indexpositie 1) wilt wijzigen naar 10,typt u:
U kunt ook de SetValue-methode van een array gebruiken om een waarde te wijzigen. Het volgende voorbeeld verandert de tweede waarde (indexpositie 1) van de $a
arrayto 500:
u kunt de +=
gebruiken om een element aan een array toe te voegen. Het volgende voorbeeld laat zien hoe je een element toevoegt aan de $a
array.,
Note
wanneer u de operator +=
gebruikt, maakt PowerShell in feite een nieuwe arrayaan met de waarden van de oorspronkelijke array en de toegevoegde waarde. Dit kan leiden tot prestatieproblemen als de operatie meerdere keren wordt herhaald of de grootte van de array te groot is.
Het is niet eenvoudig om elementen uit een array te verwijderen, maar u kunt een newarray maken die alleen geselecteerde elementen van een bestaande array bevat., Bijvoorbeeld,om de $t
array aan te maken met alle elementen in de $a
array behalve de waarde op indexpositie 2, typ:
om twee arrays te combineren tot één array, gebruik de plus operator (+
). Het volgende voorbeeld maakt twee arrays, combineert ze, en toont dan de resulterende gecombineerde array.
als gevolg hiervan bevat de $z
array 1, 3, 5 en 9.,
om een array te verwijderen, wijs een waarde van $null
toe aan de array. Het volgende commando verwijdert de array in de $a
variabele.
$a = $null
u kunt ook de Remove-Item
cmdlet gebruiken, maar het toewijzen van een waarde van $null
isfaster, vooral voor grote arrays.
Arrays van nul of één
beginnend in Windows PowerShell 3.0 heeft een verzameling van nul of één object de eigenschap aantal en lengte. Ook kun je indexeren in een array van oneobject., Deze functie helpt u bij het voorkomen van scripting fouten die optreden wanneer een commando dat verwacht dat een collectie krijgt minder dan twee items.
de volgende voorbeelden tonen deze functie.
Nulobjecten
Eén object
Indexeringsondersteuning voor systeem.Tuple-objecten
PowerShell 6.1 heeft ondersteuning toegevoegd voor geïndexeerde toegang van Tuple-objecten, vergelijkbaar met arrays.,Bijvoorbeeld:
In tegenstelling tot arrays en andere collectieobjecten, worden Tupelobjecten als één object behandeld wanneer ze door de pijplijn worden geleid of door parameters die de stralen van objecten ondersteunen.
voor meer informatie, zie systeem.Tuple.
zie ook
- about_Assignment_Operators
- about_Hash_Tables
- about_Operators
- about_For
- about_Foreach
- about_While