Obtener Credencial Usando PowerShell

  1. Uso de Get-Credential para obtener credenciales en PowerShell
  2. Uso del cmdlet Get-Credential sin un aviso para obtener la credencial en PowerShell
Obtener Credencial Usando PowerShell

Los objetos PSCredential son una forma creativa de almacenar y pasar credenciales de forma segura a varios servicios. Muchos cmdlets nativos y de terceros requieren objetos PSCredential en muchos comandos diferentes. Además, las credenciales son un objeto omnipresente en Windows PowerShell.

Este artículo discutirá cómo usar el cmdlet Get-Credential de Windows PowerShell y obtener una credencial sin ningún aviso.

Uso de Get-Credential para obtener credenciales en PowerShell

Normalmente, para crear un objeto PSCredential, usaríamos el cmdlet Get-Credential. Dicho cmdlet es la forma más común en que Windows PowerShell recibe información para crear el objeto PSCredential. Este objeto consiste principalmente en el nombre de usuario y la contraseña.

Cada vez que se ejecuta, solicitará en la línea de comando el nombre de usuario y la contraseña, o aparecerá un cuadro de diálogo emergente solicitando las credenciales del usuario.

Uso del cmdlet Get-Credential sin un aviso para obtener la credencial en PowerShell

Por ejemplo, estamos trabajando en un script automatizado que se ejecuta en una tarea programada o como parte de un marco de automatización más potente. En este caso, nadie opera la consola para escribir un nombre de usuario y una contraseña. Por lo tanto, es mejor crear un objeto PSCredential desde cero.

Crear un objeto PSCredential sin interacción implica un proceso de encriptación. El objeto PSCredential requiere un nombre de usuario de texto sin formato y una contraseña cifrada.

Para cifrar una contraseña, necesitamos convertir una cadena estándar en una cadena segura. Hacemos eso usando el cmdlet ConvertTo-SecureString. Podemos pasar una contraseña de texto sin formato a este cmdlet, y debido a que es texto sin formato, tenemos que usar los parámetros -PlainText y -Force. Ambos parámetros indican que estamos pasando una cadena de texto sin formato sin necesidad de confirmación.

$pass = ConvertTo-SecureString 'MySecretPassword' -AsPlainText -Force

Una vez que se crea una cadena segura, es hora de crear el objeto PSCredential. Para ello, podemos utilizar el cmdlet New-Object para definir un objeto de System.Management.Automation.PSCredential. La clase PSCredential tiene un constructor que aceptará el nombre de usuario en texto sin formato y una contraseña de cadena segura que podemos usar como argumentos.

$credential = New-Object System.Management.Automation.PSCredential ('user01', $pass)

Ahora tenemos un objeto PSCredential con nuestro nombre de usuario de texto sin formato y contraseña de cadena segura guardada en una variable. Ahora podemos pasar la variable $credential a varios comandos que requieren un parámetro -Credential, que funcionará muy bien. Para verificar si se creó con el nombre de usuario y la contraseña esperados, podemos hacer referencia a la propiedad UserName, que muestra el nombre de usuario que utilizó anteriormente.

Código de ejemplo:

$credential.Username

Producción :

user01

La contraseña está encriptada a través de una cadena segura, pero si lee la contraseña en la misma computadora y ha iniciado sesión como usuario, podemos usar el método GetNetworkCredential() para ver la contraseña en texto sin formato. Así que agregue GetNetworkCredential() al final de la variable $credential pero tenga en cuenta que no sabrá la contraseña impresa en la consola una vez ejecutada.

Código de ejemplo:

$credential.GetNetworkCredential()

Producción :

UserName Domain
-------- ------
user01

Para ver la contraseña, deberá usar la propiedad Contraseña en el objeto que devuelve GetNetworkCredential(). La contraseña devuelta debe ser la misma contraseña que proporcionó al constructor de PSCredential.

Código de ejemplo:

$credential.GetNetworkCredential().Password

Producción :

MySecretPassword

Ahora que hemos verificado que la variable $credential contiene tanto nuestro nombre de usuario como nuestras contraseñas, podemos usar la variable como parámetro en el cmdlet Get-Credential.

Get-Credential -Credential $credential
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn