Get-Credential
Ottiene un oggetto credenziale basato su un nome utente e una password.
Sintassi
CredentialSet (Impostazione predefinita)
Get-Credential
[-Credential] <PSCredential>
[<CommonParameters>]
MessageSet
Get-Credential
[[-UserName] <String>]
-Message <String>
[<CommonParameters>]
Descrizione
Il cmdlet Get-Credential crea un oggetto credenziali per un nome utente e una password specificati. È possibile usare l'oggetto credenziale nelle operazioni di sicurezza.
A partire da PowerShell 3.0, è possibile usare il parametro messaggio per specificare un messaggio personalizzato nella finestra di dialogo che richiede all'utente il nome e la password.
Il cmdlet Get-Credential richiede all'utente una password o un nome utente e una password. Per impostazione predefinita, viene visualizzata una finestra di dialogo di autenticazione per richiedere all'utente. Tuttavia, in alcuni programmi host, ad esempio la console di PowerShell, è possibile richiedere all'utente la riga di comando modificando una voce del Registro di sistema. Per altre informazioni su questa voce del Registro di sistema, vedere le note e gli esempi.
Esempio
Esempio 1
$c = Get-Credential
Questo comando ottiene un oggetto credenziale e lo salva nella variabile $c.
Quando si immette il comando, viene visualizzata una finestra di dialogo che richiede un nome utente e una password. Quando si immettono le informazioni richieste, il cmdlet crea un oggetto PSCredential che rappresenta le credenziali dell'utente e lo salva nella variabile $c.
È possibile usare l'oggetto come input per i cmdlet che richiedono l'autenticazione utente, ad esempio quelli con un parametro Credential. Tuttavia, alcuni provider installati con PowerShell non supportano il parametro Credential.
Esempio 2
$c = Get-Credential -Credential User01
$c.Username
User01
In questo esempio viene creata una credenziale che include un nome utente senza un nome di dominio.
Il primo comando ottiene una credenziale con il nome utente User01 e lo archivia nella variabile $c.
Il secondo comando visualizza il valore della proprietà Username dell'oggetto credenziale risultante.
Esempio 3
$Credential = $Host.UI.PromptForCredential("Need credentials", "Please enter your user name and password.", "", "NetBiosUserName")
Questo comando usa il metodo promptforcredential per richiedere all'utente il nome utente e la password. Il comando salva le credenziali risultanti nella variabile $Credential.
Il metodo PromptForCredential è un'alternativa all'uso del cmdlet Get-Credential. Quando si usa PromptForCredential, è possibile specificare la didascalia, i messaggi e il nome utente visualizzati nella finestra di messaggio.
Per altre informazioni, vedere la documentazione PromptForCredential nell'SDK.
Esempio 4
Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds" -Name ConsolePrompting -Value $true
In questo esempio viene illustrato come modificare il Registro di sistema in modo che all'utente venga chiesto di usare una finestra di dialogo.
Il comando crea la ConsolePrompting voce del Registro di sistema e ne imposta il valore su True. Per eseguire questo comando, avviare PowerShell con l'opzione "Esegui come amministratore".
Per usare una finestra di dialogo per la richiesta, impostare il valore di ConsolePrompting su false ($false) o usare il cmdlet Remove-ItemProperty per eliminarlo.
La voce del Registro di sistema ConsolePrompting funziona in alcuni programmi host, ad esempio la console di PowerShell. Potrebbe non funzionare in tutti i programmi host.
Esempio 5
In questo esempio viene illustrato come creare un oggetto credenziale identico a quello restituito da Get-Credential.
$User = "Domain01\User01"
$PWord = Read-Host -Prompt 'Enter a Password' -AsSecureString
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
Il primo comando assegna il nome utente alla variabile $User. Verificare che il valore segua il formato "Domain\User" o "ComputerName\User".
Il secondo comando usa il cmdlet Read-Host per creare una stringa sicura dall'input dell'utente. Il parametro prompt richiede l'input dell'utente e il parametro AsSecureString maschera l'input e lo converte in una stringa sicura.
Il terzo comando usa il cmdlet New-Object per creare un oggetto PSCredential dai valori archiviati nelle variabili $User e $PWord.
Esempio 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:
Questo comando utilizza i parametri Message e UserName del cmdlet Get-Credential. Questo formato di comando è progettato per script e funzioni condivisi. In questo caso, il messaggio indica all'utente perché sono necessarie le credenziali e garantisce che la richiesta sia legittima.
Esempio 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
Questo comando ottiene una credenziale dal computer remoto Server01. Il comando usa il cmdlet Invoke-Command per eseguire un comando Get-Credential nel computer remoto. L'output mostra il messaggio di sicurezza remoto che Get-Credential include nella richiesta di autenticazione.
Parametri
-Credential
Specifica un nome utente per le credenziali, ad esempio User01 o Domain01\User01. Il nome del parametro, -Credential, è facoltativo.
Quando si invia il comando e si specifica un nome utente, viene richiesta una password. Se si omette questo parametro, viene richiesto un nome utente e una password.
A partire da PowerShell 3.0, se si immette un nome utente senza un dominio, Get-Credential non inserisce più una barra rovesciata prima del nome.
Le credenziali vengono archiviate in un oggetto PSCredential e la password viene archiviata come SecureString.
Annotazioni
Per ulteriori informazioni sulla protezione dei dati di SecureString, vedere Quanto è sicuro SecureString?.
Proprietà dei parametri
| Tipo: | PSCredential |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
CredentialSet
| Posizione: | 1 |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-Message
Specifica un messaggio visualizzato nel prompt di autenticazione. Questo parametro è progettato per l'uso in una funzione o in uno script. È possibile usare il messaggio per spiegare all'utente perché si richiedono le credenziali e come verranno usate.
Questo parametro è stato introdotto in PowerShell 3.0.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
MessageSet
| Posizione: | Named |
| Obbligatorio: | True |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
-UserName
Specifica un nome utente. La richiesta di autenticazione richiede una password per il nome utente. Per impostazione predefinita, il nome utente è vuoto e il prompt di autenticazione richiede sia un nome utente che una password.
Quando la richiesta di autenticazione viene visualizzata in una finestra di dialogo, l'utente può modificare il nome utente specificato. Tuttavia, l'utente non può modificare il nome utente quando il prompt viene visualizzato nella riga di comando. Quando si usa questo parametro in una funzione o in uno script condiviso, prendere in considerazione tutte le presentazioni possibili.
Questo parametro è stato introdotto in PowerShell 3.0.
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None (blank) |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
MessageSet
| Posizione: | 1 |
| Obbligatorio: | False |
| Valore dalla pipeline: | False |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.
Input
None
Gli oggetti non possono essere inviati tramite pipe a questo cmdlet.
Output
PSCredential
Questo cmdlet restituisce un oggetto credenziale.
Note
È possibile usare l'oggetto PSCredential creato Get-Credential nei cmdlet che richiedono l'autenticazione utente, ad esempio quelli con un parametro Credential.
Per impostazione predefinita, la richiesta di autenticazione viene visualizzata in una finestra di dialogo. Per visualizzare il prompt di autenticazione nella riga di comando, aggiungere la voce del Registro di sistema ConsolePrompting (HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ConsolePrompting) e impostarne il valore su True.
Se la ConsolePrompting voce del Registro di sistema non esiste o se il relativo valore è False, la richiesta di autenticazione viene visualizzata in una finestra di dialogo. Per istruzioni, vedere gli esempi.
La ConsolePrompting voce del Registro di sistema funziona nella console di PowerShell, ma non funziona in tutti i programmi host.
Ad esempio, non ha alcun effetto in PowerShell Integrated Scripting Environment (ISE). Per informazioni sull'effetto della voce del Registro di sistema ConsolePrompting, vedere gli argomenti della Guida per il programma host.
Il parametro credenziale non è supportato da tutti i provider installati con PowerShell.
A partire da PowerShell 3.0, è supportato nei cmdlet select, ad esempio i cmdlet Get-Content e New-PSDrive.