Dit is een vraag die ik vrij vaak krijg, dus ik dacht er een artikel over te schrijven. Zoals de titel al aangeeft zal ik laten zien hoe je elementen kunt toevoegen of verwijderen aan een PowerShell array zodra deze is gemaakt.
PowerShell-Arrays
laten we beginnen met de definitie van een array zoals deze afkomstig is van PowerShell-documentatie:
een array is een gegevensstructuur die ontworpen is om een verzameling items op te slaan., De items kunnen hetzelfde type of verschillende types zijn.Beginnend in Windows PowerShell 3.0, heeft een verzameling van nul of één object enkele eigenschappen van arrays.
Het aanmaken van een array in PowerShell is heel eenvoudig en waarschijnlijk heb je dat al gedaan toen bijvoorbeeld een lijst met gebruikers uit Active Directory
$adUsers = Get-AdUser -Filter '*' -Server $adDomainController
het bovenstaande geeft een array van AD-objecten met alle gebruikers die overeenkomen met het gebruikte filter.,
natuurlijk kunt u een lege array initialiseren met de volgende syntaxis
$myArray = @()# Specify object type$myArray = @()
het bovenstaande zal een lege array initialiseren die we bijvoorbeeld kunnen vullen met een ad query of statische elementen zoals deze kunnen toevoegen
$myArray = (1,2,3,4,5)
het bovenstaande zal elementen 1 tot 5 toevoegen aan myArray object instantiating a new object with length of 5
PowerShell elementen toevoegen aan een array
We moeten zien hoe we waarden kunnen maken en toewijzen aan een array, maar wat als we een zesde element aan myArray willen toevoegen?, Als u het volgende probeert
$myArray.Add(6)
zal het mislukken met de volgende uitzondering
de bovenstaande uitzondering wordt gegooid als een PowerShell-array een verzameling van vaste grootte is en de fout vertelt dat het niet kan worden uitgebreid.,
een veel voorkomende oplossing is om de += operator te gebruiken, zoals bijvoorbeeld
$myArray += 6# Print array's length$myArray.length6
bij gebruik van de += operator wat er onder de motorkap gebeurt is
- PowerShell maakt een nieuwe array aan met dezelfde elementen als de oude plus het nieuwe item
- PowerShell zal bestaande array overschrijven met de nieuwe inhoud
dit alles is transparant voor de gebruiker, zodat u geen verschil zult zien.,
elementen toevoegen aan een Array – Enter ArrayList
als u alle kopiëren/verplaatsen van gegevens wilt vermijden, kunt u myArray instantiëren als een dynamische ArrayList die u toelaat om onmiddellijk verwijderelementen toe te voegen
evenzo kunt u elementen uit een ArrayList als deze verwijderen
# Will corresponding item by index$myArrayList.RemoveAt(1)
opmerking: methode verwijderen zal de waarde van het element accepteren, dus 1 in het bovenstaande voorbeeld verwijst naar de waarde, niet naar de index van het item.,
Cast te onderdrukken methode Add afdrukken new array ‘ s length
Create Array een Lijst van de alternatieve manier
Het bovenstaande voorbeeld zal de oproep van de Nieuw-Object, methode voor het concretiseren van een new ArrayList maar dit is relatief duur in termen van computing resources, zodat het bovenstaande kan worden herschreven als
$myArray = @()
naast het feit dat korter heeft het voordeel van het vermijden van de negatieve performance hit van New-Object en het optimaliseren van de code is altijd een goed idee, vooral bij het omgaan met grotere scripts.,34f072bc0″>
Sluiting Opmerkingen
Bij het schrijven van code, ondanks dat hij niet wordt vereist door de PowerShell, ik probeer altijd declareren van het type van het object als dat is goed om te weten, op een gegeven moment, Eigenschappen en Methoden die worden ondersteund door het object, zodat ik altijd schrijven
$myString = 'Some Text'
Plaats
$myString = 'Some Text'
Dit is niet verplicht door het PowerShell maar ik vind het helpt code leesbaarheid en vereenvoudigt het werken met een object verklaard 800/900 lijnen in de code, zonder dat om terug te springen naar variabele voor de verklaring.,
Leave a Reply