Como solicitar a entrada do usuário no PowerShell
- 
          
            Use o Read-Hostpara Solicitar Entrada do Usuário no PowerShell
- 
          
            Use os Parâmetros Mandatorypara Solicitar Entrada do Usuário no PowerShell
- 
          
            Use o PromptForChoicepara Solicitar Entrada do Usuário no PowerShell
- Conclusão
 
Na programação PowerShell, interagir com usuários para coletar entradas é um requisito comum. Seja para personalização, tomada de decisões ou navegação, solicitar entradas dos usuários é essencial.
Este artigo explora vários métodos de solicitação de entrada do usuário no PowerShell, incluindo o método Read-Host, o método do parâmetro Mandatory e o método PromptForChoice. Cada método oferece capacidades únicas e é adequado para diferentes cenários, aprimorando a interatividade e a usabilidade dos scripts PowerShell.
Use o Read-Host para Solicitar Entrada do Usuário no PowerShell
O cmdlet Read-Host solicita a entrada do usuário e lê uma linha de entrada do console. O Read-Host pode aceitar apenas 1022 caracteres como entrada de um usuário.
O parâmetro -Prompt é usado para especificar um texto que fornece informações sobre o que deve ser inserido. Ele adiciona um dois-pontos : ao texto que você insere.
Exemplo:
Read-Host -Prompt "Enter your name"
Neste exemplo, quando utilizamos o Read-Host, ele solicita ao usuário a mensagem "Digite seu nome" e, em seguida, pausa a execução do script, aguardando a entrada. Depois que o usuário insere seu nome e pressiona Enter, o script continua a execução.
No entanto, como não estamos capturando ou armazenando a entrada em uma variável nem realizando quaisquer ações subsequentes com base na entrada recebida, este exemplo demonstra principalmente a funcionalidade básica do Read-Host sem processamento adicional da entrada do usuário.
Saída:

O Read-Host pausa a execução e recebe a entrada. Quando um usuário insere o valor no prompt, ele retorna o mesmo valor.
Ele não aceita entrada do pipeline do PowerShell. Aqui está outro exemplo:
$name = Read-Host "Enter your name"
Write-Output "Hello, $name!"
Neste exemplo, usamos o Read-Host para solicitar ao usuário que insira seu nome. A string "Digite seu nome" serve como a mensagem de prompt.
A entrada do usuário é armazenada na variável $name. Em seguida, usamos Write-Output para exibir uma mensagem de saudação personalizada, incorporando o valor inserido pelo usuário.
Com o cmdlet Read-Host, podemos salvar a entrada como uma string segura, tornando-o uma ferramenta inestimável para coletar informações sensíveis, como senhas. Este cmdlet nos permite solicitar aos usuários dados seguros, garantindo a confidencialidade e a segurança.
Saída:

O parâmetro -AsSecureString exibe asteriscos * no lugar dos caracteres que o usuário insere como entrada. Com este parâmetro, a saída do Read-Host é um objeto System.Security.SecureString.
Read-Host "Enter password" -AsSecureString
Neste exemplo, usamos o Read-Host com o parâmetro -AsSecureString para solicitar ao usuário que insira uma senha de forma segura. A mensagem de prompt "Digite a senha" é exibida ao usuário.
Quando o usuário insere a senha, ela é mascarada na tela, garantindo a confidencialidade. A senha é então armazenada como uma string segura na variável `$password$, pronta para processamento ou validação posterior.
Saída:

Use os Parâmetros Mandatory para Solicitar Entrada do Usuário no PowerShell
No PowerShell, o método do parâmetro Mandatory é uma maneira poderosa de solicitar entradas dos usuários, garantindo que certos parâmetros sejam necessários para a execução do script. Ao marcar parâmetros como Mandatory, os autores de scripts podem impor a fornecimento de valores de entrada essenciais, melhorando a confiabilidade e a usabilidade do script.
Aqui está um exemplo da função Name que solicita a entrada do usuário quando é executada.
Exemplo:
function Name {
    param(
        [Parameter(Mandatory)]
        [string]$name
    )
    Write-Output "Your name is $name."
}
Name
Neste exemplo, definimos uma função PowerShell chamada Name com um único parâmetro chamado name. Ao especificar [Parameter(Mandatory)], garantimos que o usuário deve fornecer um valor para o parâmetro name ao invocar a função.
A função então exibe uma mensagem incorporando o nome fornecido usando Write-Output.
Saída:

Use o PromptForChoice para Solicitar Entrada do Usuário no PowerShell
No PowerShell, o método PromptForChoice fornece uma maneira estruturada de solicitar aos usuários um conjunto de opções e receber sua escolha como entrada. Este método é particularmente útil ao apresentar aos usuários um menu ou lista de opções, permitindo uma experiência de execução de script mais interativa e amigável.
Exemplo:
$choicePrompt = "Choose an option:"
$choices = [System.Management.Automation.Host.ChoiceDescription[]]@(
    "&Option 1",
    "&Option 2",
    "&Option 3"
)
$defaultChoice = 0
$result = $host.UI.PromptForChoice("Title", $choicePrompt, $choices, $defaultChoice)
Write-Output "You selected $($choices[$result].Label)"
Neste exemplo, definimos uma mensagem de prompt e um array de opções e especificamos o índice da escolha padrão. Em seguida, usamos o método PromptForChoice para exibir a caixa de diálogo de prompt com as opções fornecidas.
A seleção do usuário é armazenada na variável $result, que usamos para recuperar o rótulo da opção escolhida e exibi-lo para o usuário.
Saída:

Conclusão
Solicitar entrada do usuário no PowerShell é crucial para criar scripts interativos e amigáveis. Ao utilizar métodos como Read-Host, parâmetros Mandatory e PromptForChoice, os autores de scripts podem coletar eficientemente a entrada do usuário, garantindo confiabilidade e segurança.
Seja coletando entradas de texto simples, impondo parâmetros obrigatórios ou apresentando aos usuários um conjunto estruturado de escolhas, esses métodos capacitam os autores de scripts a criar soluções de automação robustas e versáteis. Ao entender e aproveitar essas técnicas, os autores de scripts PowerShell podem melhorar a usabilidade e a eficácia de seus scripts, atendendo às diversas necessidades de usuários e administradores.
