Obtener Credencial Usando PowerShell
-
Uso de
Get-Credential
para obtener credenciales en PowerShell -
Uso del cmdlet
Get-Credential
sin un aviso para obtener la credencial en 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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn