Anmeldeinformationen mithilfe von PowerShell abrufen
-
Verwenden von
Get-Credential
zum Abrufen von Anmeldeinformationen in PowerShell -
Verwenden des Cmdlet
Get-Credential
ohne Aufforderung zum Abrufen von Anmeldeinformationen in PowerShell
PSCredential-Objekte sind eine kreative Möglichkeit, Anmeldeinformationen sicher zu speichern und an verschiedene Dienste weiterzugeben. Viele native Cmdlets und Cmdlets von Drittanbietern erfordern PSCredential-Objekte für viele verschiedene Befehle. Darüber hinaus sind Anmeldeinformationen ein allgegenwärtiges Objekt in Windows PowerShell.
In diesem Artikel wird erläutert, wie Sie das Windows PowerShell-Cmdlet Get-Credential
verwenden und Anmeldeinformationen ohne Eingabeaufforderungen abrufen.
Verwenden von Get-Credential
zum Abrufen von Anmeldeinformationen in PowerShell
Normalerweise verwenden wir zum Erstellen eines PSCredential-Objekts das Cmdlet Get-Credential
. Das genannte Cmdlet ist die häufigste Methode, mit der Windows PowerShell Eingaben zum Erstellen des PSCredential-Objekts empfängt. Dieses Objekt besteht hauptsächlich aus Benutzername und Passwort.
Jedes Mal, wenn es ausgeführt wird, wird es entweder in der Befehlszeile zur Eingabe des Benutzernamens und des Passworts aufgefordert, oder ein Popup-Dialogfeld wird angezeigt, in dem Sie nach den Anmeldeinformationen des Benutzers gefragt werden.
Verwenden des Cmdlet Get-Credential
ohne Aufforderung zum Abrufen von Anmeldeinformationen in PowerShell
Beispielsweise arbeiten wir an einem automatisierten Skript, das in einer geplanten Aufgabe oder als Teil eines leistungsfähigeren Automatisierungs-Frameworks ausgeführt wird. In diesem Fall gibt es niemanden, der die Konsole bedient, um einen Benutzernamen und ein Passwort einzugeben. Daher ist es besser, ein PSCredential-Objekt von Grund auf neu zu erstellen.
Um ein PSCredential-Objekt ohne Interaktion zu erstellen, ist ein Verschlüsselungsprozess erforderlich. Das PSCredential-Objekt erfordert einen Klartext-Benutzernamen und ein verschlüsseltes Kennwort.
Um ein Passwort zu verschlüsseln, müssen wir eine Standardzeichenfolge in eine sichere Zeichenfolge konvertieren. Dazu verwenden wir das Cmdlet ConvertTo-SecureString
. Wir können diesem Cmdlet ein Klartext-Passwort übergeben, und da es sich um Klartext handelt, müssen wir die Parameter -PlainText
und -Force
verwenden. Beide Parameter geben an, dass wir eine Klartextzeichenfolge ohne Bestätigungserfordernis übergeben.
$pass = ConvertTo-SecureString 'MySecretPassword' -AsPlainText -Force
Sobald eine sichere Zeichenfolge erstellt wurde, ist es an der Zeit, das PSCredential-Objekt zu erstellen. Dazu können wir das Cmdlet New-Object
verwenden, um ein Objekt von System.Management.Automation.PSCredential
zu definieren. Die PSCredential-Klasse verfügt über einen Konstruktor, der den Klartext-Benutzernamen und ein sicheres Zeichenkettenkennwort akzeptiert, die wir als Argumente verwenden können.
$credential = New-Object System.Management.Automation.PSCredential ('user01', $pass)
Wir haben jetzt ein PSCredential-Objekt mit unserem Klartext-Benutzernamen und dem sicheren String-Passwort, das in einer Variablen gespeichert ist. Wir können jetzt die Variable $credential
an mehrere Befehle übergeben, die einen -Credential
-Parameter erfordern, was großartig funktionieren wird. Um zu überprüfen, ob es mit dem erwarteten Benutzernamen und Passwort erstellt wurde, können wir auf die Eigenschaft UserName
verweisen, die den zuvor verwendeten Benutzernamen anzeigt.
Beispielcode:
$credential.Username
Ausgabe:
user01
Das Passwort wird durch eine sichere Zeichenfolge verschlüsselt, aber wenn Sie das Passwort auf demselben Computer lesen und als Benutzer angemeldet sind, können wir die Methode GetNetworkCredential()
verwenden, um das Passwort im Klartext anzuzeigen. Fügen Sie also GetNetworkCredential()
am Ende der $credential
-Variablen an, aber beachten Sie, dass Sie das auf der Konsole gedruckte Passwort nach der Ausführung nicht kennen werden.
Beispielcode:
$credential.GetNetworkCredential()
Ausgabe:
UserName Domain
-------- ------
user01
Um das Passwort anzuzeigen, müssen Sie die Password-Eigenschaft des Objekts verwenden, das GetNetworkCredential()
zurückgibt. Das zurückgegebene Kennwort sollte dasselbe Kennwort sein, das Sie dem PSCredential-Konstruktor bereitgestellt haben.
Beispielcode:
$credential.GetNetworkCredential().Password
Ausgabe:
MySecretPassword
Nachdem wir überprüft haben, dass die Variable $credential
sowohl unseren Benutzernamen als auch unser Passwort enthält, können wir die Variable als Parameter im Cmdlet Get-Credential
verwenden.
Get-Credential -Credential $credential
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn