So erhalten Sie den PowerShell-Befehlsverlauf unter Windows 10

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.