Mit den passenden Power­Shell-Befehlen nutzen Sie Module deutlich ziel­ge­rich­te­ter. Die un­ter­schied­li­chen Cmdlets sind logisch aufgebaut und können optional um Parameter erweitert werden. Wir zeigen Ihnen die 40 wich­tigs­ten Power­Shell-Commands, damit Sie in Ihrem System oder Netzwerk optimal arbeiten können.

Was sind Power­Shell-Commands?

Die Power­Shell, die seit Windows 7 vor­in­stal­liert ist, erlaubt es Ihnen, Power­Shell-Befehle ein­zu­ge­ben, die dann von Windows aus­ge­führt werden. Neben den cmd-Befehlen der Kom­man­do­zei­le gibt es zahl­rei­che weitere Commands oder Cmdlets, die nur von der Power­Shell selbst ver­stan­den werden können. Diese Cmdlets bestehen aus einem Verb und einem Sub­stan­tiv, welche durch einen Bin­de­strich getrennt sind. Außerdem können optionale Parameter die Power­Shell-Commands spe­zi­fi­zie­ren. Diese Parameter werden durch ein Leer­zei­chen ab­ge­trennt. Die Power­Shell wird längst nicht mehr nur von Ad­mi­nis­tra­to­ren oder Ad­mi­nis­tra­to­rin­nen genutzt, sondern leistet gerade auch im Bereich der Ent­wick­lung wertvolle Dienste. Es gibt Hunderte vor­in­stal­lier­ter Power­Shell-Befehle. Wir stellen Ihnen die wich­tigs­ten vor.

Die wich­tigs­ten Power­Shell-Befehle

Power­Shell-Befehle erlauben Ihnen die Aus­füh­rung teils sehr um­fang­rei­cher Ad­mi­nis­tra­ti­ons­auf­ga­ben mit nur wenigen Eingaben. Zu den Befehlen, die Sie ver­mut­lich am häu­figs­ten benötigen werden, gehören die folgenden Ba­sis­be­feh­le. Diese liefern eine erste Übersicht über die gesamte Struktur eines Netzwerks, listen andere Power­Shell-Commands auf, helfen bei not­wen­di­gen Si­cher­heits­kon­fi­gu­ra­tio­nen oder erstellen nützliche Analysen. Zu den wich­tigs­ten Power­Shell-Befehlen gehören ins­be­son­de­re diese:

1. Get-Module -All

Möchten Sie sich einen ersten Überblick über alle im­por­tier­ten Power­Shell-Module ver­schaf­fen, nutzen Sie dafür den Command Get-Module -All.

Get-Module -All
shell

2. Get-Command

Es gibt zahl­rei­che vor­de­fi­nier­te Power­Shell-Befehle. Brauchen Sie eine Übersicht über die Power­Shell-Commands, die Ihnen aktuell zur Verfügung stehen, nutzen Sie dafür den Befehl Get-Command. Dieser listet sämtliche möglichen Aktionen über­sicht­lich auf und liefert eine kurze Erklärung zum je­wei­li­gen Cmdlet. Dies gilt auch, wenn Sie zu­sätz­li­che Module in­stal­liert haben.

Get-Command
shell

3. Get-Help

Die oben be­schrie­be­ne Auf­lis­tung durch Get-Command gibt Ihnen zwar einen ersten Überblick, benötigen Sie al­ler­dings wei­ter­füh­ren­de In­for­ma­tio­nen über einen Befehl und seine Mög­lich­kei­ten, verwenden Sie den Cmdlet Get-Help. Dieser Befehl greift auf die Hil­fe­da­tei­en auf Ihrem PC zurück und liefert Ihnen dann alle ver­füg­ba­ren In­for­ma­tio­nen. Um diese Hilfe zu ak­ti­vie­ren, kom­bi­nie­ren Sie Get-Help mit dem Befehl, dessen Syntax Sie einsehen möchten.

Get-Help [[-Name] <String>] [-Path <String>] [-Category <String[]>] [-Component <String[]>] [-Functionality <String[]>] [-Role <String[]>] [-Examples] [<CommonParameters>]
shell

4. Get-Process

