PowerShell-Äquivalent von Strg + R?

13

In bash kann ich Ctrl+ Rausführen und einen Befehl eingeben, damit er in meinem Verlauf durchsucht wird.

Wie mache ich das in Powershell?

Gibt es eine Möglichkeit, einen Schlüssel an so etwas zu binden?

function GH($str) {get-history | select-string $str}

Aber ich müsste die Zeichenfolge für jede Zeicheneingabe neu lesen oder entfernen, um passende Befehle auszugeben, wie es Ctrl+ Rtut.

Ist das möglich?

red888
quelle

Antworten:

11

Sie können dies beheben, indem Sie das PSReadLine- Modul übernehmen.

Lesen Sie einen Artikel über Hey, Scripting Guy! Blog über diese Bash inspirierte Readline-Implementierung für PowerShell.

Insbesondere die Verwendung von Ctrl+ Alt+ ( Shift) +? um alle Tastenkombinationen anzuzeigen.

PS C:\> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.0.10240.16384
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.42000
BuildVersion                   10.0.10240.16384
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3

Ctrl+R

PS C:\> Get-Module -ListAvailable
bck-i-search: mo_

Ctrl+ Alt+ ( Shift) +S

Key                  Function                 Description
---                  --------                 -----------
Ctrl+r               ReverseSearchHistory     Search history backwards interactively
Ctrl+s               ForwardSearchHistory     Search history forward interactively

Kurz gesagt: Installieren Sie dieses Modul entweder manuell oder führen Sie ein Upgrade auf Windows PowerShell v5 durch.

MM
quelle
5

Geben Sie Ihren Suchbegriff ein und drücken Sie dann F8. Dadurch wird der Befehlsverlauf durchsucht.

Es gibt eine sehr nützliche Liste von Powershell - Verknüpfungen hier .

Sam Cogan
quelle
Hast du das selbst versucht? Es hat nie wirklich funktioniert oder nur die halbe Zeit. Zum Beispiel gebe ich eine Reihe von get- <whatever> -Befehlen ein. Geben Sie dann get- <F8> ein und es werden nur ein oder zwei zufällige Befehle aus meinem Verlauf durchlaufen? Ich weiß nicht, was zum Teufel es macht. Zum Beispiel habe ich gerade get-childitem eingegeben und habe es dann direkt nach get-c <f8> ausgeführt und ich bekomme nichts. Vielleicht ist meine Sitzung durcheinander?
Red888
Funktioniert 100% der Zeit für mich, dies ist mit WMF 5 installiert
Sam Cogan
5

Ich weiß nicht, wann dies hinzugefügt wurde, aber auf meinem nicht angepassten, aktualisierten Windows 10 ist es eingebaut. Drücken Sie Strg + R für die Suche nach dem umgekehrten Verlauf, es funktioniert großartig.

Bildbeschreibung hier eingeben

Skrebbel
quelle
Ich arbeite auch an win10. Strg + R funktioniert in Powershell, aber nicht in Cmd-Fenstern.
Dudu
Klar, aber warum brauchst du cmd.exe?
Raúl Salinas-Monteagudo
0

Es gibt auch eine grafische Suche unter der Taste F7. Wenn diese Taste gedrückt wird, wird ein Popup-Fenster angezeigt, in dem Sie nach einem zuvor ausgeführten Befehl suchen können. Drücken Sie die Eingabetaste, während sich der Cursor in der Zeile befindet, um sie erneut auszuführen.

termil0r
quelle
0

Sie können den Befehl auch starten, indem Sie ein # -Zeichen vor den Teil-Suchtext des gesuchten Befehls setzen und anschließend mehrmals tippen, um den Sitzungsverlauf zu durchsuchen.

Tolga
quelle