Files
lernbar/content/handouts/P1-powershell-pipeline.md
Florian WildeandClaude Opus 5.5 7d171f149d 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>
2026-10-04 21:53:10 +02:00

4.0 KiB
Raw Permalink Blame History

id, titel, block, woche, worum, rahmenplan, lernfeld, merksatz, karten
id titel block woche worum rahmenplan lernfeld merksatz karten
P1 PowerShell – Befehle, Pipeline und Objekte programmierung 7 PowerShell reicht keine Texte weiter, sondern Objekte mit Eigenschaften. Wer das verstanden hat, braucht kein Textschnipseln mehr.
A10
B3
LF5 Verb-Substantiv finden, Get-Member fragen, filtern, sortieren, auswählen – formatiert wird erst ganz am Ende.
frage antwort
Wie sind die Befehle (Cmdlets) in PowerShell benannt, und wie findet man einen unbekannten Befehl? Nach dem Muster Verb-Substantiv, etwa Get-Service oder Stop-Process. Get-Command mit einem Suchbegriff findet Befehle, Get-Help erklärt sie mit Beispielen.
frage antwort
Was unterscheidet die Pipeline in PowerShell von der in einer klassischen Linux-Shell? In PowerShell wandern Objekte mit Eigenschaften durch die Pipeline, nicht Textzeilen. Man filtert nach Eigenschaften wie Status oder Name, statt Spalten aus Text herauszuschneiden.
frage antwort
Wozu dient Get-Member? Es zeigt, welche Eigenschaften und Methoden die Objekte haben, die ein Befehl liefert – also womit man in der Pipeline weiterarbeiten kann.

Das Wesentliche

  • Verb-Substantiv: Get-Service, Get-Process, Get-ChildItem, Stop-Service. Die Verben sind festgelegt – Get liest, Set ändert, New legt an, Remove löscht.
  • Selbst finden statt googeln: Get-Command *service* findet Befehle, Get-Help Get-Service -Examples zeigt Beispiele. Einmal Update-Help als Administrator.
  • Objekte statt Text. Get-Service liefert Dienstobjekte mit Eigenschaften wie Name, Status und StartType. Welche es gibt, verrät Get-Service | Get-Member.
  • Die vier Werkzeuge der Pipeline:
    • Where-Object filtert: Where-Object Status -eq 'Stopped'
    • Sort-Object sortiert: Sort-Object Name
    • Select-Object wählt Eigenschaften oder Anzahl: Select-Object Name, Status -First 10
    • ForEach-Object tut etwas mit jedem Objekt
  • Vergleiche heißen -eq, -ne, -gt, -lt, -like (mit * als Platzhalter) und -match (regulärer Ausdruck). Groß- und Kleinschreibung spielt dabei keine Rolle.
  • Ausgeben und weitergeben: Export-Csv schreibt eine Tabelle für Excel, Out-File eine Textdatei. Format-Table gehört nur ans Ende – danach sind es keine verwertbaren Objekte mehr.
  • Erst lesen, dann ändern. Jeder Befehl, der etwas verändert, kennt -WhatIf: Er sagt, was er tun würde, und tut es nicht.

Übersicht

# Alle beendeten Dienste, die automatisch starten sollten
Get-Service |
  Where-Object { $_.Status -eq 'Stopped' -and $_.StartType -eq 'Automatic' } |
  Sort-Object Name |
  Select-Object Name, DisplayName

# Die fünf Prozesse mit dem höchsten Speicherverbrauch
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 5 Name, Id, WorkingSet

# Dateien im Downloadordner, älter als 90 Tage, als Tabelle für Excel
Get-ChildItem $HOME\Downloads -File |
  Where-Object LastWriteTime -lt (Get-Date).AddDays(-90) |
  Select-Object Name, Length, LastWriteTime |
  Export-Csv alte-downloads.csv -NoTypeInformation -Encoding UTF8

$_ steht innerhalb der geschweiften Klammern für das Objekt, das gerade durch die Pipeline kommt.

Prüfungsfrage

Frage: Schreiben Sie eine PowerShell-Befehlszeile, die alle laufenden Dienste alphabetisch sortiert mit Name und Anzeigename in die Datei dienste.csv schreibt, und erklären Sie jeden Teil.

Antwort: Get-Service | Where-Object Status -eq 'Running' | Sort-Object Name | Select-Object Name, DisplayName | Export-Csv dienste.csv -NoTypeInformation – Get-Service liefert alle Dienste als Objekte. Where-Object lässt nur die durch, deren Eigenschaft Status den Wert Running hat. Sort-Object Name sortiert nach dem Namen. Select-Object behält nur die beiden gewünschten Eigenschaften. Export-Csv schreibt das Ergebnis als Tabelle; -NoTypeInformation unterdrückt die Typzeile, die ältere PowerShell-Fassungen sonst an den Anfang setzen.