Frage Gibt es in PowerShell eine Möglichkeit, einen getippten Befehl in den Verlauf zu speichern, ohne ihn für die spätere Ausführung auszuführen?


Gibt es in Powershell eine Möglichkeit, nach Eingabe eines langen oder komplizierten Befehls diesen Befehl in den History-Puffer zu übernehmen, aber nicht auszuführen?

Sie beginnen beispielsweise mit der Eingabe eines Git-Commits innerhalb von posh-git: directory:

git commit -m "Added the library 'ASDF' and did some initial integration into the project" [pause]

Und genau, wenn du das eintippst, denke ich ... Äh, ich muss zuerst etwas machen, wie eine zusätzliche Datei hinzufügen, um etwas anderes zu tun oder ein Verzeichnis oder etwas zu erstellen (erfundene Situation, ich weiß, dass Powershell es wird) Erstelle es automatisch und erkenne, dass git die "commit" ändern kann.) Also möchte ich diese Commit-Nachricht in einen History-Puffer speichern, aber ohne sie auszuführen, um später zurückgerufen zu werden, zusätzliche Dateien zu stapeln oder etwas zu tun kurz bevor.

Laut diesem Artikel sind Windows PowerShell-Tastenkombinationen: http://technet.microsoft.com/en-us/library/ee176868.aspx scheint es keinen Tastenanschlag zu geben.

ESC-Taste (und STRG + C) wird den Befehl abbrechen, und löschen Sie es ... Was ich brauche, ist in den Verlauf zu speichern, später ausgeführt werden, so dass meine Eingabe erhalten. Gibt es dafür einen Tastenanschlag?


4
2018-06-11 14:34


Ursprung




Antworten:


Nun, Sie können immer ein Kommentar-Tag vor dem Befehl wie folgt setzen:

#Get-ChildItem

Wenn Sie zur Ausführung bereit sind, führen Sie den Pfeil bis zum Befehlshit Zuhause dann Del, dann Eingeben ausführen.


10
2018-06-11 14:52



Das ist ziemlich schlau. danke für den Vorschlag! - enorl76
Ja. Benutze diesen Trick für immer. Ich habe meine oneliner auch so kommentiert, weil ich vielleicht die Geschichte von nun an noch einmal gelesen habe (bash). - bgStack15


Viele der Befehle unterstützen a -whatif Parameter, den Sie später anhängen und entfernen können. Allerdings muss ich sagen, dass ich die Kommentaridee besser finde.


1
2018-06-13 14:43



whatif ist gut, aber nicht alle Befehle unterstützen es - Keltari


Dies scheint auch nach einigen Spielen mit invoke zu funktionieren:

$VariableName = "Windows Command"

Dann, um auszuführen:

Invoke-Expression "$VariableName"

Ein Beispiel mit Ping:

enter image description here

Ich konnte auch PowerShell-Ausdrücke genau so verwenden:

PS H:> $ Outlooks = "Get-Prozess -Name Outlook -Verbose | fl   StartTime, Threads "PS H:> Invoke-Ausdruck" $ Outlooks "

Im Wesentlichen glaube ich, was passiert, ist, dass wir eine Zeichenfolge für die erste Variable erstellen (genau, wie es aussieht, geradeaus), und dann, wenn wir unsere Variable in "" aufrufen, zwingt der Interpreter die Variable zu erweitern, was sie verursacht den richtigen Befehl aufrufen.


1
2018-06-14 19:30