Freigeben über


Get-Credential

Ruft ein Anmeldeinformationsobjekt basierend auf einem Benutzernamen und Kennwort ab.

Syntax

CredentialSet (Standard)

Get-Credential
    [-Credential] <PSCredential>
    [<CommonParameters>]

MessageSet

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

Beschreibung

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

Ab Windows PowerShell 3.0 können Sie den Message-Parameter verwenden, um eine benutzerdefinierte Meldung im Dialogfeld anzugeben, in der der Benutzer zur Eingabe seines Namens und Kennworts aufgefordert wird.

Das Cmdlet Get-Credential fordert den Benutzer zur Eingabe eines Kennworts oder eines Benutzernamens und eines Kennworts auf. Standardmäßig wird ein Authentifizierungsdialogfeld angezeigt, in dem der Benutzer aufgefordert wird. In einigen Hostprogrammen, z. B. der Windows PowerShell-Konsole, können Sie den Benutzer jedoch über die Befehlszeile auffordern, indem Sie einen Registrierungseintrag ändern. Weitere Informationen zu diesem Registrierungseintrag finden Sie in den Notizen und Beispielen.

Beispiele

Beispiel 1

$c = Get-Credential

Mit diesem Befehl wird ein Anmeldeinformationsobjekt abgerufen und in der Variablen $c gespeichert.

Wenn Sie den Befehl eingeben, wird ein Dialogfeld angezeigt, in dem ein Benutzername und ein Kennwort angefordert werden. Wenn Sie die angeforderten Informationen eingeben, erstellt das Cmdlet ein PSCredential-Objekt , das die Anmeldeinformationen des Benutzers darstellt, und speichert es in der Variablen $c.

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

Beispiel 2

$c = Get-Credential
Get-WmiObject Win32_DiskDrive -ComputerName Server01 -Credential $c

Diese Befehle verwenden ein Anmeldeinformationsobjekt, das vom Cmdlet Get-Credential zurückgegeben wird, um einen Benutzer auf einem Remotecomputer zu authentifizieren, damit er den Computer mithilfe von Windows Management Instrumentation (WMI) verwalten kann.

Der erste Befehl ruft ein Anmeldeinformationsobjekt ab und speichert es in der Variablen $c. Der zweite Befehl verwendet das Anmeldeinformationsobjekt in einem Get-WmiObject Befehl. Mit diesem Befehl werden Informationen zu den Laufwerken auf dem Computer Server01 abgerufen.

Beispiel 3

Get-WmiObject Win32_BIOS -ComputerName Server01 -Credential (Get-Credential -Credential Domain01\User01)

Dieser Befehl zeigt, wie ein Get-Credential-Befehl in einen Get-WmiObject-Befehl eingeschlossen wird.

Mit diesem Befehl wird das Cmdlet Get-WmiObject verwendet, um Informationen über das BIOS auf dem Computer Server01 abzurufen. Er verwendet den Credential-Parameter , um den Benutzer Domain01\User01 zu authentifizieren, und einen Get-Credential-Befehl als Wert des Credential-Parameters .

Beispiel 4

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

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

Der erste Befehl ruft Anmeldeinformationen mit dem Benutzernamen User01 ab und speichert sie in der Variablen $c.

Der zweite Befehl zeigt den Wert der Username-Eigenschaft des resultierenden Anmeldeobjekts an.

Beispiel 5

$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 Variablen $Credential.

Die PromptForCredential-Methode ist eine Alternative zur Verwendung des Cmdlets Get-Credential . Wenn Sie PromptForCredential-verwenden, können Sie die Beschriftung, nachrichten und den Benutzernamen angeben, die im Meldungsfeld angezeigt werden.

Beispiel 6

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

In diesem Beispiel wird gezeigt, wie Sie die Registrierung so ändern, dass der Benutzer an der Befehlszeile anstelle eines Dialogfelds dazu aufgefordert wird.

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

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

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

Beispiel 7

In diesem Beispiel wird gezeigt, wie ein Anmeldeinformationsobjekt erstellt wird, das mit dem Objekt identisch ist, das Get-Credential zurückgibt, ohne den Benutzer dazu aufzufordern. Für diese Methode ist ein Klartextkennwort erforderlich, das in einigen Unternehmen gegen die Sicherheitsstandards verstoßen kann.

PS> $User = "Domain01\User01"
PS> $PWord = ConvertTo-SecureString -String "P@sSwOrd" -AsPlainText -Force
PS> $Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord

Mit dem ersten Befehl wird der Name des Benutzerkontos im Parameter $User gespeichert. Der Wert muss das Format "Domäne\Benutzer" oder "Computername\Benutzer" haben.

Im zweiten Befehl wird das Cmdlet ConvertTo-SecureString verwendet, um eine sichere Zeichenfolge aus einem Nur-Text-Kennwort zu erstellen. Der Befehl verwendet den Parameter AsPlainText , um anzugeben, dass es sich bei der Zeichenfolge um Nur-Text handelt, und den Force-Parameter , um zu bestätigen, dass Sie die Risiken der Verwendung von Nur-Text verstehen.

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

Beispiel 8

PS> Get-Credential -Message "Credential are required for access to the \\Server1\Scripts file share." -User Server01\PowerUsers
Windows PowerShell Credential Request
Credential are required for access to the \\Server1\Scripts file share.
Password for user ntdev\juneb:

Für diesen Befehl werden die Parameter Message und UserName des Cmdlets Get-Credential verwendet. Dieses Befehlsformat wurde für freigegebene Skripts und Funktionen entwickelt. In diesem Fall teilt die Nachricht dem Benutzer mit, warum Anmeldeinformationen benötigt werden, und gibt ihm vertrauen, dass die Anforderung legitim ist.

Beispiel 9

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

Windows PowerShell Credential Request : Windows 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 Cmdlet Invoke-Command, um einen Get-Credential-Befehl auf dem Remotecomputer auszuführen. Die Ausgabe zeigt die Remotesicherheitsmeldung an, die Get-Credential in die Authentifizierungsaufforderung einschließt.

Parameter

-Credential

Gibt einen Benutzernamen für die Anmeldeinformationen an, z. B. "Benutzer01" oder "Domäne01\Benutzer01". Der Parametername ("Credential") ist optional.

Wenn Sie den Befehl absenden, werden Sie zur Eingabe eines Kennworts aufgefordert.

Wenn Sie ab Windows PowerShell 3.0 einen Benutzernamen ohne Domäne eingeben, fügt Get-Credential ab Windows PowerShell 3.0 keinen umgekehrten Schrägstrich mehr vor den Namen ein.

Wenn Sie diesen Parameter weglassen, werden Sie aufgefordert, einen Benutzernamen und ein Kennwort einzugeben.

Parametereigenschaften

Typ:PSCredential
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

CredentialSet
Position:1
Obligatorisch:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Message

Gibt eine Meldung an, die in der Authentifizierungsaufforderung angezeigt wird.

Dieser Parameter ist für die Verwendung in einer Funktion oder einem Skript vorgesehen. Mithilfe der Nachricht können Sie dem Benutzer erklären, warum Sie Anmeldeinformationen anfordern und wie diese verwendet werden.

Dieser Parameter wird in Windows PowerShell 3.0 eingeführt.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

MessageSet
Position:Named
Obligatorisch:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-UserName

Gibt einen Benutzernamen an. Die Authentifizierungsaufforderung fordert ein Kennwort 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 freigegebenen Funktion oder einem freigegebenen Skript verwenden, sollten Sie alle möglichen Präsentationen in Betracht ziehen.

Dieser Parameter wird in Windows PowerShell 3.0 eingeführt.

Parametereigenschaften

Typ:String
Standardwert:None (blank)
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

MessageSet
Position:1
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

CommonParameters

Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.

Eingaben

None

Eingaben können nicht an dieses Cmdlet weitergereicht werden.

Ausgaben

PSCredential

Get-Credential gibt ein Anmeldeinformationsobjekt zurück.

Hinweise

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

Standardmäßig wird die Authentifizierungsaufforderung 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 dessen Wert auf True fest. Wenn der ConsolePrompting Registrierungseintrag 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 Windows PowerShell-Konsole, aber nicht in allen Hostprogrammen.

In der integrierten Skriptumgebung (Integrated Scripting Environment, ISE) von Windows PowerShell hat dies z. B. keine Auswirkungen. Informationen zum Effekt des ConsolePrompting Registrierungseintrags finden Sie in den Hilfethemen für das Hostprogramm.

Der Parameter Credential wird nicht von allen Anbietern unterstützt, die mit Windows PowerShell installiert werden. Ab Windows PowerShell 3.0 wird sie für ausgewählte Cmdlets unterstützt, z. B. für die Cmdlets Get-WmiObject und New-PSDrive.