Detta är en fråga jag får ganska ofta så tänkte jag att jag skulle skriva en artikel om det. Som titeln antyder kommer jag att visa hur du kan lägga till eller ta bort element till en Power array när den har skapats.
PowerShell-matriser
låt oss börja med definitionen av en array som den kommer från PowerShell-dokumentation:
en array är en datastruktur som är utformad för att lagra en samling objekt., Objekten kan vara av samma typ eller olika typer.Med början i Windows PowerShell 3.0 har en samling av noll eller ett objekt vissa egenskaper hos arrayer.
det är väldigt enkelt att skapa en matris i PowerShell och troligen har du redan gjort det när du till exempel får en lista över användare från Active Directory
$adUsers = Get-AdUser -Filter '*' -Server $adDomainController
ovanstående returnerar en rad ANNONSOBJEKT som innehåller alla användare som matchar det använda filtret.,
naturligtvis kan du initiera en tom matris med följande syntax
$myArray = @()# Specify object type$myArray = @()
ovanstående initierar en tom matris som vi till exempel kan fylla i med en annonsfråga eller lägga till statiska element som detta
$myArray = (1,2,3,4,5)
ovanstående kommer att lägga element 1 till 5 till myarray objekt instantiating ett nytt objekt med längd 5
PowerShell lägga till element i en array
Vi har se hur man skapar och tilldela värden till en array men vad händer om vi vill lägga till ett sjätte element till myarray?, Om du försöker följande
$myArray.Add(6)
det kommer att misslyckas med följande undantag
ovanstående undantag kastas som en Power array är en samling av fast storlek och fel berättar just det, det kan inte förlängas.,
en vanlig lösning är att använda + = – operatören som till exempel
$myArray += 6# Print array's length$myArray.length6
När du använder + = – operatören vad som händer under huven är
- PowerShell skapar en ny array med samma element som den gamla plus det nya objektet
- PowerShell kommer att skriva över befintlig array med det nya innehållet
allt detta är transparent för användaren så att du inte ser någon skillnad.,
Lägg till element i en Array – ange ArrayList
Om du vill undvika all kopiering/flyttande data kan du instansiera myArray som en ArrayList som är dynamisk och låter dig lägga till ta bort element i farten
På samma sätt kan du ta bort element från en ArrayList som denna
# Will corresponding item by index$myArrayList.RemoveAt(1)
Obs: ta bort metoden kommer att acceptera elementets värde så 1 i exemplet ovan hänvisar till värdet inte objektets index.,
Cast för att undertrycka Add method printing new array ’ s length
skapa Array List det alternativa sättet
ovanstående exempel kommer att kalla new-Object method för att instansiera en ny ArrayList men det är relativt dyrt när det gäller datorresurser så att ovanstående kan skrivas om som
Cast för att undertrycka Add method printing New array ’s length
$myArray = @()
förutom att vara kortare har den extra fördelen att undvika negativ prestanda träff av New-Object och Optimera kod är alltid en bra idé, särskilt när det handlar om större skript.,34f072bc0″>
Slutnoteringar
När du skriver kod, trots att det inte krävs av PowerShell, försöker jag alltid förklara objektets typ som det är bra att veta, vid varje given tidpunkt, egenskaper och metoder som stöds av objektet så jag alltid skriva
$myString = 'Some Text'
snarare än
$myString = 'Some Text'
detta krävs inte av PowerShell men jag tycker att det hjälper kodens läsbarhet och förenklar arbetet med ett objekt som deklarerats 800/900 rader upp i koden utan att behöva hoppa tillbaka till variabelns deklaration.,
Leave a Reply