Tag 1 · Block 1: Erste Schritte
Du arbeitest in PowerShell 7 (pwsh) auf deiner Lab-VM. Die Übungen sind aufsteigend: Jede nutzt nur, was in den Kapiteln davor vorkam.
- Starte PowerShell 7 (
pwsh) im Windows Terminal oder in VS Code. - Zeige die Versionsinformationen an. Welche Version hast du?
- Starte zusätzlich Windows PowerShell 5.1 (
powershell.exe) und prüfe dort die Version. - Liste in beiden Fenstern den Inhalt von
C:\Usersauf: in CMD mitdir, in PowerShell mitGet-ChildItem. Was fällt dir an der Ausgabe auf?
Lösung anzeigen
$PSVersionTable$PSVersionTable.PSVersion # nur die VersionGet-ChildItem C:\UsersIn 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).
- Zeige die Hilfe zu
Get-Processan. - Zeige nur die Beispiele an. Probiere zwei davon aus.
- Finde heraus, welchen Parameter du bei
Get-Serviceangeben musst, um nur den DienstSpoolerzu sehen. - Aktualisiere die Hilfe (
Update-Help). Du brauchst dafür eine Administrator-PowerShell. - Liste alle
about_-Themen auf und liesabout_Operators(die ersten Abschnitte genügen).
Lösung anzeigen
Get-Help Get-ProcessGet-Help Get-Process -ExamplesGet-Help Get-Service -Parameter NameGet-Service -Name SpoolerUpdate-Help # als AdministratorGet-Help about_*Get-Help about_Operators- Liste alle Cmdlets mit dem Verb
Getauf (die Liste ist lang, das ist in Ordnung). - Liste alle Cmdlets auf, deren Nomen
Serviceist. - Welches Cmdlet startet einen Dienst neu? Finde es mit
Get-Command. - Rufe
Get-Verbauf. Welche Verben passen zu „löschen” und zu „anlegen”?
Lösung anzeigen
Get-Command -Verb GetGet-Command -Noun ServiceGet-Command -Noun Service -Verb Restart # Restart-ServiceGet-VerbLöschen: Remove, Anlegen: New.
- Zeige dein aktuelles Verzeichnis an.
- Wechsle nach
C:\Windows, danach nachC:\Kurs. - Merke dir mit
Push-Locationdein aktuelles Verzeichnis, wechsle nachC:\Windows\System32und kehre mitPop-Locationzurück. - Wechsle in den Environment-Provider (
Env:) und liste alle Umgebungsvariablen auf. Lies den Wert vonCOMPUTERNAME. - Wechsle in die Registry (
HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion) und lies den WertProductNameaus (Tipp:Get-ItemProperty). - Gehe zurück nach
C:\.
Lösung anzeigen
Get-LocationSet-Location C:\WindowsSet-Location C:\KursPush-LocationSet-Location C:\Windows\System32Pop-Location
Set-Location Env:Get-ChildItemGet-Item COMPUTERNAME # oder: $env:COMPUTERNAME
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name ProductNameSet-Location C:\- Lege den Ordner
C:\Kurs\Ausgabe\Block1an. - Erzeuge darin die Datei
notizen.txtmit dem Inhalt „Mein erster Eintrag”. - Hänge eine zweite Zeile an die Datei an und gib den Inhalt aus.
- Kopiere die Datei nach
notizen-kopie.txt. - Lösche den Ordner mit allem Inhalt. Teste vorher mit
-WhatIf, was passieren würde.
Lösung anzeigen
New-Item -ItemType Directory -Path C:\Kurs\Ausgabe\Block1Set-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.txtCopy-Item C:\Kurs\Ausgabe\Block1\notizen.txt C:\Kurs\Ausgabe\Block1\notizen-kopie.txt
Remove-Item C:\Kurs\Ausgabe\Block1 -Recurse -WhatIfRemove-Item C:\Kurs\Ausgabe\Block1 -RecurseSet-Content legt die Datei an, falls sie nicht existiert. New-Item -ItemType File ist nicht zwingend nötig.
- Finde heraus, welcher Befehl hinter
ls,catundpssteckt. - Finde heraus, welche Aliase für
Get-ChildItemexistieren. - Lege den Alias
llfürGet-ChildIteman und teste ihn. - Entferne den Alias wieder.
Lösung anzeigen
Get-Alias ls, cat, psGet-Alias -Definition Get-ChildItemSet-Alias ll Get-ChildItemll C:\KursRemove-Item Alias:\llIm Ordner C:\Kurs\Daten liegen Beispieldateien.
- Liste alle Dateien in
C:\Kurs\Datenrekursiv auf (Tipp:Get-ChildItem -Recurse, Parameter in der Hilfe nachlesen). - Zeige die Datei
Mitarbeiter.csvan. Wie groß ist sie (SpalteLength, in Bytes)? - Zeige nur Dateien mit der Endung
.log. Es gibt dafür einen passenden Parameter vonGet-ChildItem(Tipp:Get-Help Get-ChildItem -Parameter Filter).
Lösung anzeigen
Get-ChildItem C:\Kurs\Daten -RecurseGet-Item C:\Kurs\Daten\Mitarbeiter.csvGet-ChildItem C:\Kurs\Daten -Recurse -Filter *.log