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>
4.4 KiB
id, titel, block, woche, worum, rahmenplan, lernfeld, merksatz, karten
| id | titel | block | woche | worum | rahmenplan | lernfeld | merksatz | karten | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| P3 | Ein Skript schreiben, das man in einem Jahr noch versteht | programmierung | 7 | Ein Skript, das nur sein Verfasser bedienen kann, ist eine Abhängigkeit. Ein gutes Skript erklärt sich, prüft seine Eingaben und meldet Fehler, statt sie zu verschweigen. |
|
LF5 | Sagen, was es tut. Prüfen, was hineinkommt. Melden, was schiefgeht. Erst mit -WhatIf laufen lassen. |
|
Das Wesentliche
- Ein Kopf mit Hilfe: Ein Block
<# .SYNOPSIS … .EXAMPLE … #>ganz oben macht das Skript fürGet-Help .\skript.ps1lesbar. Darin steht, was es tut, was es braucht und ein Beispielaufruf. - Eingaben als Parameter, nicht fest im Code: Pfade, Rechnernamen und Grenzwerte gehören
in den
param()-Block.[Parameter(Mandatory)]macht eine Angabe zur Pflicht. - Namen, die etwas sagen:
$freierPlatzProzentstatt$x. Kommentare erklären das Warum, nicht das Was – das Was steht im Code. - Fehler nicht verschlucken.
try { … -ErrorAction Stop } catch { … }fängt Fehler auf und meldet sie verständlich. Ein leerercatch-Block ist schlimmer als gar keiner. - Erst trocken, dann echt. Mit
[CmdletBinding(SupportsShouldProcess)]bekommt das eigene Skript-WhatIf. Ein Skript, das löscht, ändert oder verschiebt, läuft zuerst so. - Klein anfangen und testen. Erst an einem Testrechner, dann an einem echten, dann an allen. Jede Stufe mit Blick auf die Ausgabe.
- Versionieren. Skripte gehören in ein Git-Repository der IT, nicht auf den Desktop. So sieht man, wer wann was geändert hat, und kommt zur letzten funktionierenden Fassung zurück.
- Ausführungsrichtlinie: Auf Clients ist meist
RemoteSignedeingestellt. Sie verhindert versehentliches Ausführen fremder Skripte, ist aber keine Sicherheitsgrenze.
Übersicht
<#
.SYNOPSIS
Löscht Protokolldateien, die älter als eine bestimmte Anzahl Tage sind.
.EXAMPLE
.\Protokolle-Aufraeumen.ps1 -Pfad D:\Logs -Tage 30 -WhatIf
#>
[CmdletBinding(SupportsShouldProcess)]
param(
[Parameter(Mandatory)][string]$Pfad,
[int]$Tage = 30
)
if (-not (Test-Path $Pfad)) {
throw "Den Pfad $Pfad gibt es nicht."
}
$stichtag = (Get-Date).AddDays(-$Tage)
$alt = Get-ChildItem $Pfad -Filter *.log -File | Where-Object LastWriteTime -lt $stichtag
foreach ($datei in $alt) {
if ($PSCmdlet.ShouldProcess($datei.FullName, 'Löschen')) {
try {
Remove-Item $datei.FullName -ErrorAction Stop
}
catch {
Write-Warning "Konnte $($datei.Name) nicht löschen: $($_.Exception.Message)"
}
}
}
Prüfungsfrage
Frage: Ein Kollege hat ein Skript geschrieben, das auf allen Rechnern temporäre Dateien löscht. Pfad und Rechnerliste stehen fest im Code, Fehler werden nicht behandelt. Nennen Sie vier Verbesserungen und begründen Sie sie.
Antwort: (1) Pfad und Rechnerliste als Parameter übergeben – das Skript lässt sich dann
für andere Fälle nutzen, ohne den Code zu ändern. (2) -WhatIf unterstützen und das Skript
zuerst trocken laufen lassen – bei einem löschenden Skript lässt sich so vorab prüfen, was
betroffen wäre. (3) Fehlerbehandlung mit try/catch und -ErrorAction Stop – damit nicht
erreichbare Rechner oder gesperrte Dateien gemeldet und nicht stillschweigend übergangen
werden. (4) Einen Hilfeblock mit Beschreibung und Beispiel ergänzen und das Skript im
Repository der IT versionieren – so kann es auch jemand anderes betreuen. Ebenfalls richtig:
Eingaben prüfen, z. B. mit Test-Path, und ein Protokoll der gelöschten Dateien schreiben.