Interactieve PowerShell-scripts met Read-Host: Een volledige handleiding

Met de Read-Host PowerShell-cmdlet kunt u interactief om invoer vragen van de gebruiker van het script. Laten we eens kijken naar enkele praktische toepassingen van hoe we de PowerShell-cmdlet Read-Host kunnen gebruiken.

Invoer opvragen met Read-Host

De Read-Host-cmdlet vervult twee functies in een PowerShell-script; het onderbreekt de uitvoering en ontvangt invoer. Dat is het. Read-Host is een eenvoudige cmdlet, maar wel een die handig is wanneer u informatie van de scriptgebruiker nodig heeft.

Op het meest elementaire niveau vereist de Read-Host-cmdlet simpelweg het gebruik van de Prompt-parameter. Met deze Prompt-parameter kunt u de scriptgebruiker een soort aanwijzing geven over wat ze moeten invoeren. Als uw script bijvoorbeeld een servernaam nodig heeft, kunt u ervoor kiezen Read-Host te gebruiken om de gebruiker te vragen dit in te voeren wanneer het script wordt uitgevoerd.

U kunt hieronder zien dat door Read-Host uit te voeren binnen de PowerShell-console zelf met behulp van de Prompt-parameter, PowerShell alle uitvoering stopt en mijn promptbericht weergeeft waarin de gebruiker een uitleg krijgt over wat we nodig hebben.

Read-Host PowerShell prompt

Laten we dit opnemen in een script. Telkens wanneer een gebruiker informatie invoert bij de prompt, geeft Read-Host die informatie terug aan uw code. U kunt deze informatie eenvoudig vastleggen door de uitvoer toe te wijzen aan een variabele. Misschien wil ik bijvoorbeeld vragen om een servernaam en vervolgens iets doen met die servernaam. Anders wil ik de gebruiker een waarschuwing sturen dat ik echt, echt die servernaam nodig heb.

$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."
}

Met behulp van een eenvoudige if/then-constructie kan ik er dan zeker van zijn dat mijn gebruiker een servernaam invoert. Zodra ze dat doen, kan ik deze vastleggen en er iets mee doen. Anders stuur ik een waarschuwingsbericht.

Warning when no input

Vragen om Wachtwoorden

Je moet weten dat het geen goed idee is om wachtwoorden in platte tekst op te slaan in je scripts. Evenzo is het nooit een goed idee om wachtwoorden in platte tekst in het geheugen op te slaan. Om dit te omzeilen, heeft PowerShell een concept genaamd een veilige tekenreeks, die een eenvoudige tekenreeks is die is versleuteld.

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!

Stel dat ik een diep, duister geheim heb dat ik niet wil dat iemand weet, maar ik moet dit wachtwoord doorgeven aan een soort software. Je kunt hieronder zien dat wanneer ik geen AsSecureString gebruik, je me doorhebt! Als ik echter AsSecureString gebruik, is mijn geheim veilig omdat elk karakter dat ik typ wordt vervangen door een asterisk en de uitvoer wordt opgeslagen als een veilige tekenreeks in plaats van een platte tekst.

Accepting secure input with Read-Host

Om de documentatie van Read-Host te raadplegen, bekijk de Microsoft Docs.

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