# Powershell

# Grundlagen



# Thema 0  -  Powershell Wissen

#### **Powershell** 

##### ist eine lose typisierte Programmiersprache und arbeitet mit implizierten Konvertierungen

> Skriptsprache: eine Programmiersprache die für Skripte verwendet wird, arbeitet mit meist nach dem Stapelverarbeitungsmodus und ist meist in interpritiert. (Interpreter)

# Grundlagen - Operatoren

PowerShell – Grundlagen: Operatoren

---

## Überblick

Operatoren in PowerShell werden verwendet für:

- Vergleiche  
- String-Suche  
- Listenprüfungen  
- Berechnungen  
- Zuweisungen  

---

## Vergleichsoperatoren

```powershell
-eq   # gleich (equal)
-ne   # ungleich (not equal)
-gt   # größer als (greater than)
-lt   # kleiner als (less than)
-ge   # größer gleich (greater equal)
-le   # kleiner gleich (less equal)

Clear-Host

"Apfel" -eq "Birne"
"Apfel" -ceq "apfel"   # case sensitive Vergleich

12 -eq 12   # true
12 -ne 15   # true
12 -gt 9    # true
12 -lt 9    # false
12 -ge 11   # true
12 -le 12   # true

"Apfel" -lt "Birne"   # alphabetischer Vergleich

# Grundlagen Zusammenfassung

**Variablen &amp; Strings**

- Variablen starten mit `$` und werden mit `=` gesetzt → `$x = 5` (Typ automatisch)
- Zugriff immer mit `$`
- `"..."` → Variable wird **ersetzt** (ausgewertet) → `"Wert: $x"` → Wert: 5
- `'...'` → Variable bleibt **Text** → `'Wert: $x'` → Wert: $x
- `=` → Zuweisung | Vergleich z. B. mit `-eq`

👉 Merksatz:  
**Doppelte Anführungszeichen = Wert wird eingesetzt**  
**Einfache Anführungszeichen = bleibt nur Text**

---

**Datentypen**

- PowerShell ist **dynamisch typisiert** → Typ wird automatisch erkannt (`$x = 5`, `$y = "Text"`)
- Häufige Typen: String (`"Text"`), Int (`5`), Double (`3.14`), Boolean (`$true/$false`), Array (`1,2,3`)
- Typ kann **explizit gesetzt** werden → `[int]$x = 5`, `[string]$name = "Derick"`
- Typ prüfen → `$x.GetType()`

👉 Wichtig:

- Rechnen nur mit Zahlen sinnvoll (`"5" + 5` → kann unerwartet sein)
- Arrays werden mit Komma erstellt → `$arr = 1,2,3`

👉 Merksatz:  
**Typ kommt automatisch – kann aber festgelegt werden**

---

- Ausgabe → 
    - `Write-Host "Text"` (nur Anzeige, nicht weiter nutzbar)
    - `Write-Output "Text"` oder `"Text"` (**empfohlen, weiterverarbeitbar**)
- Eingabe → `$x = Read-Host "Frage"`
- Datum → `Get-Date`
- Konsole löschen → `Clear-Host` / `cls` (beides leert die Konsole)

<details id="bkmrk-%F0%9F%91%89-beispiele-anzeigen"><summary>👉 Beispiele anzeigen</summary>

  
```powershell
# Ausgabe 'Write-Output'

# Variante 1 (offiziell)
Write-Output "Hallo"   # → Ausgabe: Hallo

# Variante 2 (Kurzform)
"Hallo"                # → Ausgabe: Hallo

# Konsole löschen 'cls'

# Variante 1 (voller Befehl)
Clear-Host             # → Konsole wird geleert

# Variante 2 (Kurzform / Alias)
cls                    # → Konsole wird geleert

```

</details>  
👉 Merksatz: **Write-Output besser als Write-Host | Read-Host Input einlesen | Cls entspricht Clear-Host**

---

**Rechnen**

- Grundrechenarten → `+` `-` `*` `/`
- Beispiele → `$x = 5 + 3` | `$y = 10 - 2` | `$z = 4 * 2` | `$a = 8 / 2`
- Punkt vor Strich gilt → `$r = 2 + 3 * 4` → Ergebnis: 14
- Klammern steuern Reihenfolge → `$r = (2 + 3) * 4` → Ergebnis: 20
- Zuweisung kombiniert → `$x += 5` (gleich `$x = $x + 5`)

<details id="bkmrk-%F0%9F%91%89-beispiel-anzeigen-"><summary>👉 Beispiel anzeigen</summary>

  
```powershell
# Variante 1 (lang)
$x = $x + 5   # → erhöht $x um 5

# Variante 2 (kurz)
$x += 5       # → erhöht $x um 5

```

</details>👉 Merksatz: **Operatoren wie Mathe | Reihenfolge beachten | Klammern nutzen**

---

**Operatoren**

- Vergleich → `-eq` `-ne` `-gt` `-lt` → vergleichen Werte (True/False)
- Rechnen → `+` `-` `*` `/`
- Zuweisung → `=` `+=`
- String → `-like` (Wildcard) | `-match` (Regex)
- Listen → `-contains` (Liste enthält Wert) | `-in` (Wert in Liste)
- Logisch → `-and` `-or` `-not`
- Zusatz → `-not` (verneint) | `-c` (case-sensitive, z. B. `-ceq`)

<details id="bkmrk-%F0%9F%91%89-beispiele-anzeigen-1"><summary>👉 Beispiele anzeigen</summary>

  
```powershell
# Vergleich
5 -eq 5        # → True
5 -gt 3        # → True

# Rechnen
2 + 3          # → 5

# Zuweisung
$x = 5
$x += 2        # → 7

# String
"Test" -like "T*"    # → True
"Test" -match "es"   # → True

# Listen
1,2,3 -contains 2    # → True
2 -in 1,2,3          # → True

# Logisch
($true -and $false)  # → False

# Zusatz
5 -ne 3              # → True
"Test" -ceq "test"   # → False (Groß/Klein beachten)

```

</details>---

**PowerShell Verzweigungen (kurz &amp; knapp)**

- `if / else` → führt Code je nach Bedingung aus
- `switch` → prüft eine Variable gegen mehrere Fälle (übersichtlicher als viele ifs)

<details id="bkmrk-%F0%9F%91%89-beispiele-anzeigen-2"><summary>👉 Beispiele anzeigen</summary>

  
```powershell
# if / else
$x = 10

if ($x -gt 5) {
    "größer als 5"
} else {
    "kleiner oder gleich 5"
}

# switch
$farbe = "rot"

switch ($farbe) {
    "rot"   { "Stop" }
    "grün"  { "Go" }
    default { "Unbekannt" }
}

```

</details>👉 Merksatz: **if = einfache Entscheidung | switch = viele Fälle übersichtlich**

# Powershell Tests

# 1. Test Klausur Vorbereitung

**1. Wofür wird der Operator `-eq` verwendet?**

<details id="bkmrk-antwort-anzeigen-der"><summary>Antwort anzeigen</summary>

Der Operator `-eq` wird verwendet, um zwei Werte auf Gleichheit zu vergleichen.

</details>---

**2. Was ist der Unterschied zwischen `-eq` und `-ceq`?**

<details id="bkmrk-antwort-anzeigen--eq"><summary>Antwort anzeigen</summary>

`-eq` ist nicht case sensitive,  
`-ceq` ist case sensitive (Groß-/Kleinschreibung wird berücksichtigt).

</details>---

**3. Was prüft der Operator `-ne`?**

<details id="bkmrk-antwort-anzeigen-ob-"><summary>Antwort anzeigen</summary>

Ob zwei Werte ungleich sind.

</details>---

**4. Was bedeutet `-gt`?**

<details id="bkmrk-antwort-anzeigen-%E2%80%9Egr"><summary>Antwort anzeigen</summary>

„greater than“ → größer als.

</details>---

**5. Was bedeutet `-le`?**

<details id="bkmrk-antwort-anzeigen-%E2%80%9Ele"><summary>Antwort anzeigen</summary>

„less equal“ → kleiner oder gleich.

</details>---

**6. Was passiert bei folgendem Ausdruck?**

`"Apfel" -lt "Birne"`

<details id="bkmrk-antwort-anzeigen-es-"><summary>Antwort anzeigen</summary>

Es wird ein alphabetischer Vergleich durchgeführt.  
Der Ausdruck ergibt true, da „Apfel“ vor „Birne“ kommt.

</details>---

**7. Wofür wird der Operator `-like` verwendet?**

<details id="bkmrk-antwort-anzeigen-f%C3%BCr"><summary>Antwort anzeigen</summary>

Für einfache String-Vergleiche mit Wildcards (`*` und `?`).

</details>---

**8. Was bedeutet das `*` bei `-like`?**

<details id="bkmrk-antwort-anzeigen-%2A-s"><summary>Antwort anzeigen</summary>

`*` steht für beliebig viele Zeichen (auch kein Zeichen).

</details>---

**9. Was bedeutet das `?` bei `-like`?**

<details id="bkmrk-antwort-anzeigen-%3F-s"><summary>Antwort anzeigen</summary>

`?` steht für genau ein Zeichen.

</details>---

**10. Was prüft folgender Ausdruck?**

`"Apfel" -like "A*"`

<details id="bkmrk-antwort-anzeigen-ob--1"><summary>Antwort anzeigen</summary>

Ob der String mit „A“ beginnt.

</details>---

**11. Wofür wird der Operator `-match` verwendet?**

<details id="bkmrk-antwort-anzeigen-f%C3%BCr-1"><summary>Antwort anzeigen</summary>

Für die Suche nach Teilstrings mittels regulärer Ausdrücke (Regex).

</details>---

**12. Unterschied zwischen `-match` und `-cmatch`?**

<details id="bkmrk-antwort-anzeigen--ma"><summary>Antwort anzeigen</summary>

`-match` ist nicht case sensitive,  
`-cmatch` ist case sensitive.

</details>---

**13. Was bedeutet `-notmatch`?**

<details id="bkmrk-antwort-anzeigen-der-1"><summary>Antwort anzeigen</summary>

Der Ausdruck ist wahr, wenn das Suchmuster NICHT enthalten ist.

</details>---

**14. Was macht der Operator `-contains`?**

<details id="bkmrk-antwort-anzeigen-er-"><summary>Antwort anzeigen</summary>

Er prüft, ob eine Liste (links) einen bestimmten Wert enthält.

</details>---

**15. Was ist der Unterschied zwischen `-contains` und `-in`?**

<details id="bkmrk-antwort-anzeigen--co"><summary>Antwort anzeigen</summary>

`-contains` → Liste steht links  
`-in` → Liste steht rechts

</details>---

**16. Was prüft folgender Ausdruck?**

`"Apfel" -in "Birne","Apfel"`

<details id="bkmrk-antwort-anzeigen-ob--2"><summary>Antwort anzeigen</summary>

Ob „Apfel“ in der rechten Liste enthalten ist → Ergebnis: true

</details>---

**17. Wofür steht `-notin`?**

<details id="bkmrk-antwort-anzeigen-der-2"><summary>Antwort anzeigen</summary>

Der Ausdruck ist wahr, wenn ein Wert NICHT in der Liste enthalten ist.

</details>---

**18. Nenne zwei mathematische Operatoren in PowerShell.**

<details id="bkmrk-antwort-anzeigen-zum"><summary>Antwort anzeigen</summary>

Zum Beispiel:

`+` (Addition)  
`*` (Multiplikation)

</details>---

**19. Wofür wird der Operator `%` verwendet?**

<details id="bkmrk-antwort-anzeigen-f%C3%BCr-2"><summary>Antwort anzeigen</summary>

Für die Modulo-Berechnung (Rest einer Division).

</details>---

**20. Was macht der Operator `+=`?**

<details id="bkmrk-antwort-anzeigen-er--1"><summary>Antwort anzeigen</summary>

Er addiert einen Wert zu einer Variable und speichert das Ergebnis in der gleichen Variable.

</details>---

**21. Was macht der Operator `-=`?**

<details id="bkmrk-antwort-anzeigen-er--2"><summary>Antwort anzeigen</summary>

Er subtrahiert einen Wert von einer Variable.

</details>---

**22. Wofür wird `*=` verwendet?**

<details id="bkmrk-antwort-anzeigen-f%C3%BCr-3"><summary>Antwort anzeigen</summary>

Für Multiplikation mit gleichzeitiger Zuweisung.

</details>---

**23. Was bedeutet der Operator `++`?**

<details id="bkmrk-antwort-anzeigen-er--3"><summary>Antwort anzeigen</summary>

Er erhöht den Wert einer Variable um 1.

</details>---

**24. Was bedeutet der Operator `--`?**

<details id="bkmrk-antwort-anzeigen-er--4"><summary>Antwort anzeigen</summary>

Er verringert den Wert einer Variable um 1.

</details>---

**25. Warum wird in PowerShell `-eq` statt `=` verwendet?**

<details id="bkmrk-antwort-anzeigen-%3D-i"><summary>Antwort anzeigen</summary>

`=` ist ein Zuweisungsoperator,  
`-eq` ist ein Vergleichsoperator.

</details>---

**26. Was bedeutet `-ge`?**

<details id="bkmrk-antwort-anzeigen-%E2%80%9Egr-1"><summary>Antwort anzeigen</summary>

„greater equal“ → größer oder gleich.

</details>---

**27. Was bedeutet `-lt`?**

<details id="bkmrk-antwort-anzeigen-%E2%80%9Ele-1"><summary>Antwort anzeigen</summary>

„less than“ → kleiner als.

</details>---

**28. Was prüft folgender Ausdruck?**

`12 -gt 9`

<details id="bkmrk-antwort-anzeigen-ob--3"><summary>Antwort anzeigen</summary>

Ob 12 größer als 9 ist → Ergebnis: true

</details>---

**29. Was prüft folgender Ausdruck?**

`12 -le 12`

<details id="bkmrk-antwort-anzeigen-ob--4"><summary>Antwort anzeigen</summary>

Ob 12 kleiner oder gleich 12 ist → Ergebnis: true

</details>---

**30. Was prüft folgender Ausdruck?**

`"Apfel","Birne" -contains "Birne"`

<details id="bkmrk-antwort-anzeigen-ob--5"><summary>Antwort anzeigen</summary>

Ob „Birne“ in der Liste enthalten ist → Ergebnis: true

</details>---

## Selbstbewertung

0–10 richtig → ❌ wiederholen  
11–20 richtig → ⚠️ unsicher  
21–27 richtig → ✅ gut vorbereitet  
28–30 richtig → 🔥 prüfungsbereit

# PowerShell – Klausurvorbereitung (Übersicht + Test)

PowerShell – Klausurvorbereitung (Übersicht + Test)

---

### Grundlagen

PowerShell ist eine lose typisierte Skriptsprache und arbeitet mit automatischer Typkonvertierung.

Das bedeutet:

- Datentypen werden automatisch angepasst
- keine feste Typdefinition notwendig

Begriffe:

- Deklarierung → Variable erstellen
- Initialisierung → Wert zuweisen
- Konvertierung → Datentyp ändern

---

### Variablen

- beginnen immer mit `$`
- erlaubte Zeichen: Buchstaben, Zahlen, `_`
- Leerzeichen nur mit `${}` möglich

Beispiele:

`$name`  
`$_abc`  
`$123`  
`${mein Wert}`

Ungültig:

`$abc-12`  
`$mein Name`

Geschützte Variablen:

`$true`, `$false`, `$_`

---

### Datentypen

- String → `"Text"`
- Int → `12`
- Double → `4.5`
- Boolean → `$true / $false`
- DateTime → `Get-Date`

Wichtig für IHK:

- `Read-Host` liefert IMMER einen String → oft Konvertierung nötig

Typ anzeigen:

`$variable.GetType().Name`

Beispiel:

`[int]$zahl = Read-Host`

---

### Cmdlets

- Ausgabe → `Write-Host`
- Eingabe → `Read-Host`
- Datum → `Get-Date`
- Konsole löschen → `Clear-Host` (Alias: `cls`)

---

### Rechnen

`(4 + 4) * 12`  
`12 - 3`  
`16 * 4`

Wichtig:

- Punktrechnung vor Strichrechnung

Im String (Unterausdruck):

`"Ergebnis: $(4*12)"`

Datum:

`Get-Date("2026-04-14")`

---

### Operatoren

#### Vergleich

`-eq -ne -gt -lt -ge -le`  
`-ceq` → case sensitive

Beispiel:

`12 -gt 9` → true

---

#### Rechenoperatoren

`+ - * / %`

`%` = Modulo (Rest)

---

#### Zuweisung

`=` → Wert setzen  
`+=` → addieren und speichern

Beispiel:

`$x = 5`  
`$x += 3` → Ergebnis: 8

---

#### Stringoperatoren

`-like` → Wildcards  
`*` → beliebig viele Zeichen  
`?` → genau ein Zeichen

Beispiel:

`"Apfel" -like "A*"`

`-match` → Teilstring / Regex

Beispiel:

`"Apfel" -match "pf"` → true

---

#### Listenoperatoren

`-contains` → Liste links

`"A","B","C" -contains "A"`

`-in` → Liste rechts

`"A" -in "A","B","C"`

Wichtig:

- nur ganze Werte (keine Teilstrings!)

---

#### Logische Operatoren

`-and` → UND  
`-or` → ODER  
`-not` → NICHT

---

#### Unäre Operatoren

`++` → erhöhen  
`--` → verringern

---

### Verzweigungen

#### if / else

`if($zahl -lt 12){...} elseif(...) {...} else {...}`

Wichtig:

- Bedingungen müssen TRUE oder FALSE ergeben

---

#### switch

`switch($wert){ {$_ -lt 12}{"kleiner 12"; break} default{"größer"} }`

Wichtig:

- `$_` steht für aktuellen Wert
- `break` beendet den Block

---

# TEST

---

**1. Was bedeutet lose Typisierung?**

<details id="bkmrk-antwort-anzeigen-var"><summary>Antwort anzeigen</summary>

Variablen haben keinen festen Datentyp und werden automatisch konvertiert.

</details>---

**2. Unterschied zwischen Deklarierung und Initialisierung?**

<details id="bkmrk-antwort-anzeigen-dek"><summary>Antwort anzeigen</summary>

Deklarierung = Variable erstellen  
Initialisierung = Wert zuweisen

</details>---

**3. Woran erkennt man Variablen?**

<details id="bkmrk-antwort-anzeigen-am-"><summary>Antwort anzeigen</summary>

Am `$` Zeichen.

</details>---

**4. Was ist bei `Read-Host` wichtig?**

<details id="bkmrk-antwort-anzeigen-es-"><summary>Antwort anzeigen</summary>

Es liefert immer einen String.

</details>---

**5. Wofür wird `Get-Date` verwendet?**

<details id="bkmrk-antwort-anzeigen-f%C3%BCr"><summary>Antwort anzeigen</summary>

Für Datum und Uhrzeit.

</details>---

**6. Was macht `Clear-Host`?**

<details id="bkmrk-antwort-anzeigen-l%C3%B6s"><summary>Antwort anzeigen</summary>

Löscht die Konsole.

</details>---

**7. Ergebnis von `(4+4)*12`?**

<details id="bkmrk-antwort-anzeigen-96"><summary>Antwort anzeigen</summary>

96

</details>---

**8. Wofür steht `-eq`?**

<details id="bkmrk-antwort-anzeigen-ver"><summary>Antwort anzeigen</summary>

Vergleich auf Gleichheit.

</details>---

**9. Unterschied `-eq` und `-ceq`?**

<details id="bkmrk-antwort-anzeigen--ce"><summary>Antwort anzeigen</summary>

`-ceq` beachtet Groß-/Kleinschreibung.

</details>---

**10. Was macht `-like`?**

<details id="bkmrk-antwort-anzeigen-ver-1"><summary>Antwort anzeigen</summary>

Vergleich mit Wildcards.

</details>---

**11. Bedeutung von `*` bei `-like`?**

<details id="bkmrk-antwort-anzeigen-bel"><summary>Antwort anzeigen</summary>

Beliebig viele Zeichen.

</details>---

**12. Bedeutung von `?` bei `-like`?**

<details id="bkmrk-antwort-anzeigen-gen"><summary>Antwort anzeigen</summary>

Genau ein Zeichen.

</details>---

**13. Was macht `-match`?**

<details id="bkmrk-antwort-anzeigen-tei"><summary>Antwort anzeigen</summary>

Teilstring-Suche.

</details>---

**14. Unterschied `-contains` und `-in`?**

<details id="bkmrk-antwort-anzeigen--co"><summary>Antwort anzeigen</summary>

`-contains` → Liste links  
`-in` → Liste rechts

</details>---

**15. Was macht `+=`?**

<details id="bkmrk-antwort-anzeigen-add"><summary>Antwort anzeigen</summary>

Addiert und speichert den Wert.

</details>---

**16. Was machen `++` und `--`?**

<details id="bkmrk-antwort-anzeigen-erh"><summary>Antwort anzeigen</summary>

Erhöhen bzw. verringern um 1.

</details>---

**17. Wofür wird `if` verwendet?**

<details id="bkmrk-antwort-anzeigen-f%C3%BCr-1"><summary>Antwort anzeigen</summary>

Für Bedingungen.

</details>---

**18. Wann wird `else` ausgeführt?**

<details id="bkmrk-antwort-anzeigen-wen"><summary>Antwort anzeigen</summary>

Wenn keine Bedingung zutrifft.

</details>---

**19. Wofür wird `switch` verwendet?**

<details id="bkmrk-antwort-anzeigen-f%C3%BCr-2"><summary>Antwort anzeigen</summary>

Für mehrere Bedingungen.

</details>---

**20. Was macht `break` im switch?**

<details id="bkmrk-antwort-anzeigen-bee"><summary>Antwort anzeigen</summary>

Beendet den Block.

</details>---

## Selbstbewertung

0–7 richtig → ❌ wiederholen  
8–14 richtig → ⚠️ unsicher  
15–18 richtig → ✅ gut  
19–20 richtig → 🔥 bereit für die Klausur