Pesquisar este blog

segunda-feira, 23 de outubro de 2017

Como construir um menu interativo dentro de um script do PowerShell




Os scripts do PowerShell geralmente não são escritos com a interatividade em mente. A automação é tudo sobre atividades Hands-off, mas há momentos em que você precisa escrever um script para você, mas para outros que talvez não conheçam o PowerShell como você.  

Você poderia escrever uma GUI para seu script, mas isso pode se complicar muito rapidamente. Talvez você só precisa de um jeito para um usuário fornecer rapidamente alguma entrada para um script. Para fazer isso, você pode criar pequenos menus interativos dentro de um script do PowerShell - veja como.
 
Existem algumas maneiras de criar um menu interativo no PowerShell.

 Uma maneira é usar um objeto .NET System.Management.Automation.Host.ChoiceDescription e o método PromptForChoice.

 Este é o caminho está bom, mas acredito que você tenha um pouco mais de controle sobre a mensagem se você projetar o seu próprio. Isto é o que vamos cobrir hoje.
 
O menu que estaremos criando será construído usando uma única função chamada Show-Menu e um loop do / until . Incluiremos algumas opções para escolher e uma opção para sair do menu a qualquer momento. A premissa é apresentar o usuário com algumas opções, permitir que eles executem essas opções e, em seguida, apresentar o menu novamente se quiserem executar outras opções.


 Para começar, você precisa de uma maneira de criar este menu em uma função do PowerShell. Isso precisa estar em uma função porque sempre que o usuário seleciona uma opção e o script executa o que quer que esteja nessa opção, precisamos mostrar o menu novamente.
Aqui está uma função de Show-Menu muito simples. Você notará que, essencialmente, ele apenas faz duas coisas: limpa a tela do host e depois escreve algum texto na tela. Não precisa fazer nada mais. Você poderia fazer isso melhor, movendo as opções como um parâmetro, se você quiser, o que tornaria mais reutilizável, mas isso depende de você.

function Show-Menu
{
     param (
           [string]$Title = 'My Menu'
     )
     cls
     Write-Host "================ $Title ================"
    
     Write-Host "1: Press '1' for this option."
     Write-Host "2: Press '2' for this option."
     Write-Host "3: Press '3' for this option."
     Write-Host "Q: Press 'Q' to quit."
}
Uma vez que a função é construída, então precisamos de uma maneira de exibi-la, fornecer entrada do usuário e então, quando o que acontecer realmente acontece quando uma opção é escolhida, queremos exibir o menu novamente. É por isso que escolhemos usar um loop do / until.
Um loop / até que o código seja executado imediatamente. Neste caso, ele mostra o menu e, em seguida, usa Read-Host para solicitar uma seleção.

do
{
     Show-Menu
     $input = Read-Host "Please make a selection"
     switch ($input)
     {
           '1' {
                cls
                'You chose option #1'
           } '2' {
                cls
                'You chose option #2'
           } '3' {
                cls
                'You chose option #3'
           } 'q' {
                return
           }
     }
     pause
}
until ($input -eq 'q')
Em seguida, estamos usando uma instrução switch para tomar uma decisão sobre o código a ser executado com base na opção selecionada. Aqui é onde você pode executar outro script, reiniciar um servidor, definir uma chave de registro, excluir um arquivo, etc.
Além disso, certifique-se sempre de incluir uma opção "Q". Esta é uma maneira para o usuário sair do loop se eles terminaram com o menu. E observe a palavra-chave da pausa; Isto é para evitar que o menu seja exibido de forma extremamente rápida novamente, mas quando não for necessariamente necessário.
Finalmente, o loop do loop continuamente se deslocará uma e outra vez até a opção "Q". Uma vez que a opção "Q" é selecionada, a construção até a compilação será satisfeita, que então irá sair do loop.


Retirado de: http://www.tomsitpro.com/articles/powershell-interactive-menu,2-961.html
Autor:  Adam Bertram 

Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.