Хорошо, я теряю это. PowerShell меня раздражает. Я бы хотел, чтобы появился диалог паузы, а его не будет.
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
Деррик Белл
источник
источник
if (!$psise) { <# pause #> }
. Если вы похожи на меня и на 99% вам нужна пауза, чтобы вы могли прочитать экран до того, как он мигнет, это поможет, потому что если вы находитесь в ISE, он не мигает, и вы не мигаете. Пауза не нужнаОтветы:
(Это не способ PowerShell, но он намного элегантнее.)
Спасайте деревья. Используйте однострочники.
источник
Я думаю, что для ясности стоит повторить / резюмировать варианты выбора ... а затем предложить новый вариант, который, как я считаю, обеспечивает лучшую полезность.
<1> ReadKey (System.Console)
<2> Ключ чтения (RawUI)
<3> cmd
<4> чтение-хост
<5> Составной ключ ReadKey
Это составная часть приведенного выше <1> с обходным путем / путаницей ISE, извлеченной из предложения в блоге Adam's Tech (любезно предоставлено Ником из предыдущих комментариев на этой странице). Я внес два небольших улучшения в последнее: добавил Test-Path, чтобы избежать ошибки, если вы используете Set-StrictMode (вы делаете, не так ли ?!), и последний Write-Host, чтобы добавить новую строку после нажатия клавиши, чтобы поместить подскажите в нужном месте.
источник
AllowCtrlC
параметра к варианту 2 позволяет пользователю нажать Ctrl + C, не прерывая скрипт. Тем не менее, этот выбор по-прежнему должным образом не исключает клавишу-модификатор Ctrl. (действует так же, как если бы пользователь нажимал только клавишу Ctrl) Ссылка: Microsoft TechNet - Совет Windows PowerShell: нажмите любую клавишу, чтобы продолжитьЯ предполагаю, что вы хотите читать ввод с консоли. Если да, используйте
Read-Host
.источник
Такие решения, как
cmd /c pause
запуск и запуск нового интерпретатора команд в фоновом режиме. Хотя в некоторых случаях это приемлемо, на самом деле это не идеально.Решения, использующие
Read-Host
принудительное нажатие пользователем, на Enterсамом деле не являются «какой-либо клавишей».Это решение предоставит вам настоящий интерфейс «нажмите любую клавишу, чтобы продолжить» и не запустит новый интерпретатор, который по сути будет имитировать исходную
pause
команду.источник
В дополнение к ответу Майкла Соренса :
<6> ReadKey в новом процессе
источник
-NoNewWindow
не было добавлено :)