Was für ein Experte bin ich eigentlich? (Teil 3) – oder wie sich ein SecureString ganz einfach lesbar machen lässt

Auf manche Dinge kommt man bei der PowerShell wirklich nur per Zufall (ich hoffe, ich schließe da nicht zu sehr von mir auf andere). Einer dieser Dinge ist die Frage, wie man einen SecureString dort übergibt wo ein lesbarer String erwartet wird. Bislang war ich davon ausgegangen, dass dies nur über einen kleinen Umweg/Trick möglich ist, der mir schon deswegen nicht gefällt, weil ein Dispose() (zum Aufräumen einer Ressource) aufgerufen werden kann/sollte, was in einem PowerShell-Skript definitiv nichts zu suchen hat. Nun, es gibt einen sehr viel einfacheren Weg. Dieser besteht darin, zunächst über Get-Credential ein Paar aus Benutzername und Kennwort zu holen, wobei das Kennwort als SecureString verschlüsselt vorliegt, und anschließend per GetNetworkCredentialMethode()-Methode des resultierenden PSCredential-Objekts ein NetworkCredential-Objekt zu holen, dessen Password-Property das Passwort als regulären String anbietet. Damit wird die Entgegennahme eines Kennworts wirklich sehr einfach:

$Cred = Get-Credential Administrator
$UserName = $Cred.GetNetworkCredential().UserName
$Kennwort = $Cred.GetNetworkCredential().Password

Als kleinen Bonus erhält man den Username ohne den vorangestellten Schrägstrich, der immer dann vorangestellt wird, wenn der Username ohne einen Domänenangabe eingegeben und direkt über das PSCredential-Objekt, das ein Get-Credential zurückliefert, abgefragt wird.

Warum einfach, wenn es auch kompliziert geht.

PS: Der Zufall war das wirklich gute Buch „Managing Active Directory with PowerShell“ von Jeffrey Hicks, in dem der „Trick“ mit GetNetworkCredential() in einem Beispiel auftauchte.

Advertisements

Kommentar verfassen

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s