In vielen Fällen ist es hilfreich, wenn Sie schnellst­mög­lich eine Übersicht über alle aktiven An­wen­dun­gen, Programme und Prozesse bekommen, die aktuell auf Ihrem System aus­ge­führt werden. Eine Übersicht erhalten Sie mit dem Command Get-Process. Spe­zi­fi­zie­ren Sie ihn mit einer be­stimm­ten Anwendung, so erhalten Sie wei­ter­füh­ren­de In­for­ma­tio­nen zu dieser.

Get-Process
shell

5. Get-Service

Der Befehl Get-Service funk­tio­niert ähnlich wie der Cmdlet Get-Process. Der Un­ter­schied ist, dass Get-Service Ihnen In­for­ma­tio­nen zu allen aktiven Diensten ausspielt. Möchten Sie nur In­for­ma­tio­nen zu einem be­stimm­ten Dienst oder einer be­stimm­ten Art un­ter­schied­li­cher Dienste erhalten, so prä­zi­sie­ren Sie Ihre Anfrage einfach.

Get-Service
shell

6. Stop-Process

Sie können auch un­ter­schied­li­che Power­Shell-Befehle nutzen, um Prozesse über die Shell zu stoppen. Eine Option dafür ist der Befehl Stop-Process. Den ent­spre­chen­den Prozess hin­ter­le­gen Sie per Name, ID oder mit anderen At­tri­bu­ten. Das sieht bei­spiel­haft so aus:

Stop-Process -Name "prozessname"
shell
Stop-Process -Id 3582 -Confirm -PassThru
shell

Mit -Confirm wird eine Be­stä­ti­gung des Befehls gefordert. Der Command -PassThru fordert eine Be­stä­ti­gung des an­ge­hal­te­nen Prozesses an. Diese erfolgt nicht au­to­ma­tisch.

7. ConvertTo-HTML

Um Probleme oder mögliche Kom­pli­ka­tio­nen schnellst­mög­lich iden­ti­fi­zie­ren zu können, ist eine über­sicht­li­che Dar­stel­lung sehr hilfreich. Mit dem Befehl ConvertTo-HTML wird die Ausgabe der je­wei­li­gen Power­Shell-Commands in eine HTML-Datei über­tra­gen. Dadurch werden sämtliche In­for­ma­tio­nen in einem gut lesbaren Spal­ten­for­mat angezeigt. Der Befehl sieht zum Beispiel so aus:

Get-Command | ConvertTo-Html > c:\temp\AllCommands.html
shell

8. ConvertTo-Xml

Ähnlich können Sie auch vorgehen, wenn Sie eine XML-basierte Dar­stel­lung eines be­stimm­ten Objekts benötigen. Dies gelingt mit dem Befehl ConvertTo-Xml. Im folgenden Beispiel kon­ver­tie­ren Sie das aktuelle Datum in das Format XML:

Get-Date | ConvertTo-Xml
shell

9. Where-Object

Mit dem Befehl Where-Object können Sie das Ergebnis eines Cmdlets filtern. Führen Sie einen Command aus, erhalten Sie häufig viele Objekte, die Sie jedoch nicht voll­stän­dig benötigen. Where-Object leitet den Output über eine Pipe weiter und spielt Ihnen damit nur die gesuchten In­for­ma­tio­nen aus. Wenn Sie zum Beispiel lediglich Dienste einsehen möchten, die in diesem Jahr erstellt oder ak­tua­li­siert wurden, funk­tio­niert dies fol­gen­der­ma­ßen:

Get-Service | Where-Object { $_.LastWriteTime -gt "01.01.2023" }
shell

10. Get-History

Möchten Sie sämtliche Power­Shell-Befehle, die Sie während einer Sitzung ein­ge­ge­ben haben, auflisten, ist Get-History der passende Cmdlet. So listen Sie alle Power­Shell-Commands auf:

Get-History
shell

Mit dieser Spe­zi­fi­ka­ti­on rufen Sie nur die letzten zehn Power­Shell-Befehle auf:

Get-History -Count 10
shell

11. Clear-History

Natürlich haben Sie auch die Mög­lich­keit, die Auf­lis­tung der genutzten Power­Shell-Commands zu löschen. Möchten Sie alle Einträge entfernen, nutzen Sie den Cmdlet Clear-History:

Clear-History
shell

