OK, tracę to. PowerShell mnie denerwuje. Chciałbym, aby pojawiło się okno dialogowe wstrzymania, ale się nie pojawi.
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
źródło
źródło
if (!$psise) { <# pause #> }
. Jeśli jesteś podobny do mnie i 99% powodu, dla którego chcesz pauzować, jest po to, abyś mógł przeczytać ekran, zanim zamrugnie, to pomoże, ponieważ jeśli jesteś w ISE, to nie mrugnie, a ty nie Nie potrzebuję przerwyOdpowiedzi:
(To nie jest sposób PowerShell, ale jest o wiele bardziej elegancki).
Ratuj drzewa. Użyj jednowierszowych.
źródło
Myślę, że dla jasności warto podsumować / podsumować wybory tutaj ... a następnie zaproponować nową odmianę, która moim zdaniem zapewnia najlepszą użyteczność.
<1> ReadKey (Konsola systemowa)
<2> ReadKey (RawUI)
<3> cmd
<4> Read-Host
<5> Kompozyt ReadKey
To jest połączenie <1> powyżej z obejściem / kludge ISE wyodrębnionym z propozycji na blogu technicznym Adama (dzięki uprzejmości Nicka z wcześniejszych komentarzy na tej stronie). Dokonałem dwóch drobnych ulepszeń w tym drugim: dodałem Test-Path, aby uniknąć błędu, jeśli używasz Set-StrictMode (robisz, prawda ?!) i ostatni Write-Host, aby dodać nową linię po naciśnięciu klawisza, aby umieścić podpowiedź we właściwym miejscu.
źródło
AllowCtrlC
parametru do wyboru 2 umożliwia użytkownikowi kliknięcie Ctrl + C bez kończenia skryptu. Niemniej jednak ten wybór nadal nie wyklucza poprawnie klawisza modyfikującego Ctrl. (zachowuje się tak, jakby użytkownik kliknął tylko klawisz Ctrl) Odniesienie: Microsoft TechNet - Windows PowerShell Wskazówka: naciśnij dowolny klawisz, aby kontynuowaćZakładam, że chcesz czytać dane wejściowe z konsoli. Jeśli tak, użyj
Read-Host
.źródło
Rozwiązania takie jak
cmd /c pause
powodują, że nowy interpreter poleceń uruchamia się i działa w tle. Chociaż w niektórych przypadkach jest to dopuszczalne, nie jest to idealne rozwiązanie.Rozwiązania wykorzystujące
Read-Host
zmuszają użytkownika do naciśnięciaEnter i tak naprawdę nie są „żadnym klawiszem”.To rozwiązanie da ci prawdziwy interfejs „naciśnij dowolny klawisz, aby kontynuować” i nie uruchomi nowego interpretera, który zasadniczo będzie naśladował oryginalne
pause
polecenie.źródło
Oprócz odpowiedzi Michaela Sorensa :
<6> ReadKey w nowym procesie
źródło
-NoNewWindow
że zostało dodane :)