Credential Locker
Wenn Sie Kennwörter im Credential Locker ablegen wollen, verwenden Sie am einfachsten das Powers-hell-Modul CredentialManager aus der Powershell-Gallery, da der Zugriff auch über das .NET-Frame-work nicht trivial ist. Das Modul macht den Zugriff einfach, denn es hat nur 4 Cmdlets und bildet die Funktionalität von cmdkey.exe in Powershell ab.
Cmdlet | Funktion |
Get-StrongPassword | Gibt ein zufällig generiertes Kennwort zurück |
New-StoredCredential | Speichert Anmeldeinformationen im Credential Manager |
Get-StoredCredential | Ruft Anmeldeinformationen aus dem Credential-Manager ab |
Remove-StoredCredential | Entfernt Anmeldeinformationen aus dem Credential Manager |
Get-StrongPassword hat zwei Parameter, -Length und -NumberOfSpeicalCharacter, über die Eigen-schaften des Kennworts generien kann. Es liefert einen String zurück. New-StoredCredential speichert Credentials in Credential-Manager. Es ist relativ komplex und hat eine Reihe von nichtssagenden Para-metern, deren Namen sich aus den Parametern von cmdkey.exe ergeben.
• Target: Der Computer, für den die Anmeldeinforma�onen gelten. Wird eine Verbindung mit dem Target hergestellt, werden automa�sch die hinterlegten Anmeldeinforma�onen verwendet.
• Username: Der Benutzername, der gespeichert werden soll
• Password: Das Kennwort, das gespeichert werden soll, im Klartext
• SecurePassword: Das Kennwort, das gespeichert werden soll, als Secure String (alterna�v zum Klartext-Kennwort)
• Creden�als: Sta� Benutzername und Kennwort kann auch ein PSCreden�al-Objekt übergeben werden, wie es z.B. Get-Creden�al erzeugt
• Type: Die Art des Kennworts - z.B. DomainPassword oder Generic. Unterstützt werden Generic, DomainPassord und DomainCer�fcate. Alle anderen angebotenen Typen werden von Windows nicht mehr unterstützt
• Persist: Legt fest, ob die Anmeldedaten nur während der aktuellen Anmeldung (Session), dauertha� auf dem gleichen Rechner für alle Sitzungen des Benutzers (LocalMachine) oder auch auf anderen Rechnern der Domäne (Enterprise) sichtbar sein sollen. Wird Enterprise ausgewählt, muß der Benutzer über ein servergespeichertes Profil verfügen, da der Parameter letztlich nur festlegt, ob die Anmeldeinforma�onen unter
$home\AppData\Local\Microso�\Creden�als (LocalMachine) oder unter
$home\AppData\Roaming\Microso�\Creden�als (Enterprise) gespeichert werden.
Hier ein paar Beispiele, wie man New-StoredCredential verwenden kann:
Get-StrongPassword -Length 12 -NumberOfSpecialCharacters 3
# Ein Generisches Credential
$Cred = Get-Credential
New-StoredCredential -Credentials $Cred -Comment User -Persist LocalMachine
# Anmeldeinformationen für Server1.netz-weise.de als Domäneninformationen
# hinterlegen. Wird eine Verbindung zum Zielsystem per NTLM, Kerberos oder als # aushandelbares Auth. hergestellt, werden automatisch die hinterlegten
# Anmeldeinformationen verwendet.
# -Persist Enterprise speichert die Daten im Raomind-Teil es Profils.
New-StoredCredential -Target Server1.netz-weise.de -UserName netz-weise\hans `
-Password $Password -Type DomainPassword -Persist Enterprise
Wenn Sie Anmeldeinformationen zum späteren Abrufen aus einem Powershell-Skript speichern wollen, verwenden Sie am Besten generische Anmeldeinformationen. Da die Anmeldeinformationen auch nicht zum automatischen Verbinden genutzt werden sollen, brauchen Sie auch kein Target angeben. Zum Ab-rufen nutzen Sie Get-StoredCredential. Achten Sie darauf, dass Get-StoredCredential nur nach dem Tar-get filtern kann. Um einen spezifischen Account zu finden, müssen Sie die Ausgabe mit Where-Object filtern. Als Ergebnis erhalten Sie ein Credential-Objekt zurück. Das Löschen mit Remove-Credential ist leicht Buggy und funktioniert nur, wenn für das Credential ein Target angegeben wurde. Da Remove-Credential auch nicht Pipelinefähig ist, müssen Sie zudem Foreach-Object benutzen.
New-StoredCredential -UserName Netz-weise\PoshGeneric -Password "Passw0rd" `
-Comment "Powershell Generic" -Persist LocalMachine # Abfragen des Credentials mit Get-StoredCredential
$Cred = Get-StoredCredential -Type Generic |
Where-Object -FilterScript { $_.username -eq "netz-weise\PoshGeneric" }
# Und löschen - durch die Brust ins Auge Get-StoredCredential -Type Generic |
Where-Object -FilterScript { $_.username -eq "netz-weise\PoshGeneric" } | Foreach-Object -Process { Remove-StoredCredential -Target $_.Target }
Der Vorteil des Credential Locker liegt darin, dass Sie unterschiedliche Anmeldeinformationen an einer Stelle hinterlegen können. Wenn Sie ein Target angeben, kann die Verbindung außerdem automatisch ohne vorherigen Abruf des Credentials stattfinden. Außerdem können die Credential über mehrere Rechner synchronisiert werden, wenn Sie servergespeicherte Profile verwenden.