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

 

 

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

Aktualisiert: 19.11.2016 von Bernhard |🔔 | Kommentare:1

Fragen / Kommentare


(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]

✍anonym
05.06.2018 09:12
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.

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details