Wollen Sie nur bestimmte Power­Shell-Befehle löschen, fügen Sie einfach die ent­spre­chen­den Parameter hinzu. Die folgende Eingabe entfernt sämtliche Power­Shell-Commands, die „Help“ enthalten oder mit „Syntax“ enden.

Clear-History -Command *Help*, *Syntax
shell

12. Add-History

Es ist auch möglich, Power­Shell-Befehle zu einer Sitzung hin­zu­zu­fü­gen. So können Sie diese beim nächsten Mal wieder direkt aufrufen. Der passende Cmdlet lautet Add-History.

Add-History
shell

13. Out-File

Möchten Sie die Ausgabe Ihrer Power­Shell-Befehle auf Ihrem Rechner speichern, verwenden Sie den Cmdlet Out-File. Dieser hin­ter­legt die Power­Shell-Commands in einer Roh­text­da­tei unter dem an­ge­ge­be­nen Pfad.

Get-Process | Out-File -FilePath .\Process.txt
shell

14. Copy-Item

Auch in der Power­Shell haben Sie die Option, Elemente zu kopieren und die Kopie an einem anderen Spei­cher­ort zu hin­ter­le­gen. Dafür nutzen Sie den Befehl Copy-Item und geben außerdem das Ver­zeich­nis an, in dem die Kopie ge­spei­chert werden soll. Dies funk­tio­niert fol­gen­der­ma­ßen:

Copy-Item "C:\Ordner1\Datei.txt" -Destination "C:\Ordner2"
shell

15. Get-ChildItem

Mit dem Befehl Get-ChildItem rufen Sie Elemente an einem oder mehreren Spei­cher­or­ten ab. Gibt es un­ter­ge­ord­ne­te Elemente, so werden auch diese angezeigt. Ihnen werden mit diesem Befehl stan­dard­mä­ßig die Attribute, der Zeitpunkt der letzten Änderung, die Größe der Datei sowie der Name des Elements auf­ge­lis­tet. Ist ein Spei­cher­ort leer, entfällt die Ausgabe.

Get-ChildItem -Path C:\Beispiel
shell

Die Attribute werden unter der Zeile „Mode“ aus­ge­wie­sen. Folgende Ei­gen­schaf­ten sind dabei gängig:

  • a (Archiv)
  • d (Ver­zeich­nis)
  • h (aus­ge­blen­det)
  • l (Link)
  • r (schreib­ge­schützt)
  • s (System)

16. Set-Au­then­ti­code­Si­gna­tu­re

Um Ihre Dateien zu schützen, können Sie sie mit dem Befehl Set-Au­then­ti­code­Si­gna­tu­re mit einer Au­then­ti­code-Signatur aus­stat­ten. Dies funk­tio­niert al­ler­dings aus­schließ­lich für Dateien, die das Subject Interface Package (SIP) un­ter­stüt­zen.

$cert=Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert
Set-AuthenticodeSignature -FilePath PsTestInternet2.ps1 -Certificate $cert
shell

17. Invoke-Item

Möchten Sie die Stan­dard­ak­ti­on für eine bestimmte Datei ausführen, ist Invoke-Item der ein­fachs­te Weg. Der Command sorgt zum Beispiel dafür, dass eine aus­führ­ba­re Datei direkt aus­ge­führt oder eine Do­ku­ment­da­tei in der zu­ge­ord­ne­ten Anwendung geöffnet wird. In diesem Beispiel wird die Datei stan­dard­mä­ßig in Microsoft Word auf­ge­ru­fen:

Invoke-Item "C:\Test\Beispiel.doc"
shell

18. Start-Job

Auch wenn Sie einen Hin­ter­grund­auf­trag auf Ihrem lokalen Rechner in­iti­ie­ren möchten, gibt es dafür den passenden Befehl. Mit Start-Job führen Sie einen spe­zi­fi­schen Command im Hin­ter­grund aus, der nicht mit der aktuellen Sitzung in­ter­agiert.

Start-Job -ScriptBlock { Get-Process -Name pwsh }
shell
Dedicated Server
De­di­zier­te Server mit mo­derns­ten Pro­zes­so­ren
  • 100 % En­ter­pri­se-Hardware
  • Kon­fi­gu­rier­ba­re Hardware-Aus­stat­tung
  • ISO-zer­ti­fi­zier­te Re­chen­zen­tren

