OK, ich verliere es. PowerShell nervt mich. Ich möchte, dass ein Pausendialog angezeigt wird, der jedoch nicht angezeigt wird.
PS W:\>>> $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
Exception calling "ReadKey" with "1" argument(s): "The method or operation is not implemented."
At line:1 char:23
+ $host.UI.RawUI.ReadKey <<<< ("NoEcho")
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
powershell
Derrick Bell
quelle
quelle
if (!$psise) { <# pause #> }
. Wenn Sie wie ich sind und zu 99% eine Pause wünschen, damit Sie den Bildschirm lesen können, bevor er wegblinkt, hilft dies, denn wenn Sie sich in der ISE befinden, blinkt er nicht weg und Sie ziehen nicht an Ich brauche keine PauseAntworten:
(Es ist nicht die PowerShell-Methode, aber es ist viel eleganter.)
Rette Bäume. Verwenden Sie Einzeiler.
quelle
Ich denke, es lohnt sich, die Auswahl hier aus Gründen der Klarheit zusammenzufassen / zusammenzufassen ... und dann eine neue Variante anzubieten, von der ich glaube, dass sie den besten Nutzen bietet.
<1> ReadKey (System.Console)
<2> ReadKey (RawUI)
<3> cmd
<4> Read-Host
<5> ReadKey-Verbund
Dies ist eine Zusammenstellung von <1> oben mit der ISE-Problemumgehung / Kludge, die aus dem Vorschlag in Adams Tech-Blog extrahiert wurde (mit freundlicher Genehmigung von Nick aus früheren Kommentaren auf dieser Seite). Ich habe zwei kleinere Verbesserungen an letzterem vorgenommen: Test-Path hinzugefügt, um einen Fehler zu vermeiden, wenn Sie Set-StrictMode verwenden (Sie tun es, nicht wahr?! ) Und den letzten Write-Host, um nach Ihrem Tastendruck eine neue Zeile hinzuzufügen, um das zu setzen Eingabeaufforderung an der richtigen Stelle.
quelle
AllowCtrlC
der Benutzer durch Hinzufügen des Parameters zu Auswahl 2 auf Strg + C klicken kann, ohne das Skript zu beenden. Trotzdem schließt diese Auswahl die Modifikationstaste Strg noch nicht richtig aus. (Es verhält sich so, als ob der Benutzer nur auf die Strg-Taste klickt.) Referenz: Microsoft TechNet - Windows PowerShell Tipp: Drücken Sie eine beliebige Taste, um fortzufahrenIch gehe davon aus, dass Sie Eingaben von der Konsole lesen möchten. Wenn ja, verwenden Sie
Read-Host
.quelle
Die Lösungen wie
cmd /c pause
bewirken, dass ein neuer Befehlsinterpreter im Hintergrund gestartet und ausgeführt wird. Obwohl dies in einigen Fällen akzeptabel ist, ist dies nicht wirklich ideal.Die verwendeten Lösungen
Read-Host
zwingen den Benutzer zum Drücken Enterund sind nicht wirklich "irgendeine Taste".Diese Lösung gibt Ihnen eine echte "Drücken Sie eine beliebige Taste, um fortzufahren" -Schnittstelle und startet keinen neuen Interpreter, der im Wesentlichen den ursprünglichen
pause
Befehl nachahmt.quelle
Neben der Antwort von Michael Sorens :
<6> ReadKey in einem neuen Prozess
quelle
-NoNewWindow
es nicht hinzugefügt wurde :)