Inhalte: Wochen 5 bis 8

Vier neue Wochen nach Rahmenplan, im bestehenden Format:

- Woche 5 Ausbildung, Betrieb und Zusammenarbeit (C1, C2, C5)
- Woche 6 IT-Sicherheit und Datenschutz (A6, LF4)
- Woche 7 Skripting mit PowerShell (A10, A4)
- Woche 8 Datensicherung und Speicher (A9)

12 Handouts, 38 Merkkarten, 4 Praxisaufgaben, 2 Checklisten,
2 Lernzielkontrollen, 22 Glossareintraege, zwei neue Themenbloecke.
Jede Berufsbildposition ist jetzt von mindestens einem Inhalt beruehrt.

Die Praxisaufgaben bauen aufeinander auf: Die Abteilungsuebersicht aus
5.1 ist Grundlage der Schutzbedarfsfeststellung in 6.1, und deren
Ergebnis ist Massstab fuer die Sicherungspruefung in 8.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Florian Wilde
2026-10-04 21:53:10 +02:00
co-authored by Claude Opus 5.5
parent 052419dd43
commit 7d171f149d
27 changed files with 1625 additions and 0 deletions
@@ -0,0 +1,81 @@
---
id: P2
titel: Variablen, Bedingungen und Schleifen
block: programmierung
woche: 7
worum: Drei Bausteine reichen für fast jedes Verwaltungsskript – sich etwas merken, eine Entscheidung treffen, etwas wiederholen.
rahmenplan: [A10, A4]
lernfeld: LF5
merksatz: Merken mit $, entscheiden mit if, wiederholen mit foreach. Der Rest ist Übung.
karten:
- frage: Was ist der Unterschied zwischen "Hallo $name" und 'Hallo $name' in PowerShell?
antwort: In doppelten Anführungszeichen wird die Variable durch ihren Wert ersetzt, also etwa „Hallo Anna". In einfachen Anführungszeichen bleibt der Text genau so stehen, wie er geschrieben ist.
- frage: Was gibt dieses Skript aus – $summe = 0; foreach ($z in 1..5) { if ($z % 2 -eq 0) { $summe += $z } }; $summe
antwort: 6. Die Schleife läuft über 1 bis 5, die Bedingung lässt nur gerade Zahlen durch (Rest bei Division durch 2 ist 0), also werden 2 und 4 addiert.
- frage: Wann nimmt man foreach als Schleife und wann ForEach-Object?
antwort: foreach für eine Liste, die schon in einer Variablen liegt – übersichtlich und schnell. ForEach-Object mitten in einer Pipeline, wenn die Objekte direkt aus einem Befehl kommen.
---
## Das Wesentliche
- **Variablen** beginnen mit `$`: `$pfad = 'D:\Daten'`. Sie können alles aufnehmen – Text,
Zahlen, Listen, ganze Objekte aus einem Befehl: `$dienste = Get-Service`.
- **Text:** In `"…"` werden Variablen eingesetzt, in `'…'` nicht. Für Eigenschaften im Text:
`"Freier Platz: $($laufwerk.FreeSpace)"`.
- **Listen** entstehen mit `@('PC-001', 'PC-002')` oder als Bereich `1..10`. Das erste Element
ist `$liste[0]`, die Anzahl `$liste.Count`.
- **Eigene Objekte** für Berichte: `[PSCustomObject]@{ Name = $n; Status = $s }`. Daraus
wird mit `Export-Csv` eine saubere Tabelle.
- **Bedingungen:** `if (…) { … } elseif (…) { … } else { … }`. In der Klammer steht ein
Vergleich mit `-eq`, `-gt`, `-like` usw. – **nicht** mit `=`, das ist eine Zuweisung.
- **Verknüpfen** mit `-and`, `-or`, `-not`.
- **Schleifen:** `foreach ($pc in $rechner) { … }` geht jedes Element durch.
`while (…) { … }` läuft, solange die Bedingung gilt – und braucht deshalb etwas, das sie
irgendwann falsch werden lässt.
- **Rechnen:** `+ - * /` und `%` für den Rest einer Division. `1GB` ist für PowerShell eine
Zahl, `$bytes / 1GB` rechnet also direkt in Gigabyte um.
## Übersicht
```powershell
$grenze = 15 # Prozent freier Platz, ab dem gewarnt wird
$laufwerke = Get-CimInstance -ClassName Win32_LogicalDisk -Filter 'DriveType = 3'
foreach ($lw in $laufwerke) {
$frei = [math]::Round($lw.FreeSpace / $lw.Size * 100, 1)
if ($frei -lt $grenze) {
Write-Warning "$($lw.DeviceID) hat nur noch $frei % frei."
}
else {
Write-Output "$($lw.DeviceID): $frei % frei – in Ordnung."
}
}
```
`DriveType = 3` sind lokale Festplatten; USB-Sticks (2) und Netzlaufwerke (4) bleiben außen vor.
## Prüfungsfrage
**Frage:** Schreiben Sie ein kurzes PowerShell-Skript, das für eine Liste von drei
Rechnernamen prüft, ob sie per Ping erreichbar sind, und für jeden Rechner „erreichbar" oder
„nicht erreichbar" ausgibt.
**Antwort:**
```powershell
$rechner = @('PC-001', 'PC-002', 'PC-003')
foreach ($pc in $rechner) {
if (Test-Connection -ComputerName $pc -Count 1 -Quiet) {
Write-Output "$pc erreichbar"
}
else {
Write-Output "$pc nicht erreichbar"
}
}
```
Die Liste wird in einer Variablen gehalten, `foreach` geht jeden Namen durch.
`Test-Connection -Quiet` liefert statt einer ausführlichen Ausgabe nur wahr oder falsch,
was die `if`-Bedingung direkt auswertet.