Aktionen durch­füh­ren mit diesen Power­Shell-Commands

Während die bis­he­ri­gen Power­Shell-Befehle vor allem der Übersicht dienten, können Sie mit den passenden Cmdlets auch viele Aktionen durch­füh­ren und so Ihr System produktiv nutzen. Die folgenden Power­Shell-Commands er­leich­tern Ihnen die Arbeit.

19. Clear-Content

Wenn Sie den Inhalt eines Elements löschen möchten, das Element selbst al­ler­dings intakt bleiben soll, ist der Befehl Clear-Content die richtige Wahl. Ein Beispiel für den Einsatz wäre ein Dokument, dessen Text Sie entfernen, während die ei­gent­li­che Datei unberührt bleibt. Dieser Vorgang sieht so aus:

Clear-Content C:\Temp\Beispiel.txt
shell

20. ForEach-Object

Der Befehl ForEach-Object erlaubt es Ihnen, einen Vorgang für alle Elemente in einer Auf­lis­tung von Ein­ga­be­ob­jek­ten aus­zu­füh­ren. In diesem Beispiel di­vi­die­ren wir drei ganze Zahlen in einem Array durch 10:

10000, 1000, 100 | ForEach-Object -Process {$_/10}
1000
100
10
shell

21. Compare-Object

Damit Sie un­ter­schied­li­che Sätze von Objekten nicht manuell ab­glei­chen müssen, können Sie den Cmdlet Compare-Object nutzen. Der Befehl fertigt dann einen Bericht an, wo die Un­ter­schie­de zwischen den Sätzen liegen. Der erste Satz wird dabei als Ver­weis­ob­jekt verwendet und der zweite Satz als Dif­fe­renz­ob­jekt. Welche Faktoren ver­gli­chen werden sollen, können Sie bestimmen. Ver­zich­ten Sie auf diese In­for­ma­ti­on, werden lediglich die Zei­chen­fol­gen­er­geb­nis­se mit­ein­an­der ver­gli­chen. Dabei un­ter­teilt die Ausgabe in Ei­gen­schaf­ten, die lediglich im Ver­weis­ob­jekt vorkommen (<==), und Ei­gen­schaf­ten, die nur im Dif­fe­renz­ob­jekt er­schei­nen (==>). In diesem Beispiel enthält Dokument1.txt die Werte Berlin, London und Paris. Dokument2.txt enthält Berlin, Wien und Amsterdam.

Compare-Object -ReferenceObject (Get-Content -Path C:\Test\Dokument1.txt) -DifferenceObject (Get-Content -Path C:\Test\Dokument2.txt)
InputObject	SideIndicator
---------------	-----------------
Wien		==>
Amsterdam	==>
London		<==
Paris		<==
shell

Inhalte, die in beiden Do­ku­men­ten vorkommen (in diesem Fall „Berlin“), werden stan­dard­mä­ßig nicht angezeigt.

22. New-Object

Zu den besonders nütz­li­chen Power­Shell-Befehlen gehört auch New-Object. Mit diesem Cmdlet erstellen Sie eine Instanz eines .NET Frame­works oder eines Component Object Models (COM). Wenn Sie bei­spiels­wei­se ein System.Version.Objekt mit 1.2.3.4 als Zei­chen­fol­ge für den Kon­struk­tor kreieren möchten, funk­tio­niert der Command wie folgt:

New-Object -TypeName System.Version -ArgumentList "1.2.3.4"
shell

23. Select-Object

Mit dem Befehl Select-Object wählen Sie ein Objekt oder eine Gruppe von Objekten aus, welche über die von Ihnen de­fi­nier­ten Ei­gen­schaf­ten verfügen. Die Parameter, die Sie dafür festlegen können, sind diese:

  • First
  • Last
  • Unique
  • Skip
  • Index

Im folgenden Beispiel nutzen wir die Power­Shell-Commands Get-Process und Sort-Object, um die drei Prozesse an­zu­zei­gen, die zum Zeitpunkt der Eingabe den höchsten Ar­beits­spei­cher­ver­brauch aufweisen.

Get-Process | Sort-Object -Property WS | Select-Object -Last 3
shell

24. Set-Alias

