¿Cómo generar cadenas aleatorias en PowerShell?
Recientemente, un administrador del sistema me preguntó acerca de cómo generar cadenas aleatorias en PowerShell. Le expliqué diferentes ejemplos. En este tutorial, explicaré cómo generar cadenas aleatorias en PowerShell con algunos ejemplos.
Para generar una cadena aleatoria en PowerShell usando el cmdlet Get-Random, defina la longitud de cadena deseada y un conjunto de caracteres para elegir. Utilice un bucle para seleccionar caracteres aleatorios de este conjunto y unirlos en una cadena. Por ejemplo, para crear una cadena de 10 caracteres, puede utilizar el siguiente script:
$length = 10
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
$randomString = -join ((1..$length) | ForEach-Object { $characters | Get-Random })
Write-Output $randomStringEste script genera una cadena aleatoria seleccionando caracteres aleatoriamente del conjunto especificado y concatenándolos.
Generar cadenas aleatorias en PowerShell
Las cadenas aleatorias son secuencias de caracteres generadas de tal manera que cada carácter se selecciona independientemente de los demás.
La forma más sencilla de generar una cadena aleatoria en PowerShell es mediante el cmdlet Get-Random. Este cmdlet le permite seleccionar objetos aleatorios de una colección, que se pueden usar para crear una cadena aleatoria.
Ahora, déjame mostrarte algunos ejemplos:
Ejemplo 1: generar una cadena aleatoria de longitud fija
A continuación se muestra un ejemplo sencillo de cómo generar una cadena aleatoria de 10 caracteres en PowerShell. A continuación se muestra el script completo de PowerShell.
# Define the length of the random string
$length = 10
# Define the set of characters to choose from
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.ToCharArray()
# Generate the random string
$randomString = -join ((1..$length) | ForEach-Object { $characters | Get-Random })
# Output the random string
Write-Output $randomStringUna vez que ejecute el script anterior, podrá ver el resultado en la siguiente captura de pantalla:
Consulte Generar números aleatorios en PowerShell
Ejemplo 2: generar una cadena aleatoria con letras mayúsculas
A continuación se muestra un ejemplo básico de cómo generar una cadena aleatoria que consta de letras mayúsculas en PowerShell:
# Define the characters to use
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray()
# Initialize an empty string
$randomString = ""
# Generate a random string of length 10
for ($i = 0; $i -lt 10; $i++) {
$randomChar = $chars | Get-Random
$randomString += $randomChar
}
Write-Output $randomStringEn este script, definimos una cadena $chars que contiene todas las letras mayúsculas. Luego realizamos un bucle 10 veces, cada vez seleccionando un carácter aleatorio de $chars usando el cmdlet Get-Random y agregándolo a $randomString.
Ejecuté el script de PowerShell anterior y puedes ver el resultado en la siguiente captura de pantalla:
Genere cadenas aleatorias en PowerShell con funciones personalizadas
También puede crear una función personalizada en PowerShell para generar una cadena aleatoria y puede reutilizar la función.
Aquí hay una función personalizada que genera una cadena aleatoria de una longitud específica:
function Get-RandomString {
param (
[int]$Length = 10,
[string]$Characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
)
# Convert the string of characters into an array of characters
$charArray = $Characters.ToCharArray()
# Generate the random string
$randomString = -join ((1..$Length) | ForEach-Object { $charArray | Get-Random })
return $randomString
}
# Generate a random string with the default length (10)
$randomString = Get-RandomString
Write-Output $randomString
# Generate a random string with a custom length (15)
$randomString = Get-RandomString -Length 15
Write-Output $randomStringEsta función le permite especificar la longitud de la cadena aleatoria y el conjunto de caracteres a utilizar. Por defecto, genera una cadena de 10 caracteres.
También puede ver el resultado exacto en la siguiente captura de pantalla:
Consulte el generador de contraseñas aleatorias de PowerShell
Genere cadenas aleatorias con caracteres especiales en PowerShell
A veces, es posible que necesites generar cadenas aleatorias con caracteres especiales en PowerShell. A continuación se muestra el script completo de PowerShell.
# Define the characters to use, including special characters
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_=+[]{}|;:,.<>?/`~".ToCharArray()
# Initialize an empty string
$randomString = ""
# Generate a random string of length 15
for ($i = 0; $i -lt 15; $i++) {
$randomChar = $chars | Get-Random
$randomString += $randomChar
}
Write-Output $randomStringEn este ejemplo, la cadena $chars ahora incluye letras minúsculas, dígitos y una variedad de caracteres especiales, y se convierte en una matriz. El bucle genera una cadena aleatoria de longitud 15 seleccionando caracteres de este conjunto extendido.
Puede ver el resultado en la captura de pantalla a continuación; generó una cadena aleatoria que contiene caracteres especiales.
Consulte el generador de palabras aleatorias de PowerShell
Genere cadenas aleatorias con letras y números en PowerShell
Déjame mostrarte otro requisito común: generar cadenas aleatorias que incluyan letras y números. Esto puede resultar útil para crear identificadores alfanuméricos.
Así es como puedes generar una cadena aleatoria que contenga letras y números:
# Define the characters to use, including letters and numbers
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".ToCharArray()
# Initialize an empty string
$randomString = ""
# Generate a random string of length 12
for ($i = 0; $i -lt 12; $i++) {
$randomChar = $chars | Get-Random
$randomString += $randomChar
}
Write-Output $randomStringEn este script, la cadena $chars incluye letras mayúsculas y minúsculas, así como dígitos, y se convierte en una matriz. El bucle genera una cadena aleatoria de longitud 12 seleccionando caracteres de este conjunto.
Aquí está el resultado en la siguiente captura de pantalla:
Genere una cadena aleatoria de tipos de caracteres específicos en PowerShell
A veces, es posible que deba asegurarse de que la cadena aleatoria generada incluya al menos un carácter de cada tipo especificado (por ejemplo, al menos una letra, un número y un carácter especial). Así es como puedes lograrlo:
function New-SecureRandomString {
param (
[int]$length = 12
)
# Define character sets
$letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".ToCharArray()
$numbers = "0123456789".ToCharArray()
$specialChars = "!@#$%^&*()-_=+[]{}|;:,.<>?/`~".ToCharArray()
# Ensure at least one character from each set
$randomString = $letters | Get-Random -Count 1
$randomString += ($numbers | Get-Random -Count 1)
$randomString += ($specialChars | Get-Random -Count 1)
# Combine all character sets
$allChars = $letters + $numbers + $specialChars
# Generate the remaining characters
for ($i = 3; $i -lt $length; $i++) {
$randomChar = $allChars | Get-Random
$randomString += $randomChar
}
# Shuffle the string
$randomString = ($randomString.ToCharArray() | Get-Random -Count $randomString.Length) -join ''
return $randomString
}
# Generate a secure random string of length 16
Write-Output (New-SecureRandomString -length 16)En esta función, New-SecureRandomString, nos aseguramos de que la cadena generada incluya al menos una letra, un número y un carácter especial. Luego llenamos la longitud restante con caracteres aleatorios del conjunto combinado y mezclamos la cadena para garantizar la aleatoriedad.
Aquí está el resultado en la siguiente captura de pantalla:
Conclusión
En este tutorial, he explicado cómo generar cadenas aleatorias en PowerShell usando el cmdlet Get-Random. También he mostrado algunos ejemplos diferentes como:
- Genere cadenas aleatorias en PowerShell con funciones personalizadas
- Genere cadenas aleatorias con caracteres especiales en PowerShell
- Genere cadenas aleatorias con letras y números en PowerShell
- Genere una cadena aleatoria de tipos de caracteres específicos en PowerShell
¿Aún tienes preguntas? No dudes en dejar un comentario a continuación:





