Wie kann ich Credential Manager-Einträge mit PowerShell auslesen und bearbeiten?
- Einleitung
- Credential Manager auslesen mit PowerShell
- Credential-Einträge bearbeiten und hinzufügen
- Alternativer Weg: Nutzung der .NET API via PowerShell
- Wichtige Sicherheitshinweise
- Fazit
Einleitung
Der Windows Credential Manager speichert sensible Informationen wie Passwörter und Anmeldeinformationen für diverse Dienste. Um diese Anmeldedaten direkt via PowerShell auszulesen oder zu bearbeiten, ist es notwendig, auf spezielle Schnittstellen oder Module zurückzugreifen, da PowerShell standardmäßig keine direkten cmdlets für den Credential Manager bereitstellt.
Credential Manager auslesen mit PowerShell
Um Credentials aus dem Windows Credential Manager auszulesen, gibt es mehrere Wege. Einer der häufigsten ist die Verwendung des .NET-Klassen oder von Community-Modulen wie CredentialManager aus der PowerShell Gallery. Alternativ kann man Windows-APIs über PowerShell aufrufen.
Hier ein Beispiel mit dem Community-Modul CredentialManager. Zuerst muss das Modul installiert werden:
Install-Module -Name CredentialManagerNach der Installation kann man gespeicherte Anmeldedaten auslesen, indem man die Funktion Get-StoredCredential verwendet:
# Ein Credential mit Namen "MeinCredential" auslesen$credential = Get-StoredCredential -Target "MeinCredential"if ($credential) { Write-Host "Benutzername: $($credential.UserName)"Write-Host "Passwort: $($credential.Password)" # Achtung: Passwörter im Klartext anzeigen ist unsicher
} else { Write-Host "Kein Credential mit diesem Namen gefunden."}Write-Host "Passwort: $($credential.Password)" # Achtung: Passwörter im Klartext anzeigen ist unsicher
Dieses Modul abstrahiert die zugrundeliegenden API-Aufrufe und macht das Auslesen sehr komfortabel. Die Eigenschaft Password enthält das Passwort als Klartext, was nur mit administrativen Rechten und in einer sicheren Umgebung geschehen sollte.
Credential-Einträge bearbeiten und hinzufügen
Das CredentialManager-Modul bietet auch die Möglichkeit, Credentials hinzuzufügen oder zu löschen. Um ein neues Credential zu speichern, kann folgender Befehl verwendet werden:
New-StoredCredential -Target "MeinNeuesCredential" -UserName "Benutzer" -Password "MeinSicheresPasswort" -Persist LocalMachineMit dem Parameter -Persist legen Sie fest, wie lange die Anmeldeinformationen gespeichert werden, beispielsweise für den lokalen Computer (LocalMachine), die aktuelle Sitzung (Session) oder lokal sichtbar (Enterprise).
Wenn Sie ein Credential löschen möchten, verwenden Sie:
Remove-StoredCredential -Target "MeinNeuesCredential"Ein Bearbeiten eines bestehenden Credentials erfolgt durch Löschen und Neuanlegen mit geänderten Daten, da der Credential Manager keine direkte "Editierfunktion" anbietet.
Alternativer Weg: Nutzung der .NET API via PowerShell
Wer kein Modul installieren möchte, kann direkt die Windows Credential API via P/Invoke verwenden. Dies ist allerdings technisch aufwändiger, da zunächst Funktion aus der advapi32.dll importiert werden müssen und die Datenstruktur komplex sind.
Ein einfaches Beispiel für das Auslesen eines Credentials mit P/Invoke ist hier zu umfangreich, wird aber in der PowerShell-Community und auf GitHub vielfach dokumentiert. Das Modul CredentialManager basiert letztlich auf einer solchen Implementierung und bietet einen fertigen Wrapper.
Wichtige Sicherheitshinweise
Da beim Arbeiten mit dem Credential Manager sensible Daten, insbesondere Passwörter im Klartext, verarbeitet werden können, sollten Skripte zum Auslesen oder Ändern von Credentials in sicheren Umgebungen ausgeführt werden. Auch sollte man darauf achten, dass Skripte mit angemessenen Berechtigungen laufen, und keine Passwörter unbeabsichtigt in Logs oder auf der Konsole ausgeben.
Fazit
Um Credential Manager-Einträge über PowerShell zu verwalten, ist die einfachste und sicherste Methode die Verwendung des Moduls CredentialManager. Es ermöglicht das Auslesen, Hinzufügen und Entfernen von Credentials mit einfachen Befehlen. Für komplexere Aufgaben kann man auf API-Aufrufe oder eigene P/Invoke-Lösungen zurückgreifen, was allerdings deutlich mehr Aufwand bedeutet.
Möchten Sie also Credential Manager-Einträge auslesen oder bearbeiten, empfiehlt sich zunächst die Installation und Nutzung des Moduls CredentialManager aus der PowerShell Gallery.
