PowerShell Arrays: Hur man skapar och använder dem

Variabler är den mest grundläggande datastrukturen i alla typer av kodning(any type of coding) . Men enstaka variabler är knappast tillräckliga för de flesta syften, särskilt när det handlar om mer komplexa algoritmer.

Det är där arrayer kommer in. Oavsett om det är C++ eller Python , finns arrays i alla programmeringsspråk i någon form. Men hur är det med Windows PowerShell(Windows PowerShell) ? Hur fungerar PowerShell- arrayer? Hur använder du dem? Vad är deras syntax? Låt oss ta reda på.

PowerShell Arrays 101

Enkelt(Simply) uttryckt är en array bara en strukturerad samling av variabler. Tanken är att eliminera besväret med att hålla reda på dussintals namn genom att kollapsa relaterade variabler till en numrerad uppsättning.

I PowerShell kan du skapa en variabel genom att sätta $-symbolen före ett variabelnamn. Till exempel:

$prime = 13

Variabeln kan innehålla vilken datatyp som helst, från siffror till strängar. Du behöver bara använda dubbla eller enkla citattecken för att ange en sträng.

$name = “Levin”

Nu för att skapa en ny array, tilldela helt enkelt flera värden till samma variabel, separerade med kommatecken. Så här:

$week = “Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”, “Sunday”

Vissa människor föredrar att explicit gjuta en variabel i en array för att undvika förvirring, även om det inte är nödvändigt. För att göra detta, sätt värdena inom parentes med @-symbolen.

$week = @(“Monday”, “Tuesday”, “Wednesday”, “Thursday”, “Friday”, “Saturday”, “Sunday”)

Detta är vanligtvis praktiskt när du försöker lägga utdata från andra kommandon i en array, där du inte kan skriva dem manuellt i rätt format.

Skapa en Array

Vi har redan sett den vanligaste metoden för att skapa en array. Men beroende på situationen finns det andra sätt som kan vara mer lämpliga. Om du till exempel vill skapa en array som innehåller ett antal nummer kan du använda intervalloperatorn:

$digits = (0..9)

Detta kommer att skapa en matris med alla tio siffror från noll till nio. Du kan också initiera en tom array, om du bara vill ha en plats att lagra värden på senare.

$values = @()

Flera(Multiple) arrayer kan till och med kapslas in i varandra, även om denna typ av användning kan bli förvirrande mycket snabbt.

$coordinates = @(
    (5, 10, 23),
    (11, 7, 16)
)

Som standard kan en array lagra vilken variabeltyp som helst, vare sig det är siffror, strängar eller en blandning av båda. Men du kan uttryckligen definiera en typ om du vill begränsa värdena i den. Till exempel:

[int[]] $numbers = 2,3,4,5

På så sätt kan matrisen bara innehålla heltal. Om du försöker tilldela någon annan typ av värde till den kommer ett fel att returneras. Detta kan vara användbart för att förhindra enkla fel för arrayer som uteslutande arbetar med numeriska värden, eftersom inmatning av en sträng i en variabel som ska användas i beräkningar kommer att skapa problem.

Åtkomst till Arrays

Hittills har vi sett flera metoder för att skapa arrayer som innehåller olika typer av data. Men hur går du tillväga för att komma åt denna data?

PowerShell- arrayer använder samma format som används av andra programmeringsspråk. Varje arrayvariabel kan nås med dess indexnummer. Till exempel:

$var = $numbers[5]

Detta kommer att kopiera värdet som är lagrat i index fem av arrayen $numbers i variabeln $varObservera att matrisindex börjar räknas från 0, så det första objektet nås med noll.

Om vi ​​skulle skriva ut detta, till exempel:

“$days[2]”

Vi får onsdag, inte tisdag.

Du kan använda samma metod för att ändra dessa värden också. Till exempel kommer följande kommando att ändra det andra elementet i arrayen till noll:

$numbers[1] = 0

Du kan också lägga till fler element i en befintlig matris istället för att ändra värdena för aktuella poster bara genom att lägga till dem som ett aritmetiskt uttryck.

$names += “Johny”

Denna metod kan också användas för att lägga till flera poster samtidigt, eller till och med hela arrayer.

$names += “Charlie, Liam, Teresa”

$names += $surnames

Den kommaseparerade metoden gäller även för åtkomst till flera arrayelement. Om du anger detta, till exempel, lagras de första fem elementen i $days i $weekdays .

$weekdays = $days[0,1,2,3,4]

Itererar genom arrayer

Att manuellt komma åt vissa element i en array är bra, men om du vill utföra åtgärder på hela innehållet i en array kan det bli tråkigt. Ett mer elegant tillvägagångssätt är att använda en For-loop.

För loopar kan systematiskt gå igenom alla element i en array, bearbeta varje värde enligt instruktionerna. Så här kan du konstruera en sådan slinga:

For ($i = 0 ; $i -lt $days.Length ; $i++){
    $days[$i]}

Funktionen array.Length returnerar storleken på arrayen, vilket i princip är antalet element i den. Detta kan kopplas in i en For-loops testuttrycksparameter för att heltäckande iterera över alla element.

Foreach -(Foreach) loopen och Foreach -object-loopen kan göra samma sak med ett ännu smalare PowerShell- skript.

Foreach ($day in $days){
    $day}

Detta sparar dig ansträngningen att bestämma arrayens storlek och lämnar detaljerna kvar för PowerShell att hantera.

När ska du använda PowerShell-arrayer(PowerShell Arrays)

Den största källan till buggar i ett komplext skript är felaktigt refererade variabler. Detta händer på grund av närvaron av ett stort antal unikt namngivna variabler, vilket gör det svårt att komma ihåg deras syfte.

Den enklaste lösningen för det här problemet är att använda arrayer i stor utsträckning. Alla variabler som är relaterade på något sätt kan tilldelas till en enda array och nås via deras indexnummer.

Microsoft PowerShells främsta användningsfall är automatisering, och arrayer spelar en avgörande roll i det. Objekten som returneras av PowerShell -cmdlets kan lagras i arrayer och itereras över. Detta gör att sekventiella uppgifter kan utföras automatiskt, vilket avsevärt förenklar systemadministrationen.



About the author

Jag är en Windows-specialist och har arbetat i mjukvarubranschen i över 10 år. Jag har erfarenhet av både Microsoft Windows och Apple Macintosh-system. Mina kunskaper inkluderar: fönsterhantering, hårdvara och ljud, apputveckling med mera. Jag är en erfaren konsult som kan hjälpa dig att få ut det mesta av ditt Windows-system.



Related posts