Auch die PowerShell merkt sich, wie jeder ordentliche Kommandointerpreter, die während der Sitzung eingegebenen Befehle. Somit kann man diese erneut verwenden, ohne diese neu eintippen zu müssen.
Diese gelten im übrigen (zum Teil) auch noch für die etwas betagte Eingabeaufforderung (cmd.exe) von Windows.
Am einfachsten ist die Möglichkeit dies mittels den Cursor-Tasten zu tun. Jedoch wird dies bei mehr als fünf Befehlen recht mühsam.
Besser ist da schon die Möglichkeit mit der Taste F7, diese zeigt eine Liste aller eingegebenen Befehle an. Navigiert wird auch hier mittels Cursor-Tasten.
Weitaus besser ist die Möglichkeit mit F8, hier kann dann auch vorgefiltert werden. Hierzu einfach einen Teil des Befehls eingeben und mit F8 durchblättern.
Sofern man die genaue ID des Befehls kennt (kann man gut mit F7 sehen), kann man diesen direkt mit F9 ausführen.
Editieren kann man den vorherigen Befehl natürlich auch, dies geht mit F2 (Kopieren bis Zeichen) und F4 (Löschen bis Zeichen).
Cmdlets zum Anzeigen der Historie
Es gibt auch ein passendes Cmdlet zur Anzeige der Historie, allerdings zeigt es nur bis max. 64 Befehle an: Get-History (alias history). Mit dem Schalter -count kann man die Ausgabe auf die letzten x Befehle reduzieren (in diesem Beispiel auf 20):
Get-Historie -count 20
Kennt man die ID des Befehls, kann man diesen auch direkt ausführen:
Get-Historie -ID <id>
Wesentlich besser ist jedoch der Einsatz eines Filters, hierbei ist das Select-String Cmdlet sehr hilfreich:
Get-Historie | Select-String „WMI“
In diesem Fall würden alle Befehle ausgegeben, die „WMI“ enthalten.
Die Historie der Befehle kann natürlich auch als csv-Datei exportiert werden:
Get-History | Select -unique | Convertto-Csv > historie.csv
Logfile der eingegebenen Befehle mitschreiben
Es ist natürlich auch möglich die Historie direkt in eine Datei mitloggen zu lassen. Hierzu macht man sich das Transcript zu nutze. Zuerst muss das Logfile festgelegt werden:
$Transcript = c:\log\mylog.txt
Danach wird dann noch das Transcript gestartet mit
Start-Transcript
Um das Transcript wieder zu beenden, einfach folgendes eingeben:
Stop-Transcript
Ich habe mir hierzu im PowerShell Profile folgende Zeilen angelegt:
$MyDate = Get-Date -Format yyyy-MM-dd
$MyLibDir = „z:\Programme\PowerShell“
$MyTransDir = „Z:\Programme\PowerShell\Transcript“
$Transcript = „$MyTransDir\Transcript_$MyDate.txt“
Start-Transcript
Die Profildatei kann über die Variable $profile erreicht werden. Um dieses mit dem Notepad zu editieren folgenden Befehl eingeben:
notepad $profile
Zusammenfassung der Tastenkürzel
Cursor-Tasten –> Befehle in Cursorrichtung einzeln anzeigen
F7 –> Liste der Befehle
F8 –> Filter auf Befehle
F9 –> Befehl mit bestimmter ID ausführen
F2 –> Kopieren bis Zeichen
F4 –> Löschen bis Zeichen