PowerShell - Umgang mit Passwörtern
Passwörter sollten natürlich niemals im Klartext in einer Skriptdatei hinterlegt werden. PowerShell bietet Möglichkeiten für einen sicheren Umgang mit Passwörtern. Als Beispiel kann ein Passwort für einen bestimmten Benutzer verschlüsselt als Textdatei gespeichert werden. Nur der jeweilige Benutzer kann die Datei entschlüsseln, für andere Benutzer ist die Datei wertlos.
Get-Credential
Für die Eingabe von Benutzername und Passwort bietet PowerShell folgendes cmdlet: Get-Credential
PS C:\Users\User> $cred=Get-CredentialCmdlet Get-Credential an der Befehlspipelineposition 1
Geben Sie Werte für die folgenden Parameter an:
PS C:\Users\User> $credUser
Name Password
-------- --------
username System.Security.SecureString
PSCredential-Object erzeugen und in eine Datei speichern
Einige Cmdlets können das erzeugte PSCredential-Object direkt verwenden. Werden die Anmeldeinformationen mehrfach benötigt, können diese natürlich in einer Variable gespeichert werden, bzw. in eine Datei für einen späteren Aufruf:
#Authentication Passwort File generieren:
if (-not (Test-Path "$($env:Temp)\myapp_password.txt")) {
$credential = Get-Credential
$credential.Password | ConvertFrom-SecureString | Set-Content "$($env:Temp)\myapp_password.txt"
}
PSCredential-Object von Datei lesen
Für das Erzeugen des PSCredential-Object aus einer Datei benötigen wir den Benutzernamen: Variable $user
$Credential=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, (Get-Content "$($env:Temp)\myapp_password.txt" | ConvertTo-SecureString)
Passwort in eine Datei speichern
Das Passwort kann auch direkt ohne "Get-Credential" in eine Datei gespeichert werden
"password" | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File "$($env:Temp)\myApp_password.txt"
Das Passwort "password" schaut in der Datei so aus:
Passwort aus der Datei auslesen und als Klartext-Passwort verwenden:
$SecureCredential = Get-Content "$($env:Temp)\myApp_password.txt" | ConvertTo-SecureString
$UnsecurePassword = (New-Object PSCredential "username",$SecureCredential).GetNetworkCredential().Password
{{percentage}} % positiv
DANKE für deine Bewertung!
Fragen / Kommentare
(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]
User: Stefan Unter dem Abschnitt "Passwort aus der Datei auslesen und als Klartext-Passwort verwenden:" hat sich folgender Fehler eingeschlichen. Die Variable "$SecurePassword" muss "$SecureCredential" heißen, so wie am Anfang der Zeile darüber festgelegt. Ergänzend könnte man noch "Write-Host $UnsecurePassword" als dritte Zeile notieren.