Chaves de limite do PowerShell aceitas por script de pausa

1

Colocar as seguintes linhas no final de um script do PowerShell tem a seguinte funcionalidade:

  if($Host.Name -eq "ConsoleHost")
  {
    Write-Host "Press any key to continue..." -NoNewline
    $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp") > $null
  }
  1. Se eu executar o script clicando com o botão direito, indo para "Executar com o PowerShell", a janela do console permanecerá aberta até que eu pressione qualquer tecla para continuar.
  2. Se eu já tiver uma janela do PowerShell aberta e executar o script nessa janela, embora o texto "Pressione qualquer tecla para continuar" ainda apareça, não preciso pressionar nada para continuar; Ele faz isso sozinho. Assim, posso executar imediatamente outra coisa depois.

Eu gosto desse comportamento, mas eu preferiria limitá-lo a um subconjunto específico de chaves (ou até mesmo a uma única tecla, como a tecla enter), se possível. Usar o read-host não funciona, então ainda preciso inserir a entrada mesmo quando estiver em execução em outra janela do PowerShell; o objetivo é simplesmente impedir que a janela seja fechada quando eu a executar no menu de contexto. Eu não deveria ter que inserir nada ao executar a partir de um console do PowerShell já existente.

Basicamente, gosto da funcionalidade do código que tenho acima, mas quero limitar as chaves às quais se aplica.

É possível conseguir isso? Se sim, como?

    
por ereHsaWyhsipS 18.07.2018 / 00:50

1 resposta

0

Quanto a isso ...

the goal is to simply stop the window from closing when I run it from the context menu

Todos nós sabemos que a razão pela qual isso acontece é que o menu de contexto está executando o powershell.exe e seu script é um argumento. Então, é para fechar. Você não pode fazer o que está procurando no menu de contexto sem alterar a maneira como o menu de contexto executa a chamada para o host de script.

Claro que você pode entrar no registro e hackeá-lo para mudar isso. No entanto, para lidar rapidamente com, pelo menos, esta janela próxima, clique com o botão direito do mouse em um .ps1, sem reg hacking. Tente isso.

1 - Crie um novo atalho na área de trabalho e coloque o abaixo na caixa Destino.

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -noexit

2 - Dê o nome do atalho PowerShell, ou o que for

3 - Copie para sua pasta SendTo: C: \ Usuários \ SeuNomeUsuário \ AppData \ Roaming \ Microsoft \ Windows \ SendTo

Clique com o botão direito do mouse no seu script, selecione SendTo e selecione seu atalho.

Claro, é mais um clique, mas muito simples de implementar contra a gravação de material adicional.

Assim como na barra de tarefas, você pode praticamente colocar o que quiser na pasta SendTo para lidar com um tipo de arquivo no qual você gostaria de trabalhar / com / executar.

Quanto a isso ...

I would prefer to limit it to a specific subset of keys (or even just a single key, such as the enter key)

Eu sinceramente não tenho certeza do ponto (como você teria que mudar a mensagem e dizer ao usuário qual tecla pressionar, já que você está mudando o padrão), eu tenho certeza que você tem suas razões, mas claro que vai exigir um pouco mais de trabalho e eu teria que brincar com ele primeiro.

    
por 18.07.2018 / 09:21