PowerShell ist eine mächtige Kommandozeilen-Shell und Skriptsprache, die Systemadministratoren und Entwicklern hilft, komplexe Aufgaben zu automatisieren. In diesem Artikel stellen wir die 25 wichtigsten PowerShell Cmdlets vor, die jeder PowerShell-Benutzer kennen sollte.
Was sind Cmdlets?
Cmdlets (Command-lets) sind spezielle .NET-Klassen in PowerShell, die eine bestimmte Funktion ausführen. Sie folgen dem Verb-Substantiv-Schema (z.B. Get-Process, Set-Location) und sind die Grundbausteine für PowerShell-Befehle.
Die 25 wichtigsten PowerShell Cmdlets
1. Get-Help
Zeigt Hilfeinformationen zu PowerShell Cmdlets und Konzepten an.
Get-Help Get-Process
Get-Help Get-Process -Examples
Get-Help Get-Process -Full
Console Output:
NAME
Get-Process
SYNOPSIS
Gets the processes that are running on the local computer or a remote computer.
SYNTAX
Get-Process [[-Name] <String[]>] [-ComputerName <String[]>] [<CommonParameters>]
...
2. Get-Command
Listet alle verfügbaren Befehle auf oder sucht nach spezifischen Befehlen.
Get-Command
Get-Command *process*
Get-Command -Verb Get
Console Output:
CommandType Name Version Source
----------- ---- ------- ------
Alias % -> ForEach-Object
Alias ? -> Where-Object
Alias ac -> Add-Content
...
3. Get-Process
Zeigt alle laufenden Prozesse auf dem System an.
Get-Process
Get-Process -Name "notepad"
Get-Process | Where-Object {$_.CPU -gt 100}
Console Output:
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
462 18 2288 5716 4732 0 ApplicationFrameHost
395 35 13272 18308 3612 1 Calculator
4. Get-Service
Zeigt alle Windows-Dienste und deren Status an.
Get-Service
Get-Service -Name "Spooler"
Get-Service | Where-Object {$_.Status -eq "Running"}
Console Output:
Status Name DisplayName
------ ---- -----------
Running AdobeARMservice Adobe Acrobat Update Service
Stopped AJRouter AllJoyn Router Service
Running ALG Application Layer Gateway Service
5. Start-Service / Stop-Service
Startet oder stoppt Windows-Dienste.
Start-Service -Name "Spooler"
Stop-Service -Name "Spooler"
Restart-Service -Name "Spooler"
Console Output:
# Kein Output bei erfolgreichem Ausführung, außer bei Fehlern
6. Get-EventLog
Liest Windows-Ereignisprotokolle aus.
Get-EventLog -LogName System -Newest 10
Get-EventLog -LogName Application -EntryType Error -Newest 5
Console Output:
Index Time EntryType Source InstanceID Message
----- ---- --------- ------ ---------- -------
8326 Mai 30 10:30 Information Service Control Manager 7036 The Windows Update service entered the running state.
7. Get-ChildItem (ls, dir)
Listet Dateien und Ordner in einem Verzeichnis auf.
Get-ChildItem
Get-ChildItem -Path C:\Windows -Recurse -Filter "*.exe"
ls -la
Console Output:
Directory: C:\Users\Username\Documents
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 30.05.2025 10:30 Projekte
-a---- 29.05.2025 14:22 1024 test.txt
8. Set-Location (cd)
Wechselt das aktuelle Arbeitsverzeichnis.
Set-Location -Path "C:\Windows"
cd C:\Users
sl D:\Projects
Console Output:
PS C:\Windows> # Prompt zeigt neues Verzeichnis
9. Get-Location (pwd)
Zeigt das aktuelle Arbeitsverzeichnis an.
Get-Location
pwd
Console Output:
Path
----
C:\Users\Username\Documents
10. Copy-Item (cp)
Kopiert Dateien und Ordner.
Copy-Item -Path "file.txt" -Destination "backup.txt"
Copy-Item -Path "C:\Source\*" -Destination "C:\Destination" -Recurse
cp file.txt backup.txt
Console Output:
# Kein Output bei erfolgreichem Kopieren
11. Move-Item (mv)
Verschiebt oder benennt Dateien und Ordner um.
Move-Item -Path "oldname.txt" -Destination "newname.txt"
Move-Item -Path "C:\temp\file.txt" -Destination "C:\archive\"
mv oldfile.txt newfile.txt
12. Remove-Item (rm, del)
Löscht Dateien und Ordner.
Remove-Item -Path "file.txt"
Remove-Item -Path "C:\temp\*" -Recurse -Force
rm file.txt
13. New-Item
Erstellt neue Dateien und Ordner.
New-Item -Path "newfile.txt" -ItemType File
New-Item -Path "newfolder" -ItemType Directory
New-Item -Path "script.ps1" -ItemType File -Value "Write-Host 'Hello World'"
Console Output:
Directory: C:\Users\Username\Documents
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 30.05.2025 10:35 0 newfile.txt
14. Get-Content (cat)
Liest den Inhalt von Dateien.
Get-Content -Path "file.txt"
Get-Content -Path "log.txt" -Tail 10
cat file.txt
Console Output:
Dies ist Zeile 1
Dies ist Zeile 2
Dies ist Zeile 3
15. Set-Content
Schreibt Inhalt in Dateien (überschreibt vorhandenen Inhalt).
Set-Content -Path "file.txt" -Value "Neuer Inhalt"
"Hello World" | Set-Content -Path "greeting.txt"
16. Add-Content
Fügt Inhalt zu Dateien hinzu.
Add-Content -Path "log.txt" -Value "Neue Zeile"
"Weitere Zeile" | Add-Content -Path "log.txt"
17. Select-String
Sucht nach Textmustern in Dateien (ähnlich grep).
Select-String -Path "*.txt" -Pattern "Error"
Get-Content "log.txt" | Select-String "Warning"
Console Output:
file.txt:3:Error: Datei nicht gefunden
log.txt:15:Error: Verbindung fehlgeschlagen
18. Where-Object (?)
Filtert Objekte basierend auf Eigenschaften.
Get-Process | Where-Object {$_.Name -like "*chrome*"}
Get-Service | Where-Object {$_.Status -eq "Stopped"}
ls | ? {$_.Length -gt 1MB}
Console Output:
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
1234 45 87632 123456 15.23 1234 1 chrome
19. Select-Object
Wählt spezifische Eigenschaften von Objekten aus.
Get-Process | Select-Object Name, CPU, Id
Get-Service | Select-Object -First 5
ls | Select-Object Name, Length, LastWriteTime
Console Output:
Name CPU Id
---- --- --
ApplicationFrameHost 4732
Calculator 3612
20. Sort-Object
Sortiert Objekte nach Eigenschaften.
Get-Process | Sort-Object CPU -Descending
ls | Sort-Object Length
Get-Service | Sort-Object Status, Name
21. Group-Object
Gruppiert Objekte nach gemeinsamen Eigenschaften.
Get-Process | Group-Object ProcessName
Get-Service | Group-Object Status
ls | Group-Object Extension
Console Output:
Count Name Group
----- ---- -----
3 chrome {System.Diagnostics.Process (chrome), ...}
1 notepad {System.Diagnostics.Process (notepad)}
22. Measure-Object
Berechnet statistische Eigenschaften von Objekten.
Get-Process | Measure-Object
ls | Measure-Object -Property Length -Sum -Average -Maximum
Get-Content "file.txt" | Measure-Object -Line -Word -Character
Console Output:
Count : 156
Average : 1048576
Sum : 163840000
Maximum : 52428800
23. ForEach-Object (%)
Führt eine Operation für jedes Objekt in einer Pipeline aus.
Get-Process | ForEach-Object {$_.Name.ToUpper()}
1..10 | ForEach-Object {$_ * 2}
ls *.txt | % {$_.Name}
Console Output:
APPLICATIONFRAMEHOST
CALCULATOR
CHROME
24. Export-Csv / Import-Csv
Exportiert/Importiert Daten in/aus CSV-Dateien.
Get-Process | Export-Csv -Path "processes.csv" -NoTypeInformation
Import-Csv -Path "data.csv" | Where-Object {$_.Status -eq "Active"}
25. Get-WmiObject / Get-CimInstance
Ruft WMI/CIM-Informationen über das System ab.
Get-WmiObject -Class Win32_ComputerSystem
Get-CimInstance -ClassName Win32_LogicalDisk
Get-WmiObject -Class Win32_Service | Where-Object {$_.State -eq "Running"}
Console Output:
SystemType : X64-based PC
TotalPhysicalMemory : 17179869184
UserName : COMPUTER\Username
Nützliche Tipps
Pipeline verwenden
PowerShell’s wahre Stärke liegt in der Pipeline:
Get-Process | Where-Object {$_.CPU -gt 10} | Sort-Object CPU -Descending | Select-Object -First 5
Aliase nutzen
Viele Cmdlets haben kurze Aliase:
ls
=Get-ChildItem
cd
=Set-Location
cat
=Get-Content
?
=Where-Object
%
=ForEach-Object
Parameter-Vervollständigung
Verwenden Sie Tab-Vervollständigung für Parameter und Werte:
Get-Service -Name <Tab>
Get-Process -Name <Tab>
Wildcards verwenden
PowerShell unterstützt Wildcards:
Get-Process *chrome*
Get-ChildItem *.txt
Get-Service W*
Fazit
Diese 25 Cmdlets bilden das Fundament für effektive PowerShell-Nutzung. Sie ermöglichen es, die meisten alltäglichen Systemverwaltungsaufgaben zu erledigen. Durch die Kombination dieser Cmdlets mit der Pipeline-Funktionalität von PowerShell können komplexe Aufgaben in elegante Einzeiler verwandelt werden.
Tipp: Verwenden Sie Get-Help <Cmdlet-Name> -Examples
um weitere praktische Beispiele für jedes Cmdlet zu sehen!