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,74 @@
|
||||
---
|
||||
id: P1
|
||||
titel: PowerShell – Befehle, Pipeline und Objekte
|
||||
block: programmierung
|
||||
woche: 7
|
||||
worum: PowerShell reicht keine Texte weiter, sondern Objekte mit Eigenschaften. Wer das verstanden hat, braucht kein Textschnipseln mehr.
|
||||
rahmenplan: [A10, B3]
|
||||
lernfeld: LF5
|
||||
merksatz: Verb-Substantiv finden, Get-Member fragen, filtern, sortieren, auswählen – formatiert wird erst ganz am Ende.
|
||||
karten:
|
||||
- frage: Wie sind die Befehle (Cmdlets) in PowerShell benannt, und wie findet man einen unbekannten Befehl?
|
||||
antwort: 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: Was unterscheidet die Pipeline in PowerShell von der in einer klassischen Linux-Shell?
|
||||
antwort: 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: Wozu dient Get-Member?
|
||||
antwort: 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
|
||||
|
||||
```powershell
|
||||
# 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.
|
||||
Reference in New Issue
Block a user