Genera cadenas aleatorias usando PowerShell
-
Genera cadenas aleatorias con
Get-Random
-
Genere contraseñas aleatorias con la función
GeneratePassword()
Por lo general, al administrar Active Directory, es posible que tengamos la tarea de importar usuarios masivos y proporcionarles una contraseña temporal. Sin embargo, si necesitamos establecer la contraseña de forma única para cada usuario, la tarea será tediosa a menos que creemos un script para generar una cadena aleatoria.
Por lo tanto, este artículo discutirá cómo generar cadenas aleatorias que podemos usar para contraseñas usando PowerShell.
Genera cadenas aleatorias con Get-Random
En PowerShell, hay un comando nativo llamado Get-Random
. El cmdlet Get-Random
obtiene un carácter o número seleccionado al azar.
Si enviamos una colección de objetos a Get-Random
, obtiene uno o más objetos seleccionados al azar del grupo.
Al crear contraseñas, podemos invocar el cmdlet Get-Random
cuatro veces, cada vez con un parámetro de entrada
diferente (caracteres especiales, números, mayúsculas y minúsculas), concatenar las cadenas de resultados y barajarlas usando otro Get -Aleatorio
invocar.
Código de ejemplo:
$TokenSet = @{
U = [Char[]]'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
L = [Char[]]'abcdefghijklmnopqrstuvwxyz'
N = [Char[]]'0123456789'
S = [Char[]]'!"#$%&''()*+,-./:;<=>?@[\]^_`{|}~'
}
$Upper = Get-Random -Count 5 -InputObject $TokenSet.U
$Lower = Get-Random -Count 5 -InputObject $TokenSet.L
$Number = Get-Random -Count 5 -InputObject $TokenSet.N
$Special = Get-Random -Count 5 -InputObject $TokenSet.S
$StringSet = $Upper + $Lower + $Number + $Special
(Get-Random -Count 15 -InputObject $StringSet) -join ''
Producción :
9ZimEXDW*@xo?12
La salida anterior debería generar una cadena diferente cada vez. Sin embargo, como podemos observar en el fragmento anterior, requiere varios usos del cmdlet, lo que hace que el bloque de secuencias de comandos sea más largo y el tiempo de procesamiento más lento en milisegundos.
La siguiente sección del artículo discutirá cómo todos podemos hacer las funcionalidades anteriores en un par de líneas de código.
Genere contraseñas aleatorias con la función GeneratePassword()
Podemos considerar el uso de GeneratePassword()
de [System.Web.Security]
si solo vamos a crear cadenas utilizadas para contraseñas. Antes de que podamos usar la función, primero debemos cargar la biblioteca System.Web
usando el siguiente código:
[Reflection.Assembly]::LoadWithPartialName("System.Web")
Una vez cargado, podemos ejecutar la función GeneratePassword()
para generar aleatoriamente una contraseña.
Código de ejemplo:
[System.Web.Security.Membership]::GeneratePassword(15,2)
Producción :
QQjj*LJ:e=YZ)Fo
Como podemos ver en el fragmento de código anterior, la función GeneratePassword()
acepta dos argumentos:
- El primer argumento toma un valor entero que representa el número total de caracteres necesarios para la contraseña.
- El segundo argumento toma un valor entero que representa el número de caracteres especiales de la contraseña.
Sin embargo, este código no garantiza que la contraseña generada tenga al menos un carácter numérico. Para asegurarse de que contiene al menos un carácter numérico, ejecute el siguiente fragmento de código a continuación.
Código de ejemplo:
do {
$pwd = [System.Web.Security.Membership]::GeneratePassword(15,2)
} until ($pwd -match '\d')
$pwd
Producción :
Y4UkK4)G+lannRd
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn