Dette er et spørgsmål jeg får temmelig ofte, så jeg tænkte at skrive en artikel om det. Som titlen antyder, vil jeg vise, hvordan du kan tilføje eller fjerne elementer til et Po .ershell-array, når det er oprettet.
PowerShell Arrays
Lad os starte med definitionen af en array, som det kommer fra PowerShell dokumentation:
Et array er en data-struktur, der er udviklet til at gemme en samling af genstande., Elementerne kan være af samme type eller forskellige typer.Begyndende i Powerindo .s Po .ershell 3.0, har en samling af nul eller et objekt nogle egenskaber af arrays.
Oprettelse af et array i PowerShell er virkelig simpelt og sandsynligvis du allerede har, når man for eksempel få en liste over brugere i Active Directory
$adUsers = Get-AdUser -Filter '*' -Server $adDomainController
ovenstående vil vende tilbage en bred vifte af AD-objekter, der indeholder alle brugere matcher det anvendte filter.,
selvfølgelig kan du initialisere et tomt array med følgende syntaks
$myArray = @()# Specify object type$myArray = @()
ovenstående vil initialisere et tomt array, som vi kan, for eksempel, fylde med en ANNONCE forespørgsel eller tilføjelse af statiske elementer, som dette
$myArray = (1,2,3,4,5)
ovenstående vil tilføje elementer 1 til 5 for at myArray objekt instantiere et nyt objekt med en længde af 5
PowerShell Tilføje Elementer til et Array
Vi har se hvordan du kan oprette og tildele værdier til et array, men hvad nu, hvis vi ønsker at tilføje et sjette element til myArray?, Hvis du prøve følgende:
$myArray.Add(6)
Det vil mislykkes, med følgende undtagelse
ovenstående undtagelse er kastet som et PowerShell-array er en samling af fast størrelse og fejl er at fortælle, at det ikke kan forlænges.,
En fælles løsning er at bruge += operatør, som for eksempel
$myArray += 6# Print array's length$myArray.length6
Når du bruger += operatøren, hvad der sker under kølerhjelmen er
- PowerShell opretter et nyt array med de samme elementer som den gamle plus det nye punkt
- PowerShell vil overskrive eksisterende array med det nye indhold
Alt dette er transparent for brugeren, så du vil ikke se nogen forskel.,
Tilføj Elementer til en Array – Indtast ArrayList
Hvis du ønsker at undgå alle kopiering/flytning af data du kan instantiere myArray som en ArrayList, som er dynamisk og vil give dig mulighed for at tilføje, fjerne elementer på flue
på samme måde kan du fjerne elementer fra en ArrayList som denne
# Will corresponding item by index$myArrayList.RemoveAt(1)
Bemærk: Fjern metode vil acceptere elementets værdi, så 1 i ovenstående eksempel refererer til den værdi, der ikke elementets indeks.,
Støbt til at undertrykke Tilføje metode udskrivning new array ‘ s længde
Opret Array Liste den alternative måde
ovenstående eksempel vil kalde det Ny-Objekt metode til at instantiere et nyt ArrayList, men det er relativt dyrt i form af it-ressourcer, så ovenstående kan skrives som
$myArray = @()
ud over at være kortere, det har den ekstra fordel, at man undgår de negative resultater ramt af Ny-Objekt og optimere koden er altid en god idé, især når der beskæftiger sig med større scripts.,34f072bc0″>
Afsluttende Bemærkninger
Når du skriver kode, selv om det ikke er krævet af PowerShell, jeg forsøger at altid at erklære objektets type, som det er nyttigt at vide, på ethvert givent tidspunkt, Egenskaber og Metoder, der understøttes af objektet, så jeg altid at skrive
$myString = 'Some Text'
Snarere end
$myString = 'Some Text'
Dette er ikke nødvendigt med PowerShell men jeg synes det hjælper kode læsbarhed og forenkler arbejder med et objekt, der er erklæret 800/900 linjer op i koden, uden at skulle hoppe tilbage til variabel erklæring.,
Leave a Reply