Windows-Shortcuts sind eine gute Mög­lich­keit, um Aktionen noch schneller aus­zu­füh­ren. Grund­sätz­lich bietet auch Power­Shell diese Option. Im System können Sie mit dem Cmdlet Set-Alias eine Abkürzung für un­ter­schied­li­che Power­Shell-Befehle de­fi­nie­ren. Im folgenden Beispiel erstellen wir für die aktuelle Sitzung den Alias „ci“ für den Command Get-ChildItem.

PS> Set-Alias -Name ci -Value Get-ChildItem
PS> Get-Alias -Name ci
shell

25. Set-Location

Möchten Sie den Ar­beits­spei­cher­ort wechseln, nutzen Sie dafür den Befehl Set-Location. Mögliche neue Spei­cher­or­te sind Ver­zeich­nis­se, Un­ter­ver­zeich­nis­se, Re­gis­trie­rungs­spei­cher­or­te oder An­bie­ter­pfa­de. Im folgenden Beispiel bestimmen wir das Laufwerk C: zum aktuellen Spei­cher­ort:

PS C:\Windows\> Set-Location HKLM:\
PS HKLM:\> Set-Location C:
PS C:\Windows\>
shell

26. Set-Service

Mit dem Cmdlet Set-Service können Sie mit einem Dienst in­ter­agie­ren und diesen starten, beenden oder anhalten. Auch eine Änderung der Ei­gen­schaf­ten dieses Dienstes ist so möglich. Im folgenden Beispiel ändern wir den An­zei­ge­na­men eines Dienstes von „Neue Work­sta­tion“ in „Alte Work­sta­tion“.

Set-Service -Name Neue Workstation -DisplayName "Alte Workstation"
shell

27. Set-TimeZone

Wenn Sie die Zeitzone Ihres Systems verändern möchten, ist der Command Set-TimeZone die richtige Wahl. Wollen Sie die ko­or­di­nier­te Weltzeit als neue Sys­tem­zeit ein­stel­len, ist dies der passende Befehl:

Set-TimeZone -Id "UTC"
shell

28. Restart-Computer

Sie haben die Mög­lich­keit, das Be­triebs­sys­tem auf Ihrem lokalen Rechner oder einem Remote Computer neu zu starten. Die passenden Power­Shell-Befehle namens Restart-Computer sehen fol­gen­der­ma­ßen aus:

Für Ihren lokalen Rechner:

Restart-Computer
shell

Für bestimmte andere Computer in Ihrem Netzwerk:

Restart-Computer -ComputerName Server01, Server03
shell

29. Restart-Service

Wenn Sie einen Dienst über Power­Shell-Befehle beenden und neu­star­ten möchten, ist Restart-Service der passende Cmdlet. So starten Sie zum Beispiel alle Dienste neu, die mit „Net“ beginnen:

PS C:\> Restart-Service -DisplayName "net*"
shell

30. Clear-Re­cy­cle­Bin

Der Pa­pier­korb sollte re­gel­mä­ßig geleert werden. Die Leerung ist auch über die Power­Shell möglich. Der Befehl lautet Clear-Re­cy­cle­Bin.

Clear-RecycleBin
shell

31. Get-Com­pu­ter­In­fo

Der Befehl Get-Com­pu­ter­In­fo wird verwendet, um System- und Be­triebs­sys­tem­ei­gen­schaf­ten abzurufen.

Get-ComputerInfo
shell

32. Move-Item

Es gibt ver­schie­de­ne Power­Shell-Befehle, wenn Sie ein Element von einem an einen anderen Spei­cher­ort ver­schie­ben möchten. Die gängigste Mög­lich­keit ist al­ler­dings Move-Item. In diesem Beispiel verlegen wir die Datei alt.txt vom Laufwerk C: in das Ver­zeich­nis D:\Temp und benennen sie zu­sätz­lich um in neu.txt.

Move-Item -Path C:\alt.txt -Destination D:\Temp\neu.txt
shell

Mo­ni­to­ring und Debugging mit den passenden Power­Shell-Befehlen

Besonders nützlich sind außerdem jene Power­Shell-Commands, mit denen Sie Ihr System über­wa­chen und über­prü­fen können. Dies ist gerade dann von Vorteil, wenn Sie ein neues Netzwerk und dessen Per­for­mance unter rea­lis­ti­schen Be­din­gun­gen testen möchten. Folgende Power­Shell-Befehle dürften sich hierbei als nützlich erweisen.

