Bei Skripten für die Automatisierung in Windows Server verwende ich oft Powershell Arrays. Damit kann ich Aufgaben mit verschiedenen Parametern ausführen und alles in ein paar Zeilen Code zusammenfassen. Wie einfach das funktioniert, zeige ich Dir anhand der Installation von Windows Server Features mit der Powershell.

Powershell Array erstellen

Ein Powershell Array speichert mehrere Werte in einer einzigen Variablen. Wenn Aufgaben mehrmals hintereinander ausgeführt werden sollen und sich jeweils nur ein Wert ändert, ist das besonders nützlich.

Für meine täglich Arbeit habe ich mir vor einiger Zeit ein Powershell Skript für die Installation von Windows Server Rollen und Features geschrieben. Dort speichere ich die verschiedenen zu installierenden Rollen und Features in einer einzigen Variable. Diese brauche ich dann nur noch dem Befehl für die Installation übergeben und schon werden die benötigten Funktionen nacheinander installiert.

Ein Powershell Array erstellst Du mit dem Zusatz „@„, gefolgt von den Werten:

$<Arrayname> = @("Wert 1,","Wert 2", ..."Wert n")

Der komplette Inhalt des Arrays kann durch die einfache Eingabe der Variablen abgerufen werden. Bestimmte Werte durch anhängen von eckigen Klammern mit dem Inhalt der Nummer, an deren Stelle der Wert steht. Wichtig: Der erste Wert trägt die Nummer „0„, nicht die „1„. Das folgende Beispiel verdeutlicht die Schreibweise und den Abruf der Werte aus dem Powershell Array:

Powershell Array erstellen
Erstellen einer Powershell Arrays und abrufen der enthaltenen Werte.

Einsatzmöglichkeiten für Powershell Arrays

Wie eingangs erwähnt, nutze ich Arrays unter anderem zum Installieren von Funktionen in Windows Server. Hierfür habe ich mir das nachfolgende Powershell Skript (nicht vollständig) geschrieben.

In diesem Skript kann ich ein Feature durch einfaches Entfernen des Zeichens # vor dessen Bezeichnung für die Installation aktivieren. Somit sammle ich alle Namen der Features in einem Powershell Array. In der abschließenden ForEach-Schleife übergebe ich die gespeicherten Werte der Reihe nach dem Befehl „Install-WindowsFeature„. Dadurch spare ich viel Zeit bei der Installation und gleichzeitig schließe ich Flüchtigkeitsfehler aus.

#Initialwert für Array "Feature" 
$Feature = @() # WICHTIG! NICHT LÖSCHEN 

# Rollen und Features - bei zu installierenden Features das # entfernen 
#$Feature += "AD-Domain-Services" # Active Directory-Domänendienste 
$Feature += "FS-Data-Deduplication" # Datei- und Speicherdienste - Datendeduplizierung 
#$Feature += "FS-DFS-Namespace" # Datei- und Speicherdienste - DFS 
$Feature += "FS-Fileserver" # Datei- und Speicherdienste 
#$Feature += "DHCP" # DHCP-Server 
#$Feature += "DNS" # DNS-Server 
# Featureinstallation 
ForEach ($element in $Feature) { 
   write-host 'Installiere Rolle/Feature: '$element 
   Install-WindowsFeature $element -IncludeManagementTools }

Weitere denkbare Anwendungsfälle für Arrays sind beispielsweise das Abrufen und Hinzufügen von Parametern bei ausgewählten Objekten im Active Directory. Sie können in fast allen Operationen mit der Microsoft Powershell äußerst nützlich sein.

Powershell Array leeren / zurücksetzen

Bei Schleifen in einem Powershell Skript kann es auch notwendig sein, die Werte eines Arrays wieder zu löschen, damit dieses neu gefüllt werden kann. Das erreichst Du ganz einfach mit dem Befehl $<arrayname> = @().

Ebenfalls interessant und lesenswert:

Support vom Experten