In Windows 10 bietet PowerShell die Möglichkeit, den Verlauf der in der aktuellen Sitzung ausgeführten Befehle einzusehen. Für viele Anwender ist dies jedoch nicht ausreichend. Sie benötigen eine Übersicht über Befehle, die sitzungsübergreifend eingegeben wurden. Wenn Sie den PowerShell-Befehlsverlauf abrufen müssen und der aktuelle Sitzungsverlauf nicht genügt, kann ein spezielles Skript und eine Protokolldatei Abhilfe schaffen.
Befehlsverlauf der aktuellen Sitzung
Wenn Sie PowerShell 5 oder höher verwenden, können Sie den Befehlsverlauf der aktuellen Sitzung mit folgendem Befehl anzeigen:
Get-History
Standardmäßig speichert PowerShell bis zu 50 Befehle. Diese Anzahl kann jedoch angepasst werden. Öffnen Sie PowerShell, klicken Sie mit der rechten Maustaste auf die Titelleiste und wählen Sie im Kontextmenü „Eigenschaften“. Im Eigenschaftsfenster wechseln Sie zum Reiter „Optionen“. Dort finden Sie den Abschnitt „Befehlsverlauf“, wo der Standardwert auf 50 eingestellt ist. Ändern Sie diesen Wert nach Bedarf.
PowerShell-Verlaufsprotokoll
Um das Verlaufsprotokoll einzusehen, müssen Sie zunächst das PSReadLine-Modul installieren. Dies geschieht mit folgendem Befehl:
Install-Module PSReadLine
Nach der Installation führen Sie den nächsten Befehl aus, der Ihnen den Speicherort einer Datei zurückgibt. Diese Datei enthält den vollständigen Verlauf aller von Ihnen in PowerShell ausgeführten Befehle:
(Get-PSReadlineOption).HistorySavePath
Sitzungsübergreifender PowerShell-Befehlsverlauf
Dieser Prozess ist etwas aufwendiger, aber die Mühe lohnt sich. Die folgende Lösung stammt von Intel. Öffnen Sie zunächst den folgenden Pfad und überprüfen Sie, ob sich dort eine Datei namens „Microsoft.PowerShell_profile.ps1“ befindet:
C:Users<username>DocumentsWindowsPowerShell
Sollte die Datei nicht existieren, öffnen Sie PowerShell und führen Sie den nächsten Befehl aus. Dadurch wird Ihre Profildatei in Notepad geöffnet. Da die Datei noch nicht existiert, wird PowerShell Sie darüber informieren und fragen, ob Sie sie erstellen möchten. Bestätigen Sie die Erstellung der Datei.
notepad $Profile
Schließen Sie die geöffnete Notepad-Datei. In PowerShell können Sie überprüfen, ob Sie PowerShell 5 oder höher verwenden, indem Sie folgenden Befehl ausführen:
$PSVersionTable.PSVersion
Setzen Sie anschließend Ihre Ausführungsrichtlinie auf „RemoteSigned“ mit folgendem Befehl:
set-executionpolicy remotesigned
Nun müssen Sie die Module PsUrl und PSReadline installieren. Dies ist mit folgendem Befehl möglich. Sollte es zu Fehlermeldungen kommen, können Sie die Module manuell installieren, indem Sie den Anweisungen auf den verlinkten Seiten folgen, oder Sie fügen das Repository als vertrauenswürdig hinzu und führen den Befehl erneut aus.
install-module PsUrl
install-module PSReadline
Nachdem die Module installiert sind, öffnen Sie folgende Datei:
C:Users<username>DocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1
Fügen Sie den folgenden Code in die Datei ein und speichern Sie sie:
$HistoryFilePath = Join-Path ([Environment]::GetFolderPath('UserProfile')) .ps_history Register-EngineEvent PowerShell.Exiting -Action { Get-History | Export-Clixml $HistoryFilePath } | out-null if (Test-path $HistoryFilePath) { Import-Clixml $HistoryFilePath | Add-History } # if you don't already have this configured... Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward
Um den Befehlsverlauf in PowerShell einzusehen, verwenden Sie den Befehl „Get-History“. Es gibt jedoch eine wichtige Sache zu beachten, damit der Verlauf auch gespeichert wird: Sie dürfen PowerShell nicht über die Schaltfläche „Schließen“ beenden. Nutzen Sie stattdessen immer den Befehl „exit“.
Mit den Pfeiltasten nach oben und unten können Sie durch die vorherigen Befehle navigieren.