Cómo generar cadenas aleatorias usando PowerShell
-
Utilice el cmdlet
Get-Random
para generar cadenas aleatorias en PowerShell -
Utilice la función
GeneratePassword()
para generar contraseñas aleatorias en PowerShell -
Utilice el cmdlet
New-Guid
para generar cadenas aleatorias en PowerShell -
Utilice el cmdlet
Get-Random
con conjuntos de caracteres para generar cadenas aleatorias en PowerShell - Conclusión

Al gestionar Active Directory, tareas como importar usuarios en masa con contraseñas temporales únicas pueden ser desafiantes. Afortunadamente, PowerShell ofrece soluciones efectivas para generar cadenas aleatorias que simplifican estas tareas.
En este artículo, exploraremos cómo lograr esto utilizando diferentes métodos en PowerShell.
Utilice el cmdlet Get-Random
para generar cadenas aleatorias en PowerShell
PowerShell proporciona un comando nativo llamado Get-Random
, que selecciona caracteres o números aleatorios. Cuando proporcionamos un arreglo de elementos al comando Get-Random
, selecciona aleatoriamente uno o más objetos de esa colección.
Al crear contraseñas, podemos invocar el cmdlet Get-Random
cuatro veces con diferentes parámetros de input
(caracteres especiales, números, mayúsculas y minúsculas), concatenar las cadenas resultantes y mezclarlas usando otra invocación de Get-Random
.
En el ejemplo a continuación, definimos una tabla hash llamada $TokenSet
para almacenar conjuntos de caracteres para mayúsculas(U
), minúsculas(L
), números(N
) y caracteres especiales(S
). Esta línea de código $variablename = Get-Random -Count 5 -InputObject $TokenSet.U
genera una selección aleatoria de 5 caracteres de los conjuntos de caracteres(U
, L
, N
, S
) y la almacena en una variable($Upper
, $Lower
, $Number
, $Special
).
Luego, combinamos los caracteres seleccionados aleatoriamente de cada conjunto en un único conjunto de caracteres llamado $StringSet
. Por último, generamos una cadena aleatoria de 15 caracteres seleccionando de $StringSet
, y luego los unimos para formar la contraseña final.
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 ''
Salida:
9ZimEXDW*@xo?12
El código anterior genera una cadena diferente cada vez. Sin embargo, implica múltiples llamadas al cmdlet Get-Random
, lo que puede hacer que el script sea más largo y más lento en términos de tiempo de procesamiento.
La siguiente sección discute cómo lograr la misma funcionalidad en solo unas pocas líneas de código.
Utilice la función GeneratePassword()
para generar contraseñas aleatorias en PowerShell
Si necesita crear cadenas específicas de contraseñas, puede usar la función GeneratePassword()
del espacio de nombres [System.Web.Security]
. Para usar esta función, primero debe cargar la biblioteca System.Web
.
[Reflection.Assembly]::LoadWithPartialName("System.Web")
Una vez cargada, podemos ejecutar la función GeneratePassword()
para generar una contraseña aleatoriamente.
En el código a continuación, usamos el espacio de nombres [System.Web.Security.Membership]
para acceder a la función GeneratePassword()
.
Código de ejemplo:
[System.Web.Security.Membership]::GeneratePassword(15, 2)
Salida:
QQjj*LJ:e=YZ)Fo
Como podemos ver en el código de ejemplo 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 para la contraseña.
Sin embargo, este código no garantiza la presencia de al menos un carácter numérico en la contraseña. Para asegurarse de que haya al menos un carácter numérico, puede usar el siguiente código.
Código de ejemplo:
do {
$pwd = [System.Web.Security.Membership]::GeneratePassword(15, 2)
} until ($pwd -match '\d')
$pwd
Primero, cree un bucle usando la palabra clave do
para generar una contraseña y asegurarse de que contenga al menos un carácter numérico. Luego, genere una contraseña aleatoria con 15 caracteres, incluyendo 2 caracteres especiales, usando esta línea de código [System.Web.Security.Membership]::GeneratePassword(15, 2)
y almacénela en la variable $pwd
.
El bucle se repite hasta que la contraseña generada contenga al menos un carácter numérico.
Salida:
Y4UkK4)G+lannRd
En solo unas pocas líneas de código, la salida anterior genera una cadena diferente cada vez y asegura que haya al menos un carácter numérico en la cadena generada.
Utilice el cmdlet New-Guid
para generar cadenas aleatorias en PowerShell
PowerShell proporciona el cmdlet New-Guid
para generar GUIDs aleatorios (Identificadores Únicos Globales). Puede utilizar estos GUIDs como cadenas aleatorias para diversos propósitos, incluidas las contraseñas.
En el siguiente ejemplo, generamos un GUID aleatorio (Identificador Único Global) utilizando [System.Guid]::NewGuid()
, luego convertimos el GUID generado a una representación de cadena y lo almacenamos en la variable $randomString
.
Código de ejemplo:
$randomString = [System.Guid]::NewGuid().ToString()
$randomString
Salida:
de5881dc-a546-43da-9b89-0bae712406b1
La salida generará una cadena aleatoria.
Utilice el cmdlet Get-Random
con conjuntos de caracteres para generar cadenas aleatorias en PowerShell
También puede generar cadenas aleatorias definiendo conjuntos de caracteres personalizados y utilizando el cmdlet Get-Random
. Este método permite un mayor control sobre el conjunto de caracteres utilizado para las cadenas aleatorias.
Aquí hay un ejemplo.
Código de ejemplo:
$length = 10
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.ToCharArray()
$randomString = -join ($characters | Get-Random -Count $length)
$randomString
Primero, definimos la longitud deseada de la cadena aleatoria y la almacenamos en una variable $length
.
Luego, definimos los caracteres($characters
) de los cuales se generará la cadena aleatoria como un arreglo de caracteres. El método .ToCharArray()
convierte la cadena en un arreglo de sus caracteres individuales.
A continuación, creamos una cadena ($randomString
) de la longitud especificada eligiendo aleatoriamente caracteres del arreglo de caracteres, y los caracteres seleccionados se unen para formar la cadena aleatoria final. Por último, imprimimos la cadena aleatoria generada.
Salida:
9lQSruF40i
La salida generará una cadena aleatoria eligiendo los caracteres en $characters
.
Conclusión
Este artículo le proporciona una variedad de métodos para generar cadenas aleatorias en PowerShell, asegurando que tenga la herramienta adecuada para gestionar contraseñas únicas y otras tareas en Active Directory.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedInArtículo relacionado - PowerShell String
- Cómo encontrar la posición de una subcadena en PowerShell
- Cómo reemplazar un texto en un archivo usando PowerShell
- Cómo verificar si una cadena no es NULL o VACÍA en PowerShell
- Comprobar si la cadena está vacía en PowerShell
- Cómo convertir una cadena segura a texto sin formato en PowerShell
- Cómo eliminar espacios de una variable usando PowerShell