Anmeldeinformationen mithilfe von PowerShell abrufen

  1. Verwenden von Get-Credential zum Abrufen von Anmeldeinformationen in PowerShell
  2. Verwenden des Cmdlet Get-Credential ohne Aufforderung zum Abrufen von Anmeldeinformationen in PowerShell
Anmeldeinformationen mithilfe von PowerShell abrufen

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 Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn