# 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>
<summary>Antwort anzeigen</summary>

Variablen haben keinen festen Datentyp und werden automatisch konvertiert.

</details>

---

**2. Unterschied zwischen Deklarierung und Initialisierung?**

<details>
<summary>Antwort anzeigen</summary>

Deklarierung = Variable erstellen  
Initialisierung = Wert zuweisen

</details>

---

**3. Woran erkennt man Variablen?**

<details>
<summary>Antwort anzeigen</summary>

Am `$` Zeichen.

</details>

---

**4. Was ist bei `Read-Host` wichtig?**

<details>
<summary>Antwort anzeigen</summary>

Es liefert immer einen String.

</details>

---

**5. Wofür wird `Get-Date` verwendet?**

<details>
<summary>Antwort anzeigen</summary>

Für Datum und Uhrzeit.

</details>

---

**6. Was macht `Clear-Host`?**

<details>
<summary>Antwort anzeigen</summary>

Löscht die Konsole.

</details>

---

**7. Ergebnis von `(4+4)*12`?**

<details>
<summary>Antwort anzeigen</summary>

96

</details>

---

**8. Wofür steht `-eq`?**

<details>
<summary>Antwort anzeigen</summary>

Vergleich auf Gleichheit.

</details>

---

**9. Unterschied `-eq` und `-ceq`?**

<details>
<summary>Antwort anzeigen</summary>

`-ceq` beachtet Groß-/Kleinschreibung.

</details>

---

**10. Was macht `-like`?**

<details>
<summary>Antwort anzeigen</summary>

Vergleich mit Wildcards.

</details>

---

**11. Bedeutung von `*` bei `-like`?**

<details>
<summary>Antwort anzeigen</summary>

Beliebig viele Zeichen.

</details>

---

**12. Bedeutung von `?` bei `-like`?**

<details>
<summary>Antwort anzeigen</summary>

Genau ein Zeichen.

</details>

---

**13. Was macht `-match`?**

<details>
<summary>Antwort anzeigen</summary>

Teilstring-Suche.

</details>

---

**14. Unterschied `-contains` und `-in`?**

<details>
<summary>Antwort anzeigen</summary>

`-contains` → Liste links  
`-in` → Liste rechts

</details>

---

**15. Was macht `+=`?**

<details>
<summary>Antwort anzeigen</summary>

Addiert und speichert den Wert.

</details>

---

**16. Was machen `++` und `--`?**

<details>
<summary>Antwort anzeigen</summary>

Erhöhen bzw. verringern um 1.

</details>

---

**17. Wofür wird `if` verwendet?**

<details>
<summary>Antwort anzeigen</summary>

Für Bedingungen.

</details>

---

**18. Wann wird `else` ausgeführt?**

<details>
<summary>Antwort anzeigen</summary>

Wenn keine Bedingung zutrifft.

</details>

---

**19. Wofür wird `switch` verwendet?**

<details>
<summary>Antwort anzeigen</summary>

Für mehrere Bedingungen.

</details>

---

**20. Was macht `break` im switch?**

<details>
<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