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:
co-authored by
Claude Opus 5.5
parent
052419dd43
commit
7d171f149d
@@ -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.
|
||||
Reference in New Issue
Block a user