Scripts Interativos do PowerShell com Read-Host: Um Guia Completo

Usando o cmdlet PowerShell Read-Host, você pode interativamente solicitar a entrada do usuário do script. Vamos ver algumas aplicações do mundo real sobre como podemos usar o cmdlet PowerShell Read-Host.

Solicitando Entrada com Read-Host

O cmdlet Read-Host executa duas funções em um script PowerShell; ele pausa a execução e recebe entrada. É isso. Read-Host é um cmdlet simples, mas útil quando é necessário obter informações do usuário do script.

Em sua forma mais básica, o cmdlet Read-Host simplesmente requer o uso do parâmetro Prompt. Este parâmetro Prompt permite que você forneça ao usuário do script alguma indicação sobre o que inserir. Por exemplo, se o script exigir um nome de servidor, você pode optar por usar Read-Host para solicitar ao usuário que insira isso quando o script for executado.

É possível observar abaixo que, ao executar Read-Host dentro do console PowerShell usando o parâmetro Prompt, o PowerShell interrompe toda a execução e exibe minha mensagem de prompt, fornecendo ao usuário uma explicação sobre o que estamos procurando.

Read-Host PowerShell prompt

Vamos incorporar isso em um script. Sempre que um usuário insere informações no prompt, Read-Host retorna essas informações de volta para o seu código. Você pode facilmente capturar essas informações atribuindo a saída a uma variável. Talvez eu queira pedir um nome de servidor e depois fazer algo com esse nome de servidor. Caso contrário, eu gostaria de enviar um aviso ao usuário informando que realmente preciso daquele nome de servidor.

$serverName = Read-Host -Prompt 'Server name to process'
if ($serverName) {
    Write-Host "We can now use the server name [$serverName] in our code"
} else {
    Write-Warning -Message "No server name input."
}

Usando uma estrutura simples de if/then, posso garantir que o usuário insira um nome de servidor. Uma vez feito isso, posso capturá-lo e fazer algo com ele, caso contrário, enviar uma mensagem de aviso.

Warning when no input

Pedindo Senhas

Você deve saber que não é uma boa ideia armazenar senhas em texto simples em seus scripts. Da mesma forma, também não é uma boa ideia ter senhas armazenadas em texto simples na memória. Para contornar isso, o PowerShell possui um conceito chamado “secure string”, que é uma string simples criptografada.

A secure string can any kind of sensitive information; a password is a great example. What does this have to do with Read-Host? The Read-Host cmdlet has an AsSecureString parameter which allows the user to not only store the output as a secure string but also to show asterisk while typing to hide your secret from prying eyes!

Vamos supor que eu tenha um segredo profundo e obscuro que não quero que ninguém saiba, mas preciso passar essa senha para algum tipo de software. Você pode ver abaixo que, quando não uso AsSecureString, você descobre meu segredo! No entanto, se eu usar AsSecureString, meu segredo está seguro, pois cada caractere que digito é substituído por um asterisco e a saída é salva como uma “secure string” em vez de uma string de texto simples.

Accepting secure input with Read-Host

Para consultar a documentação do Read-Host, confira a Microsoft Docs.

Source:
https://adamtheautomator.com/read-host/