Zum Inhalt springen

Tag 1 · Block 1: Erste Schritte

Core🖥 PSLAB-VM

Du arbeitest in PowerShell 7 (pwsh) auf deiner Lab-VM. Die Übungen sind aufsteigend: Jede nutzt nur, was in den Kapiteln davor vorkam.

1.1 · Welche PowerShell läuft?Übung🚫 KI-frei lösen
  1. Starte PowerShell 7 (pwsh) im Windows Terminal oder in VS Code.
  2. Zeige die Versionsinformationen an. Welche Version hast du?
  3. Starte zusätzlich Windows PowerShell 5.1 (powershell.exe) und prüfe dort die Version.
  4. Liste in beiden Fenstern den Inhalt von C:\Users auf: in CMD mit dir, in PowerShell mit Get-ChildItem. Was fällt dir an der Ausgabe auf?
Lösung anzeigen
Terminal-Fenster
$PSVersionTable
$PSVersionTable.PSVersion # nur die Version
Get-ChildItem C:\Users

In powershell.exe zeigt $PSVersionTable.PSVersion 5.1.x, in pwsh 7.x. dir ist in PowerShell ein Alias für Get-ChildItem. Die Ausgabe sieht ähnlich aus, besteht aber aus Objekten (mit Spalten wie Mode, LastWriteTime, Name).

1.2 · Hilfe findenÜbung🚫 KI-frei lösen
  1. Zeige die Hilfe zu Get-Process an.
  2. Zeige nur die Beispiele an. Probiere zwei davon aus.
  3. Finde heraus, welchen Parameter du bei Get-Service angeben musst, um nur den Dienst Spooler zu sehen.
  4. Aktualisiere die Hilfe (Update-Help). Du brauchst dafür eine Administrator-PowerShell.
  5. Liste alle about_-Themen auf und lies about_Operators (die ersten Abschnitte genügen).
Lösung anzeigen
Terminal-Fenster
Get-Help Get-Process
Get-Help Get-Process -Examples
Get-Help Get-Service -Parameter Name
Get-Service -Name Spooler
Update-Help # als Administrator
Get-Help about_*
Get-Help about_Operators
1.3 · Cmdlets entdeckenÜbung🚫 KI-frei lösen
  1. Liste alle Cmdlets mit dem Verb Get auf (die Liste ist lang, das ist in Ordnung).
  2. Liste alle Cmdlets auf, deren Nomen Service ist.
  3. Welches Cmdlet startet einen Dienst neu? Finde es mit Get-Command.
  4. Rufe Get-Verb auf. Welche Verben passen zu „löschen” und zu „anlegen”?
Lösung anzeigen
Terminal-Fenster
Get-Command -Verb Get
Get-Command -Noun Service
Get-Command -Noun Service -Verb Restart # Restart-Service
Get-Verb

Löschen: Remove, Anlegen: New.

1.4 · Navigation und ProviderÜbung🚫 KI-frei lösen
  1. Zeige dein aktuelles Verzeichnis an.
  2. Wechsle nach C:\Windows, danach nach C:\Kurs.
  3. Merke dir mit Push-Location dein aktuelles Verzeichnis, wechsle nach C:\Windows\System32 und kehre mit Pop-Location zurück.
  4. Wechsle in den Environment-Provider (Env:) und liste alle Umgebungsvariablen auf. Lies den Wert von COMPUTERNAME.
  5. Wechsle in die Registry (HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion) und lies den Wert ProductName aus (Tipp: Get-ItemProperty).
  6. Gehe zurück nach C:\.
Lösung anzeigen
Terminal-Fenster
Get-Location
Set-Location C:\Windows
Set-Location C:\Kurs
Push-Location
Set-Location C:\Windows\System32
Pop-Location
Set-Location Env:
Get-ChildItem
Get-Item COMPUTERNAME # oder: $env:COMPUTERNAME
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name ProductName
Set-Location C:\
1.5 · Dateien und OrdnerÜbung🚫 KI-frei lösen
  1. Lege den Ordner C:\Kurs\Ausgabe\Block1 an.
  2. Erzeuge darin die Datei notizen.txt mit dem Inhalt „Mein erster Eintrag”.
  3. Hänge eine zweite Zeile an die Datei an und gib den Inhalt aus.
  4. Kopiere die Datei nach notizen-kopie.txt.
  5. Lösche den Ordner mit allem Inhalt. Teste vorher mit -WhatIf, was passieren würde.
Lösung anzeigen
Terminal-Fenster
New-Item -ItemType Directory -Path C:\Kurs\Ausgabe\Block1
Set-Content -Path C:\Kurs\Ausgabe\Block1\notizen.txt -Value "Mein erster Eintrag"
Add-Content -Path C:\Kurs\Ausgabe\Block1\notizen.txt -Value "Zweite Zeile"
Get-Content C:\Kurs\Ausgabe\Block1\notizen.txt
Copy-Item C:\Kurs\Ausgabe\Block1\notizen.txt C:\Kurs\Ausgabe\Block1\notizen-kopie.txt
Remove-Item C:\Kurs\Ausgabe\Block1 -Recurse -WhatIf
Remove-Item C:\Kurs\Ausgabe\Block1 -Recurse

Set-Content legt die Datei an, falls sie nicht existiert. New-Item -ItemType File ist nicht zwingend nötig.

1.6 · AliaseÜbung🚫 KI-frei lösen
  1. Finde heraus, welcher Befehl hinter ls, cat und ps steckt.
  2. Finde heraus, welche Aliase für Get-ChildItem existieren.
  3. Lege den Alias ll für Get-ChildItem an und teste ihn.
  4. Entferne den Alias wieder.
Lösung anzeigen
Terminal-Fenster
Get-Alias ls, cat, ps
Get-Alias -Definition Get-ChildItem
Set-Alias ll Get-ChildItem
ll C:\Kurs
Remove-Item Alias:\ll
1.7 · Dateien im Lab erkundenChallenge🚫 KI-frei lösen

Im Ordner C:\Kurs\Daten liegen Beispieldateien.

  1. Liste alle Dateien in C:\Kurs\Daten rekursiv auf (Tipp: Get-ChildItem -Recurse, Parameter in der Hilfe nachlesen).
  2. Zeige die Datei Mitarbeiter.csv an. Wie groß ist sie (Spalte Length, in Bytes)?
  3. Zeige nur Dateien mit der Endung .log. Es gibt dafür einen passenden Parameter von Get-ChildItem (Tipp: Get-Help Get-ChildItem -Parameter Filter).
Lösung anzeigen
Terminal-Fenster
Get-ChildItem C:\Kurs\Daten -Recurse
Get-Item C:\Kurs\Daten\Mitarbeiter.csv
Get-ChildItem C:\Kurs\Daten -Recurse -Filter *.log