Dette er et spørsmål jeg får ganske ofte, så jeg tenkte å skrive en artikkel om det. Som tittelen antyder, vil jeg vise hvordan du kan legge til eller fjerne elementer til en PowerShell utvalg når det har blitt opprettet.
PowerShell-Matriser
La oss starte med definisjonen av en matrise som det kommer fra PowerShell dokumentasjon:
En matrise er en datastruktur som er designet for å lagre en samling av elementer., Elementene kan være av samme type eller ulike typer.Begynnelsen i Windows PowerShell 3.0, en samling av null eller at et objekt har noen egenskaper av matriser.
Opprette en array i PowerShell er veldig enkel, og mest sannsynlig du allerede har gjort når, for eksempel, får du en liste over brukere fra Active Directory –
$adUsers = Get-AdUser -Filter '*' -Server $adDomainController
Den ovenfor vil returnere en rekke AD-objekter som inneholder alle brukere matchende brukt filter.,
selvfølgelig kan du initialisere en tom matrise med følgende syntaks for
$myArray = @()# Specify object type$myArray = @()
Den ovenfor vil kreve en tom matrise som vi kan, for eksempel, fyll med en AD søkeord eller legge til statiske elementer som dette
$myArray = (1,2,3,4,5)
over vil du legge til elementer 1 til 5 for å min_tabell objekt å starte et nytt objekt med en lengde på 5
PowerShell Legge til Elementer til en Matrise
Vi må se hvordan å opprette og tilordne verdier til en matrise men hva hvis vi ønsker å legge til en sjette element for å min_tabell?, Hvis du prøver følgende
$myArray.Add(6)
Det vil mislykkes med følgende unntak
De ovennevnte unntak blir kastet som et PowerShell-matrise er en samling av fast størrelse og feil er å fortelle akkurat det, det kan ikke være lengre.,
En vanlig løsning er å bruke += operatør som for eksempel
$myArray += 6# Print array's length$myArray.length6
Når du bruker += operatør hva som skjer under panseret er
- PowerShell skaper en ny matrise med de samme elementene som den gamle plus den nye elementet
- PowerShell vil overskrive eksisterende matrise med nytt innhold
Alle av dette er transparent for brukeren, slik at du ikke se noen forskjell.,
Legg til Elementer til en Matrise Inn ArrayList
Hvis du ønsker å unngå alle kopiering/flytting av data du kan instantiate min_tabell som en ArrayList som er dynamisk og vil tillate deg å legge til fjerne elementer på fly
du kan fjerne elementer fra en ArrayList som dette
# Will corresponding item by index$myArrayList.RemoveAt(1)
Merk: Fjern-metoden vil godta elementets verdi så 1 i eksemplet ovenfor refererer til verdien ikke elementet ‘ s indeks.,
Støpt til å undertrykke Add-metoden utskrift new array lengde
Opprette Array Liste alternativ måte
I eksemplet ovenfor vil kalle den Ny-Objekt metode for å instantiate en ny ArrayList, men dette er relativt dyrt i form av dataverktøy så ovenfor kan bli omskrevet som
$myArray = @()
I tillegg til å være kortere, det har den ekstra fordelen av å unngå de negative resultater truffet av Ny Objekt-og optimalisere koden er alltid en god idé, spesielt når du arbeider med større skript.,34f072bc0″>
Avsluttende Merknader
Når du skriver kode, til tross for ikke å være nødvendig med PowerShell, jeg prøver å alltid erklærer objektets type som det er nyttig å vite, til enhver tid, Egenskaper og Metoder som støttes av objektet, slik jeg alltid skrive
$myString = 'Some Text'
Snarere enn
$myString = 'Some Text'
Dette er ikke kreves av PowerShell, men jeg synes det hjelper koden er lettere å lese og enklere å arbeide med et objekt erklært 800/900 linjer opp i koden uten å måtte hoppe tilbake til variabelen ‘ s erklæring.,
Leave a Reply