33. Debug-Process

Debugging ist ein wichtiger Prozess, um si­cher­zu­stel­len, dass alle Ein­stel­lun­gen und Prozesse feh­ler­frei laufen. Dafür müssen Sie zunächst die passenden Debugger down­loa­den und kon­fi­gu­rie­ren. Ist dies geschehen, wenden Sie sie mit dem Befehl Debug-Process an. Im folgenden Beispiel nutzen wir einen Debugger für den Explorer:

PS C:\> Debug-Process -Name "Explorer"
shell

Möchten Sie mehrere Prozesse gleich­zei­tig debuggen, so un­ter­tei­len Sie diese einfach per Kommata.

34. Enable-PS­Break­point

Wenn Sie bestimmte Hal­te­punk­te (so­ge­nann­te Break­points) ak­ti­vie­ren möchten, nutzen Sie den Befehl Enable-PS­Break­point. Dieser setzt den Wert des Cmdlets aus tech­ni­scher Sicht auf „true“. Mit diesen Power­Shell-Befehlen aktiveren Sie alle Hal­te­punk­te der aktuellen Sitzung:

Get-PSBreakpoint | Enable-PSBreakpoint
shell

Diesen Command nutzen Sie, um Hal­te­punk­te mit Hilfe ihrer ID zu ak­ti­vie­ren:

Enable-PSBreakpoint -ID 0, 3, 4
shell

35. Disable-PS­Break­point

Möchten Sie Power­Shell Hal­te­punk­te wieder de­ak­ti­vie­ren, gibt es auch für diesen Zweck den passenden Cmdlet namens Disable-PS­Break­point. Technisch gesehen, wird dafür der Wert des Befehls Enable-PS­Break­point auf „false“ gesetzt. Um einen Hal­te­punkt mit der ID 0 zu de­ak­ti­vie­ren, geben Sie Folgendes ein:

Disable-PSBreakpoint -Id 0
shell

36. Get-Counter

Verwenden Sie Windows-Geräte, können Sie über die Power­Shell deren Leis­tungs­da­ten abrufen. Der passende Befehl dafür ist Get-Counter. Sie können den Befehl sowohl für Ihren lokalen Rechner als auch für Remote Computer anwenden. Im folgenden Beispiel rufen wir die Daten des lokalen Computers ab:

Get-Counter -ListSet *
shell

37. Start-Sleep

Gerade bei einer Über­be­las­tung des Systems kann es sehr wichtig sein, dass Sie ein Skript oder eine Sitzung auch pausieren kann. Die Power­Shell bietet dafür den Command Start-Sleep. Dabei geben Sie den Zeitraum an, in dem die Ak­ti­vi­tä­ten un­ter­bun­den werden sollen. Im folgenden Beispiel stoppt die Aus­füh­rung für zwei Sekunden.

Start-Sleep -Seconds 2
shell

38. Test-Path

Mit Hilfe des Befehls Test-Path über­prü­fen Sie, ob alle Elemente eines be­stimm­ten Pfads vorhanden sind. Die möglichen Er­geb­nis­se lauten „True“ oder „False“.

Test-Path -Path "C:\Documents and Settings\Nutzer"
False
shell

39. Test-Con­nec­tion

Auch die Ver­bin­dun­gen innerhalb Ihres Netzwerks können Sie mit der Power­Shell testen. Diese sendet über den Befehl Test-Con­nec­tion ein ICMP-Echo­an­for­de­rungs­pa­ket an fest­ge­leg­te Empfänger und fordert über dieses Internet Control Message Protocol eine Antwort an. In unserem Beispiel senden wir dem Server02 eine Anfrage über das IPv6-Protokoll.

Test-Connection -TargetName Server02 -IPv6
shell

40. Get-WinEvent

Benötigen Sie Einsicht in eines oder mehrere Er­eig­nis­pro­to­kol­le, stehen Ihnen un­ter­schied­li­che Power­Shell-Befehle zur Verfügung. Der prak­tischs­te Cmdlet ist Get-WinEvent. Für sämtliche Pro­to­kol­le von Ihrem lokalen Computer geben Sie folgenden Command ein:

Get-WinEvent -ListLog *
shell
Zum Hauptmenü