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

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

Solicitando Entrada com o Read-Host

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

No seu nível mais básico, o cmdlet Read-Host simplesmente requer o uso do parâmetro Prompt. Esse parâmetro Prompt permite que você dê ao usuário do script alguma indicação sobre o que inserir. Por exemplo, se o seu script requer um nome de servidor, você pode optar por usar o Read-Host para solicitar ao usuário que insira isso quando o script for executado.

Você pode ver abaixo que ao executar o Read-Host dentro do console do PowerShell usando o parâmetro Prompt, o PowerShell está interrompendo toda a execução e exibindo minha mensagem de prompt, dando ao usuário uma mensagem explicativa sobre o que estamos buscando.

Read-Host PowerShell prompt

Vamos incorporar isso a um script. Sempre que um usuário insere informações no prompt, o Read-Host retorna essas informações de volta para o seu código. Você pode capturar facilmente 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, gostaria de enviar um aviso ao usuário informando que realmente, realmente preciso desse 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 construção 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, nunca é uma boa ideia ter senhas armazenadas em texto simples na memória também. Para contornar isso, o PowerShell tem um conceito chamado de string segura, que é uma string simples que está 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 dizer que eu tenho um segredo profundo e sombrio que não quero que ninguém saiba, mas preciso passar essa senha para algum tipo de software. Você pode ver abaixo que quando eu não uso AsSecureString, você está no meu encalço! 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 string segura 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/