OK, estou perdendo o controle. PowerShell está me incomodando. Eu gostaria que uma caixa de diálogo de pausa aparecesse, mas não vai.
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
fonte
fonte
if (!$psise) { <# pause #> }
. Se você é como eu e 99% do motivo pelo qual você quer uma pausa é para poder ler a tela antes que ela pisque, isso vai ajudar, porque se você estiver no ISE, ela não piscará e você não não preciso de uma pausaRespostas:
(Não é a maneira do PowerShell, mas é muito mais elegante.)
Salve as árvores. Use one-liners.
fonte
Acho que vale a pena recapitular / resumir as opções aqui para maior clareza ... e então oferecer uma nova variação que acredito fornecer a melhor utilidade.
<1> ReadKey (System.Console)
<2> ReadKey (RawUI)
<3> cmd
<4> Read-Host
<5> Composto ReadKey
Este é um composto de <1> acima com a solução alternativa / kludge do ISE extraída da proposta no Blog de Tecnologia de Adam (cortesia de Nick em comentários anteriores nesta página). Fiz duas pequenas melhorias no último: adicionei Test-Path para evitar um erro se você usar Set-StrictMode (você usa , não é ?!) e o Write-Host final para adicionar uma nova linha após seu pressionamento de tecla para colocar o prompt no lugar certo.
fonte
AllowCtrlC
parâmetro à opção 2 permite que o usuário clique em Ctrl + C sem encerrar o script. No entanto, essa escolha ainda não exclui adequadamente a tecla modificadora Ctrl. (age como se o usuário clicasse apenas na tecla Ctrl) Referência: Microsoft TechNet - Windows PowerShell Dica: pressione qualquer tecla para continuarPresumo que você deseja ler a entrada do console. Se sim, use
Read-Host
.fonte
As soluções
cmd /c pause
fazem com que um novo interpretador de comandos seja iniciado e executado em segundo plano. Embora seja aceitável em alguns casos, isso não é realmente ideal.As soluções que usam
Read-Host
forçam o usuário a pressionar Entere não são realmente "nenhuma tecla".Esta solução fornecerá uma interface verdadeira de "pressione qualquer tecla para continuar" e não iniciará um novo interpretador, que essencialmente imitará o
pause
comando original .fonte
Além da resposta de Michael Sorens :
<6> ReadKey em um novo processo
fonte
-NoNewWindow
tenha sido adicionado :)