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!