Sichere Eingabemethoden mit der Powershell
10. März 2016Powershell-Eingaben werden meist in entsprechende Variablen oder Arrays überführt. Beispielsweise könnte ein Skript mit dem Cmdlet „Read-Host“ nach bestimmten Informationen v erlangen. In folgendem Beispiel wird nach dem Namen des Benutzers gefragt, und dieser als String in der entsprechenden Variable ($name) abgelegt:
$name = Read-Host “Who are you?“
Dabei wird die Eingabe im Powershell-Fenster sichtbar, das ist bei einem Benutzernamen meist nicht weiter problematisch, falls allerdings nach einem bestimmten Kennwort gefragt wird, sollten die Zeichen während der Eingabe nicht auf dem Bildschirm dargestellt werden. Hier könnten die Systembetreuer beispielsweise mit folgender Lösungsmöglichkeit ansetzen, und den Parameter „-AsSecureString“ verwenden:
$password = Read-Host “Please enter your password…“ -AsSecureString
Um den „Secure String“ später weiterzuverarbeiten, kann mit folgenden Cmdlet der Wert wieder in den Klartext übersetzt werden:
[Runtime.InteropServices.Marshal]::PtrToStringAuto
([Runtime.InteropServices.Marshal]::SecureStringToBSTR($password))
Das Skript wurde zur besseren Lesbarkeit in zwei Zeilen unterteilt, wird aber von der Powershell als zusammenhängendes Cmdlet erwartet.