Tipps

Einen Secure String oder ein PSCredential-Objekt wieder in ein Klartextkennwort umwandeln

In Powershell ist es oft  notwendig, einen Secure-String zu erzeugen. SecureStrings werden z.B. zum Erstellen eines AD-Benutzers verwendet, oder für alle möglichen Arten von Anmeldeinformationen. Das Geheimnis eines SecureStrings besteht darin, dass er über die Microsoft DPAPI (Data Protection API) durch das Konto des Benutzers geschützt ist, der den SecureString erzeugt hat. Dadurch kann nur er auf das Kennwort des SecureStrings zugreifen. 

Manchmal gibt es aber die Situation, in der man das Kennwort eines Securestrings gerne wieder im Klartext hätte. Als Beispiel dafür soll Read-Host herhalten, das Benutzereingaben von der Konsole liest. Ruf man Read-Host mit dem Parameter -Prompt auf, kann man den Benutzer zu einer Eingabe auffordern: 

$Password = Read-Host -Prompt "Bitte geben Sie ein Kennwort ein"

Das Kennwort wird als String in der Variablen $Password gespeichert. Leider wird das Kennwort aber bei der Eingabe im Klartext angezeigt. Das kann man über den Parameter -AsSecurestring verhindern. Dadurch wird die Eingabe in einen SecureString konvertiert und die Eingabe wird durch das * maskiert:

$Password = Read-Host -Prompt "Bitte geben Sie ein Kennwort ein" -AsSecureString
Bitte geben Sie ein Kennwort ein: ********

Wenn man mit dem Kennwort z.B. ein PSCredentialObjekt erzeugen möchte, ist alles Super, denn dann braucht man das Kennwort nicht einmal mehr in einen SecureString umzuwandeln. Wenn man aber das Kennwort im Klartext benötigt, hat man ein Problem. Der SecureString stellt nämlich keine Möglichkeit zur Verfügung, das Kennwort wieder in Klartext umzuwandeln. Glücklicherweise bietet das PSCredential-Objekt aber so eine Möglichkeit, nämlich die Methode GetNetworkCredential(). Um das Kennwort wieder im Klartext zu sehen, hier das komplette Skript: 

$Password = Read-Host -Prompt "Bitte geben Sie ein Kennwort ein" -AsSecureString
$Credential = New-Object -TypeName PSCredential("Holger",$Password)
$credential.GetNetworkCredential().Password

Links

Create Scheduled Tasks with Secure Passwords

Windows Data Protection API

 


 281,    20  Apr  2017 ,   Tipp
Holger Voges

  E-Mail Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!

Holger Voges ist Inhaber der Firma Netz-Weise IT-Training und seit 1999 als Trainer und Consultant tätig. Als Allrounder in den Bereichen Windows Server, Active Directory, SQL Server, Hyper-V und Windows PowerShell, hat er in der Vergangenheit zahlreiche Einsätze als Consultant in namenhaften Firmen absolviert und so neben der Theorie auch umfangreiche praktische Erfahrungen gesammelt.

 

Schnellkontakt

bitte Ihre E-Mail eintragen

Netz-Weise

Das Haupt-Tätigkeitsfeld von Netz-Weise sind Schulungen für Profis. Bei uns bekommen Sie das Programm für den fortgeschrittenen Praktiker, der die Tiefen des Systems ausloten möchte genauso wie Standard-Schulungen.

So erreichen Sie uns:

Netz-Weise
IT-Training und Beratung
Freundallee 13a
30173 Hannover
 
Tel: (0511) 165 925-0
Fax: (0511) 165 925-99
email: info(at)netz-weise.de
 

Newsletter bestellen

Das Wichtigste kompakt ins E-Mailfach!