Freigeben über


Get-Credential

Ruft ein Anmeldeinformationsobjekt basierend auf einem Benutzernamen und Kennwort ab.

Syntax

Get-Credential
   [-Credential] <PSCredential>
   [<CommonParameters>]
Get-Credential
   -Message <String>
   [[-UserName] <String>]
   [<CommonParameters>]

Beschreibung

Das Get-Credential Cmdlet erstellt ein Anmeldeinformationsobjekt für einen angegebenen Benutzernamen und ein angegebenes Kennwort. Sie können das Anmeldeinformationsobjekt für Sicherheitsvorgänge verwenden.

Ab PowerShell 3.0 können Sie den Parameter Message verwenden, um eine angepasste Nachricht im Dialogfeld anzugeben, die den Benutzer zur Eingabe seines Namens und Kennworts auffordert.

Das Get-Credential Cmdlet fordert den Benutzer auf, ein Kennwort oder einen Benutzernamen und ein Kennwort einzugeben. Standardmäßig wird dem Benutzer ein Authentifizierungsdialogfeld mit der Eingabeaufforderung angezeigt. In einigen Hostprogrammen, z. B. der PowerShell-Konsole, können Sie den Benutzer jedoch an der Befehlszeile auffordern, indem Sie einen Registrierungseintrag ändern. Weitere Informationen zu diesem Registrierungseintrag finden Sie in den Hinweisen und Beispielen.

Beispiele

Beispiel 1

$c = Get-Credential

Dieser Befehl ruft ein Anmeldeinformationsobjekt ab und speichert es in der $c Variablen.

Wenn Sie den Befehl eingeben, wird ein Dialogfeld angezeigt, in dem die Eingabe eines Benutzernamens und eines Kennworts angefordert wird. Wenn Sie die angeforderten Informationen eingeben, erstellt das Cmdlet ein PSCredential-Objekt , das die Anmeldeinformationen des Benutzers darstellt, und speichert sie in der $c Variablen.

Sie können das Objekt als Eingabe für Cmdlets verwenden, die die Benutzerauthentifizierung anfordern, z. B. solche mit einem Credential-Parameter . Einige Anbieter, die mit PowerShell installiert sind, unterstützen jedoch nicht den Parameter "Credential ".

Beispiel 2

$c = Get-Credential -credential User01
$c.Username
User01

In diesem Beispiel werden die Anmeldeinformationen erstellt, die einen Benutzernamen ohne Domänennamen enthalten.

Der erste Befehl ruft eine Anmeldeinformation mit dem Benutzernamen User01 ab und speichert sie in der $c Variablen. Der zweite Befehl zeigt den Wert der Username-Eigenschaft des resultierenden Anmeldeinformationsobjekts an.

Beispiel 3

$Credential = $host.ui.PromptForCredential("Need credentials", "Please enter your user name and password.", "", "NetBiosUserName")

Dieser Befehl verwendet die PromptForCredential-Methode , um den Benutzer zur Eingabe seines Benutzernamens und Kennworts aufzufordern. Der Befehl speichert die resultierenden Anmeldeinformationen in der $Credential Variablen.

Die PromptForCredential-Methode ist eine Alternative zur Verwendung des Get-Credential Cmdlets. Wenn Sie PromptForCredential verwenden, können Sie die im Meldungsfeld angezeigten Untertitel, Nachrichten und Benutzernamen angeben.

Weitere Informationen finden Sie in der PromptForCredential-Dokumentation im SDK.

Beispiel 4

Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds" -Name ConsolePrompting -Value $true

Dieses Beispiel zeigt, wie Sie die Registrierung ändern, damit der Benutzer in der Befehlszeile anstelle eines Dialogfelds zur Eingabe aufgefordert wird.

Der Befehl erstellt den Registrierungseintrag "ConsolePrompting " und legt seinen Wert auf "True" fest. Um diesen Befehl auszuführen, starten Sie PowerShell mit der Option "Als Administrator ausführen".

Wenn Sie ein Dialogfeld für die Eingabeaufforderung verwenden möchten, legen Sie den Wert der ConsolePrompting auf "false" ($false) fest, oder verwenden Sie das Remove-ItemProperty Cmdlet, um es zu löschen.

Der Registrierungseintrag "ConsolePrompting" funktioniert in einigen Hostprogrammen, z. B. in der PowerShell-Konsole. Er funktioniert möglicherweise nicht in allen Hostprogrammen.

Beispiel 5

In diesem Beispiel wird veranschaulicht, wie ein Anmeldeinformationsobjekt erstellt wird, das mit dem objekt identisch ist, das von Get-Credential.

$User = "Domain01\User01"
$PWord = Read-Host -Prompt 'Enter a Password' -AsSecureString
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord

Der erste Befehl weist der Variablen den Benutzernamen zu $User . Stellen Sie sicher, dass der Wert dem Format "Do Standard\User" oder "ComputerName\User" folgt.

Der zweite Befehl verwendet das Read-Host Cmdlet, um eine sichere Zeichenfolge aus der Benutzereingabe zu erstellen. Der Prompt-Parameter fordert benutzereingaben an, und der AsSecureString-Parameter maskiert die Eingabe und konvertiert sie in eine sichere Zeichenfolge.

Der dritte Befehl verwendet das New-Object Cmdlet, um ein PSCredential-Objekt aus den werten zu erstellen, die in den $User und $PWord Variablen gespeichert sind.

Beispiel 6

Get-Credential -Message "Credential are required for access to the \\Server1\Scripts file share." -User Server01\PowerUser

PowerShell Credential Request
Credential are required for access to the \\Server1\Scripts file share.
Password for user Server01\PowerUser:

Dieser Befehl verwendet die Parameter Message und UserName des Get-Credential Cmdlets. Dieses Befehlsformat wurde für gemeinsam genutzte Skripts und Funktionen entwickelt. In diesem Fall erfährt der Benutzer in der Meldung, warum Anmeldeinformationen erforderlich sind, und bietet ihm die Sicherheit, dass die Anforderung legitim ist.

Beispiel 7

Invoke-Command -ComputerName Server01 {Get-Credential Domain01\User02}

PowerShell Credential Request : PowerShell Credential Request
Warning: This credential is being requested by a script or application on the SERVER01 remote computer. Enter your credentials only if you
 trust the remote computer and the application or script requesting it.

Enter your credentials.
Password for user Domain01\User02: ***************

PSComputerName     : Server01
RunspaceId         : 422bdf52-9886-4ada-ab2f-130497c6777f
PSShowComputerName : True
UserName           : Domain01\User01
Password           : System.Security.SecureString

Dieser Befehl ruft die Anmeldeinformationen vom Remotecomputer „Server01“ ab. Der Befehl verwendet das Invoke-Command Cmdlet, um einen Get-Credential Befehl auf dem Remotecomputer auszuführen. Die Ausgabe zeigt die Remotesicherheitsmeldung an, die Get-Credential in der Authentifizierungsaufforderung enthalten ist.

Parameter

-Credential

Gibt einen Benutzernamen für die Anmeldeinformationen an, z. B. "User01" oder "Do Standard 01\User01". Der Parametername , -Credentialist optional.

Wenn Sie den Befehl übermitteln und einen Benutzernamen angeben, werden Sie zur Eingabe eines Kennworts aufgefordert. Wenn Sie diesen Parameter weglassen, werden Sie aufgefordert, einen Benutzernamen und ein Kennwort einzugeben.

Wenn Sie in PowerShell 3.0 einen Benutzernamen ohne Do eingeben Standard wird Get-Credential vor dem Namen kein umgekehrter Schrägstrich mehr eingefügt.

Anmeldeinformationen werden in einem PSCredential-Objekt gespeichert, und das Kennwort wird als SecureString gespeichert.

Hinweis

Weitere Informationen zum Schutz von SecureString finden Sie unter "Wie sicher ist SecureString?".

Type:PSCredential
Position:1
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Message

Gibt eine Meldung an, die in der Authentifizierungsaufforderung angezeigt wird. Dieser Parameter dient zur Verwendung in einer Funktion oder in einem Skript. Sie können die Meldung verwenden, um dem Benutzer zu erklären, warum Sie Anmeldeinformationen anfordern und wie sie verwendet werden.

Dieser Parameter wurde in PowerShell 3.0 eingeführt.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-UserName

Gibt einen Benutzernamen an. Die Authentifizierungsaufforderung fordert die Eingabe eines Kennworts für den Benutzernamen an. Standardmäßig ist der Benutzername leer, und die Authentifizierungsaufforderung fordert sowohl einen Benutzernamen als auch ein Kennwort an.

Wenn die Authentifizierungsaufforderung in einem Dialogfeld angezeigt wird, kann der Benutzer den angegebenen Benutzernamen bearbeiten. Der Benutzer kann den Benutzernamen jedoch nicht ändern, wenn die Eingabeaufforderung in der Befehlszeile angezeigt wird. Wenn Sie diesen Parameter in einer gemeinsam genutzten Funktion oder einem gemeinsam genutzten Skript verwenden, sollten Sie alle möglichen Darstellungen in Betracht ziehen.

Dieser Parameter wurde in PowerShell 3.0 eingeführt.

Type:String
Position:1
Default value:None (blank)
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

None

Sie können keine Objekte an dieses Cmdlet weiterleiten.

Ausgaben

PSCredential

Dieses Cmdlet gibt ein Anmeldeinformationsobjekt zurück.

Hinweise

Sie können das PSCredential-Objekt verwenden, das Get-Credential in Cmdlets erstellt wird, die die Benutzerauthentifizierung anfordern, z. B. solche mit einem Credential-Parameter .

Standardmäßig wird die Authentifizierungseingabeaufforderung in einem Dialogfeld angezeigt. Um die Authentifizierungsaufforderung in der Befehlszeile anzuzeigen, fügen Sie den Registrierungseintrag "ConsolePrompting " (HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ConsolePrompting) hinzu, und legen Sie den Wert auf "True" fest. Wenn der Registrierungseintrag "ConsolePrompting " nicht vorhanden ist oder der Wert "False" lautet, wird die Authentifizierungsaufforderung in einem Dialogfeld angezeigt. Anweisungen finden Sie in den Beispielen.

Der Registrierungseintrag "ConsolePrompting " funktioniert in der PowerShell-Konsole, funktioniert aber nicht in allen Hostprogrammen.

Beispielsweise hat sie keine Auswirkung in der integrierten PowerShell-Skriptingumgebung (ISE). Informationen zum Effekt des Registrierungseintrags "ConsolePrompting " finden Sie in den Hilfethemen für das Hostprogramm.

Der Parameter "Credential " wird von allen Anbietern, die mit PowerShell installiert sind, nicht unterstützt. Ab PowerShell 3.0 wird sie für ausgewählte Cmdlets wie die Get-Content und New-PSDrive cmdlets unterstützt.