Get-Credential
Pobiera obiekt poświadczeń na podstawie nazwy użytkownika i hasła.
Składnia
Get-Credential
[-Credential] <PSCredential>
[<CommonParameters>]
Get-Credential
-Message <String>
[[-UserName] <String>]
[<CommonParameters>]
Opis
Polecenie Get-Credential
cmdlet tworzy obiekt poświadczeń dla określonej nazwy użytkownika i hasła. Obiekt poświadczeń można używać w operacjach zabezpieczeń.
Począwszy od programu PowerShell 3.0, możesz użyć parametru Message , aby określić dostosowany komunikat w oknie dialogowym z monitem użytkownika o podanie nazwy i hasła.
Polecenie Get-Credential
cmdlet monituje użytkownika o podanie hasła lub nazwy użytkownika i hasła. Domyślnie zostanie wyświetlone okno dialogowe uwierzytelniania z monitem użytkownika. Jednak w niektórych programach hosta, takich jak konsola programu PowerShell, można monitować użytkownika w wierszu polecenia, zmieniając wpis rejestru. Aby uzyskać więcej informacji na temat tego wpisu rejestru, zobacz uwagi i przykłady.
Przykłady
Przykład 1
$c = Get-Credential
To polecenie pobiera obiekt poświadczeń i zapisuje go w zmiennej $c
.
Po wprowadzeniu polecenia zostanie wyświetlone okno dialogowe z żądaniem nazwy użytkownika i hasła. Po wprowadzeniu żądanych informacji polecenie cmdlet tworzy obiekt PSCredential reprezentujący poświadczenia użytkownika i zapisuje go w zmiennej $c
.
Możesz użyć obiektu jako danych wejściowych do poleceń cmdlet, które żądają uwierzytelniania użytkownika, takich jak te z parametrem Credential . Jednak niektórzy dostawcy, którzy są instalowani za pomocą programu PowerShell, nie obsługują parametru Credential .
Przykład 2
$c = Get-Credential -credential User01
$c.Username
User01
W tym przykładzie zostanie utworzone poświadczenie zawierające nazwę użytkownika bez nazwy domeny.
Pierwsze polecenie pobiera poświadczenia o nazwie użytkownika User01 i zapisuje je w zmiennej $c
.
Drugie polecenie wyświetla wartość właściwości Username wynikowego obiektu poświadczeń.
Przykład 3
$Credential = $host.ui.PromptForCredential("Need credentials", "Please enter your user name and password.", "", "NetBiosUserName")
To polecenie używa metody PromptForCredential , aby wyświetlić monit o podanie nazwy użytkownika i hasła. Polecenie zapisuje wynikowe poświadczenia w zmiennej $Credential
.
Metoda PromptForCredential jest alternatywą dla używania Get-Credential
polecenia cmdlet . W przypadku korzystania z elementu PromptForCredential można określić podpis, komunikaty i nazwę użytkownika, które są wyświetlane w oknie komunikatu.
Aby uzyskać więcej informacji, zobacz dokumentację PromptForCredential w zestawie SDK.
Przykład 4
Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds" -Name ConsolePrompting -Value $true
W tym przykładzie pokazano, jak zmodyfikować rejestr, aby użytkownik był monitowany w wierszu polecenia, a nie przy użyciu okna dialogowego.
Polecenie tworzy wpis rejestru ConsolePrompting i ustawia jego wartość na True. Aby uruchomić to polecenie, uruchom program PowerShell przy użyciu opcji "Uruchom jako administrator".
Aby użyć okna dialogowego w celu wyświetlenia monitu, ustaw wartość ConsolePrompting na false ($false) lub użyj Remove-ItemProperty
polecenia cmdlet , aby go usunąć.
Wpis rejestru ConsolePrompting działa w niektórych programach hosta, takich jak konsola programu PowerShell. Może to nie działać we wszystkich programach hosta.
Przykład 5
W tym przykładzie pokazano, jak utworzyć obiekt poświadczeń identyczny z obiektem zwróconym przez Get-Credential
element .
$User = "Domain01\User01"
$PWord = Read-Host -Prompt 'Enter a Password' -AsSecureString
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
Pierwsze polecenie przypisuje nazwę użytkownika do zmiennej $User
. Upewnij się, że wartość jest zgodna z formatem "Domain\User" lub "ComputerName\User".
Drugie polecenie używa Read-Host
polecenia cmdlet do utworzenia bezpiecznego ciągu na podstawie danych wejściowych użytkownika. Parametr Prompt żąda danych wejściowych użytkownika, a parametr AsSecureString maskuje dane wejściowe i konwertuje je na bezpieczny ciąg.
Trzecie polecenie używa New-Object
polecenia cmdlet do utworzenia obiektu PSCredential na podstawie wartości przechowywanych w $User
zmiennych i $PWord
.
Przykład 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:
To polecenie używa parametrów Get-Credential
Message i UserName polecenia cmdlet. Ten format polecenia jest przeznaczony dla udostępnionych skryptów i funkcji. W takim przypadku komunikat informuje użytkownika, dlaczego potrzebne są poświadczenia i daje im pewność, że żądanie jest uzasadnione.
Przykład 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
To polecenie pobiera poświadczenia z komputera zdalnego Server01. Polecenie używa Invoke-Command
polecenia cmdlet do uruchomienia Get-Credential
polecenia na komputerze zdalnym. Dane wyjściowe zawierają komunikat o zabezpieczeniach zdalnych, który Get-Credential
jest zawarty w wierszu polecenia uwierzytelniania.
Parametry
-Credential
Określa nazwę użytkownika dla poświadczeń, na przykład User01 lub Domain01\User01. Nazwa parametru , -Credential
jest opcjonalna.
Po przesłaniu polecenia i określeniu nazwy użytkownika zostanie wyświetlony monit o podanie hasła. Jeśli pominięto ten parametr, zostanie wyświetlony monit o podanie nazwy użytkownika i hasła.
Począwszy od programu PowerShell 3.0, jeśli wprowadzisz nazwę użytkownika bez domeny, Get-Credential
nie wstawia już ukośnika odwrotnego przed nazwą.
Poświadczenia są przechowywane w obiekcie PSCredential , a hasło jest przechowywane jako secureString.
Uwaga
Aby uzyskać więcej informacji na temat ochrony danych SecureString , zobacz Jak bezpieczny jest protokół SecureString?.
Typ: | PSCredential |
Position: | 1 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Message
Określa komunikat wyświetlany w wierszu polecenia uwierzytelniania. Ten parametr jest przeznaczony do użycia w funkcji lub skryscie. Możesz użyć komunikatu , aby wyjaśnić użytkownikowi, dlaczego żądasz poświadczeń i jak będą używane.
Ten parametr został wprowadzony w programie PowerShell 3.0.
Typ: | String |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-UserName
Określa nazwę użytkownika. Monit o uwierzytelnienie żąda hasła dla nazwy użytkownika. Domyślnie nazwa użytkownika jest pusta, a monit o uwierzytelnienie żąda zarówno nazwy użytkownika, jak i hasła.
Po wyświetleniu monitu uwierzytelniania w oknie dialogowym użytkownik może edytować określoną nazwę użytkownika. Jednak użytkownik nie może zmienić nazwy użytkownika, gdy wiersz polecenia pojawi się w wierszu polecenia. W przypadku używania tego parametru w funkcji udostępnionej lub skryscie należy wziąć pod uwagę wszystkie możliwe prezentacje.
Ten parametr został wprowadzony w programie PowerShell 3.0.
Typ: | String |
Position: | 1 |
Domyślna wartość: | None (blank) |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
None
Nie można potokować obiektów do tego polecenia cmdlet.
Dane wyjściowe
To polecenie cmdlet zwraca obiekt poświadczeń.
Uwagi
Można użyć obiektu PSCredential , który Get-Credential
tworzy w poleceniach cmdlet żądających uwierzytelniania użytkownika, takich jak te z parametrem Credential .
Domyślnie w oknie dialogowym pojawia się monit o uwierzytelnienie. Aby wyświetlić wiersz polecenia uwierzytelniania w wierszu polecenia, dodaj wpis rejestru ConsolePrompting (HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ConsolePrompting
) i ustaw jego wartość na True.
Jeśli wpis rejestru ConsolePrompting nie istnieje lub jeśli jego wartość to Fałsz, w oknie dialogowym zostanie wyświetlony monit o uwierzytelnienie. Aby uzyskać instrukcje, zobacz przykłady.
Wpis rejestru ConsolePrompting działa w konsoli programu PowerShell, ale nie działa we wszystkich programach hosta.
Na przykład nie ma wpływu na zintegrowane środowisko skryptowe programu PowerShell (ISE). Aby uzyskać informacje na temat wpływu wpisu rejestru ConsolePrompting , zobacz tematy pomocy dotyczące programu hosta.
Parametr Credential nie jest obsługiwany przez wszystkich dostawców zainstalowanych za pomocą programu PowerShell.
Począwszy od programu PowerShell 3.0, jest on obsługiwany w przypadku wybranych poleceń cmdlet, takich jak Get-Content
polecenia cmdlet i New-PSDrive
.