PowerShell ist ein sehr mächtiges Werkzeug, egal was man damit anstellen möchte. Das Anwendungsgebiet ist einfach gigantisch. Vielleicht fällt es deswegen dem einen oder anderen auch so schwer wie mir einen Einstieg in die richtige Syntax zu finden, wenn es einfach darum geht Daten auszuwerten. Denn anders als für gewöhnliche Programmiersprachen bin ich noch nicht auf eine einfache Einführung gestoßen. Dieser Beitrag soll das nachholen. Ich werde versuchen die Syntax zu erklären und anhand von einfachen Beispielen zu erklären, wie man durch Probieren und Beobachten zu den gewünschten Ergebnissen gelangt.
Dieser Beitrag soll in erster Linie diejenigen unter euch unterstützen, die via PowerShell Datenerfassen und ausgeben wollen. Die Anwendungsmöglichkeiten von PowerShell sind zu komplex um sie in einen Guide zu packen.
1. Variablen, Objekte, Kommentare
Variablen werden einfach mit einem $ Zeichen markiert. Der Aufruf von Variablen und das Setzen von Werten ist erstmal nichts besonderes.
1#Das ist ein Kommentar
2
3<# Das
4ist ein längerer Kommentar
5#>
6
7#eine beliebige Variable
8$anyVar
9
10#explizit als String deklarierte Variable
11[String] $StringVar
12
13#implizit als String angelegte Variable
14$variable = 'Das ist ein String'
15
16#implizit als Int32 angelegte Variable
17$var2 = 2
Boolsche Werte setzt man in PowerShell mit $true
oder $false
.
1$boolean = $true
Eine Konsolenausgabe erhalten wir mit Write Host
1>> Write-Host 'Ich werde in der Konsole ausgegeben
2<< Ich werde in der Konsole ausgegeben
Spannend wird es bei Arrays und Objekten. Ein Array kann direkt als solches deklariert werden, ohne Deklaration wird es aber als Object Array angelegt. Wir können ein Array mit Werten bestücken, oder auch abkürzen:
1#explizit deklarierters Int32 Array
2[int[]] $integerArray = 1,2,3,4,5,6,7,8,9
3
4#ObjectArray
5$objectArray = 1,2,3,4,5,6,7,8,9
6
7#Array mit Werten [1,2,3,4,5,6,7,8,9]
8shortCutArray = 1..9
Strings lassen sich mit dem ‚+‘ Operator verketten
1$var1 = 'Hello'
2$var2 = '!'
3$var3 = $var1 + ' World' + $var2
4>> $var3
5<< Hello World!
Eine Integer Variable wird auch einfach über ‚++‘ inkrementiert und mit ‚–‚ dekrementiert
1$zahl = 1
2
3$zahl++
4>> $zahl
5<< 2
6
7$zahl--
8>> $zahl
9<< 1
Hier eine kleine Auswahl der wichtigsten Datentypen
Deklaration | Beschreibung |
[Array] | Array |
[Bool] | True/False |
[Int32]/[Int] | Ganzzahl |
[PsObject] | Object |
[String] | Zeichenkette |
[Float] | Fließkommazahl |
Ein leeres Object Array könnt ihr einfach folgendermaßen erstellen. Es ist sehr nützlich um gesammelte Daten wie in einem Array zu bündeln, durchzuiterieren oder auszugeben:
1$newEmptyObjectArray = @()
Einem Array können andere Objekte einfach hinzugefügt werden
1$newEmptyObjectArray += 'ich werde hinzugefuegt'
Eine Abfrage erfolgt wie gewohnt
1>> $newEmptyObjectArray[0]
2<< ich werde hinzugefuegt
Spannend sind auch die PSCustomObjects für Datensammler:
1#Objekt anlegen
2$newObject = New-Object PSCustomObject
3
4#Wert hinzufügen
5$newObject | Add-Member -type NoteProperty -name 'Name' -value 'Wert'
6
7#Wert abfragen
8>> $newObject.Name
9<< Wert
10
11#Object abfragen
12>> $newObject
13<< Name
14 -----
15 Wert
2. Schleifen und Verzweigungen
If und Else funktionieren gewöhnlich. Dafür sind die Vergleichsoperatoren für den gemeinen Javaprogrammierer gewöhnungsbedürftig:
1if($true){
2 #do something
3}else if($false){
4 #do something else
5}else{
6 #do something different
7}
8#if(1 == 1)
9if(1 -eq 1)
10
11#if(4 > 1)
12if(4 -gt 1)
13
14#if(1 < 5)
15if(1 -lt 5)
16
17#if(1 != 2)
18if(1 -ne 2)
19
20#Ein Switch sieht so aus
21$switchVariable = 5
22switch ($switchVariable){
23 1 { Write-Host 'Ich werde bei 1 ausgegeben' }
24 5 { Write-Host 'Ich werde bei 5 ausgegeben' }
25 Default { Write-Host 'Ich werde ausgegeben, wenn nichts passt' }
26}
While-, For- oder Foreach Schleifen gibt es auch
1While($true){
2 #do something
3}
4
5$Numbers = 1..9
6ForEach($Number in $Numbers){
7 Write-Host $Number
8}
Fortsetzung folgt…
Wir beschäftigen uns bald noch mit weiteren Themen wie:
- Parameterübergabe
- Weitere Schleifenarten
- Filter
- Nutzereingaben
- Date
- Try/Catch
- CSV Export