Befehlshistory in PowerShell

In der Windows PowerShell gibt es neben den Pfeiltasten "Pfeil nach oben" bzw. "Pfeil nach unten", die durch die letzten Befehle navigieren, noch weitere Möglichkeiten, um durch bereits abgesetzte Befehle zu navigieren. Dabei gibt es zwei verschiedene Formen der History in PowerShell: Eine ist auf die Dauer der Session beschränkt und die Zweite wird auch darüber hinaus gespeichert.

Hinweis:
Getestet wurde dieser Artikel unter Windows 10 1607 und PowerShell 5.1.14393.953.

Temporäre History

In der temporären History werden alle eingegebenen Befehle nur für die Dauer der Sitzung gespeichert. Eine Liste dieser Befehle lässt sich mit folgendem Befehl ausgeben:

Get-History

Wenn ein Befehl gesucht werden soll, der einen bestimmten Teilstring enthält, kann folgender Befehl verwendet werden:

Get-History | Select-String "ping"

Da der obige Befehl keine IDs ausgibt, die eventuell gebraucht werden, kann der Befehl wie folgt abgeändert werden (LineNumber entspricht dabei der ID des Befehls):

Get-History | Select-String "ping" | Format-Table -Property LineNumber, Line

Wer die Überschriften jetzt noch etwas schöner haben möchte, kann diese auch noch anpassen:

Get-History | Select-String "ping" | Format-Table -Property @{Name="ID";Expression={$_.LineNumber}}, @{Name="Befehl";Expression={$_.Line}}

Ein bestimmter Befehl aus der Liste lässt sich schließlich auch mit Hilfe seiner ID erneut ausführen:

Invoke-History -Id 2

In diesem Beispiel würde der Befehle hostname ausgeführt werden.

Soll die temporäre History geleert werden, kann folgender Befehl verwendet werden:

Clear-History

Gesamte History

Darüber hinaus gibt es noch eine History, die das Beenden der Session überlebt. Diese Befehle werden in einer Textdatei im Userprofil gespeichert: %AppData%\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

Mit folgendem Befehl lassen sich diese Befehle direkt in der PowerShell anzeigen:

Get-Content (Get-PSReadlineOption).HistorySavePath

Löschen lässt sich diese History mit folgendem Befehl:

Remove-Item (Get-PSReadlineOption).HistorySavePath

Befehle aus History durchsuchen

Ähnlich wie in der Linux-Shell lassen sich Befehle auch durchsuchen. Es reicht die Tasten StrgR zu drücken und der Anfang des Befehls einzugeben:

Im oberen Beispiel habe ich get eingegeben und mir wird oberhalb direkt ein gefundener Befehl angezeigt. Mit Tabulator könnte ich den Befehl übernehmen, um ihn weiter zu bearbeiten oder auszuführen.

Hinweis:
Mit erneutem Drücken der Tasten Strg + R können die gefundenen Befehle weiter durchsucht werden.

Beitrag kommentieren

Bitte verfasse einen Kommentar.

Dein Kommentar wird vor der Freischaltung von einem Admin moderiert.