Compartir a través de


Get-Credential

Obtiene un objeto de credencial basado en un nombre de usuario y una contraseña.

Syntax

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

Description

El Get-Credential cmdlet crea un objeto de credencial para un nombre de usuario y una contraseña especificados. Puede usar el objeto de credencial en operaciones de seguridad.

A partir de PowerShell 3.0, puede usar el parámetro Message para especificar un mensaje personalizado en el cuadro de diálogo que solicita al usuario su nombre y contraseña.

El Get-Credential cmdlet solicita al usuario una contraseña o un nombre de usuario y una contraseña. De forma predeterminada, aparece un cuadro de diálogo de autenticación para pedir la información al usuario. Sin embargo, en algunos programas host, como la consola de PowerShell, puede preguntar al usuario en la línea de comandos cambiando una entrada del Registro. Para más información sobre esta entrada del Registro, vea las notas y los ejemplos.

Ejemplos

Ejemplo 1

$c = Get-Credential

Este comando obtiene un objeto de credencial y lo guarda en la $c variable .

Cuando escriba el comando, aparece un cuadro de diálogo que solicita un nombre de usuario y una contraseña. Al escribir la información solicitada, el cmdlet crea un objeto PSCredential que representa las credenciales del usuario y lo guarda en la $c variable .

Puede usar el objeto como entrada para los cmdlets que solicitan autenticación de usuario, como los que tienen un parámetro Credential . Sin embargo, algunos proveedores instalados con PowerShell no admiten el parámetro Credential .

Ejemplo 2

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

Este ejemplo crea una credencial que incluye un nombre de usuario sin un nombre de dominio.

El primer comando obtiene una credencial con el nombre de usuario User01 y la almacena en la $c variable . El segundo comando muestra el valor de la propiedad Username del objeto de credencial resultante.

Ejemplo 3

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

Este comando usa el método PromptForCredential para solicitar al usuario su nombre de usuario y contraseña. El comando guarda las credenciales resultantes en la $Credential variable .

El método PromptForCredential es una alternativa al uso del Get-Credential cmdlet . Al usar PromptForCredential, puede especificar el subtítulo, los mensajes y el nombre de usuario que aparecen en el cuadro de mensaje.

Para obtener más información, consulte la documentación de PromptForCredential en el SDK.

Ejemplo 4

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

En este ejemplo se muestra cómo modificar el registro para que se le solicite al usuario en la línea de comandos, en lugar de mediante un cuadro de diálogo.

El comando crea la entrada del Registro ConsolePrompting y establece su valor en True. Para ejecutar este comando, inicie PowerShell con la opción "Ejecutar como administrador".

Para usar un cuadro de diálogo para preguntar, establezca el valor de ConsolePrompting en false ($false) o use el Remove-ItemProperty cmdlet para eliminarlo.

La entrada del Registro ConsolePrompting funciona en algunos programas host, como la consola de PowerShell. Es posible que no funcione en todos los programas host.

Ejemplo 5

En este ejemplo se muestra cómo crear un objeto de credencial idéntico al devuelto por Get-Credential.

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

El primer comando asigna el nombre de usuario a la $User variable . Asegúrese de que el valor sigue el formato "Dominio\Usuario" o "NombreDeEquipo\Usuario".

El segundo comando usa el Read-Host cmdlet para crear una cadena segura a partir de la entrada del usuario. El parámetro Prompt solicita la entrada del usuario y el parámetro AsSecureString enmascara la entrada y lo convierte en una cadena segura.

El tercer comando usa el New-Object cmdlet para crear un objeto PSCredential a partir de los valores almacenados en las $User variables y $PWord .

Ejemplo 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:

Este comando usa los parámetros Message y UserName del Get-Credential cmdlet . Este formato de comando está diseñado para las funciones y los scripts compartidos. En este caso, el mensaje indica el motivo por el que se necesitan credenciales de usuario y les da confianza de que la solicitud es legítima.

Ejemplo 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

Este comando obtiene una credencial del equipo remoto Server01. El comando usa el Invoke-Command cmdlet para ejecutar un Get-Credential comando en el equipo remoto. La salida muestra el mensaje de seguridad remota que Get-Credential incluye en el símbolo del sistema de autenticación.

Parámetros

-Credential

Especifica un nombre de usuario para la credencial, como User01 o Domain01\User01. El nombre del parámetro, -Credential, es opcional.

Al enviar el comando y especificar un nombre de usuario, se le pedirá una contraseña. Si omite este parámetro, se le pedirá un nombre de usuario y una contraseña.

A partir de PowerShell 3.0, si escribe un nombre de usuario sin un dominio, Get-Credential ya no inserta una barra diagonal inversa antes del nombre.

Las credenciales se almacenan en un objeto PSCredential y la contraseña se almacena como SecureString.

Nota:

Para obtener más información sobre la protección de datos SecureString , consulte ¿Cómo es secure is SecureString?.

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

-Message

Especifica un mensaje que aparece en el aviso de autenticación. Este parámetro está diseñado para su uso en una función o un script. Puede usar el mensaje para explicar al usuario el motivo por el que solicita las credenciales y cómo se van a usar.

Este parámetro se introdujo en PowerShell 3.0.

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

-UserName

Especifica un nombre de usuario. El aviso de autenticación solicita una contraseña para el nombre de usuario. De forma predeterminada, el nombre de usuario está en blanco y el aviso de autenticación solicita un nombre de usuario y una contraseña.

Cuando aparezca el aviso de autenticación en un cuadro de diálogo, el usuario puede editar el nombre de usuario especificado. Sin embargo, el usuario no puede cambiar el nombre de usuario cuando aparezca el mensaje en la línea de comandos. Cuando se usa este parámetro en una función o un script compartidos, tenga en cuenta todas las presentaciones posibles.

Este parámetro se introdujo en PowerShell 3.0.

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

Entradas

None

No se pueden canalizar objetos a este cmdlet.

Salidas

PSCredential

Este cmdlet devuelve un objeto de credencial.

Notas

Puede usar el objeto PSCredential que crea en cmdlets que Get-Credential solicitan autenticación de usuario, como los que tienen un parámetro Credential .

De forma predeterminada, aparece el aviso de autenticación en un cuadro de diálogo. Para mostrar el símbolo del sistema de autenticación en la línea de comandos, agregue la entrada del Registro ConsolePrompting (HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ConsolePrompting) y establezca su valor en True. Si la entrada del Registro ConsolePrompting no existe o si su valor es False, la solicitud de autenticación aparece en un cuadro de diálogo. Para instrucciones, vea los ejemplos.

La entrada del Registro ConsolePrompting funciona en la consola de PowerShell, pero no funciona en todos los programas host.

Por ejemplo, no tiene ningún efecto en el entorno de scripting integrado (ISE) de PowerShell. Para obtener información sobre el efecto de la entrada del Registro ConsolePrompting , consulte los temas de ayuda del programa host.

El parámetro Credential no es compatible con todos los proveedores instalados con PowerShell. A partir de PowerShell 3.0, se admite en cmdlets select, como los Get-Content cmdlets y New-PSDrive .