Genera cadenas aleatorias usando PowerShell

  1. Genera cadenas aleatorias con Get-Random
  2. Genere contraseñas aleatorias con la función GeneratePassword()
Genera cadenas aleatorias usando PowerShell

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:

  1. El primer argumento toma un valor entero que representa el número total de caracteres necesarios para la contraseña.
  2. 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 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

Artículo relacionado - PowerShell String