Comment générer des chaînes aléatoires en utilisant PowerShell
-
Utilisez la cmdlet
Get-Random
pour générer des chaînes aléatoires dans PowerShell -
Utilisez la fonction
GeneratePassword()
pour générer des mots de passe aléatoires dans PowerShell -
Utilisez la cmdlet
New-Guid
pour générer des chaînes aléatoires dans PowerShell -
Utilisez la cmdlet
Get-Random
avec des ensembles de caractères pour générer des chaînes aléatoires dans PowerShell - Conclusion

Lors de la gestion d’Active Directory, des tâches telles que l’importation en masse d’utilisateurs avec des mots de passe temporaires uniques peuvent être difficiles. Heureusement, PowerShell offre des solutions efficaces pour générer des chaînes aléatoires afin de simplifier ces tâches.
Dans cet article, nous allons explorer comment y parvenir en utilisant différentes méthodes dans PowerShell.
Utilisez la cmdlet Get-Random
pour générer des chaînes aléatoires dans PowerShell
PowerShell fournit une commande native appelée Get-Random
, qui sélectionne des caractères ou des nombres aléatoires. Lorsque nous fournissons un tableau d’éléments à la commande Get-Random
, elle en choisit aléatoirement un ou plusieurs objets de cette collection.
Lorsque nous créons des mots de passe, nous pouvons invoquer la cmdlet Get-Random
quatre fois avec différents paramètres input
(caractères spéciaux, chiffres, lettres majuscules et lettres minuscules), concaténer les chaînes de résultats et les mélanger en utilisant une autre invocation de Get-Random
.
Dans l’exemple ci-dessous, nous définissons une table de hachage appelée $TokenSet
pour stocker des ensembles de caractères pour les majuscules (U
), les minuscules (L
), les chiffres (N
) et les caractères spéciaux (S
). Cette ligne de code $variablename = Get-Random -Count 5 -InputObject $TokenSet.U
génère une sélection aléatoire de 5 caractères à partir des ensembles de caractères (U
, L
, N
, S
) et les stocke dans une variable ($Upper
, $Lower
, $Number
, $Special
).
Ensuite, nous combinons les caractères sélectionnés au hasard de chaque ensemble en un seul ensemble de caractères appelé $StringSet
. Enfin, nous générons une chaîne aléatoire de 15 caractères en sélectionnant à partir de $StringSet
, puis nous les joignons ensemble pour former le mot de passe final.
Exemple de code :
$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 ''
Sortie :
9ZimEXDW*@xo?12
Le code ci-dessus génère une chaîne différente à chaque fois. Cependant, il implique plusieurs appels à la cmdlet Get-Random
, ce qui peut rendre le script plus long et plus lent en termes de temps de traitement.
La section suivante discute de la façon d’obtenir la même fonctionnalité en seulement quelques lignes de code.
Utilisez la fonction GeneratePassword()
pour générer des mots de passe aléatoires dans PowerShell
Si vous devez créer des chaînes spécifiques aux mots de passe, vous pouvez utiliser la fonction GeneratePassword()
de l’espace de noms [System.Web.Security]
. Pour utiliser cette fonction, vous devez d’abord charger la bibliothèque System.Web
.
[Reflection.Assembly]::LoadWithPartialName("System.Web")
Une fois chargée, nous pouvons exécuter la fonction GeneratePassword()
pour générer un mot de passe aléatoirement.
Dans le code ci-dessous, nous utilisons l’espace de noms [System.Web.Security.Membership]
pour accéder à la fonction GeneratePassword()
.
Exemple de code :
[System.Web.Security.Membership]::GeneratePassword(15, 2)
Sortie :
QQjj*LJ:e=YZ)Fo
Comme nous pouvons le voir dans l’exemple de code ci-dessus, la fonction GeneratePassword()
accepte deux arguments :
-
Le premier argument prend une valeur entière représentant le nombre total de caractères nécessaires pour le mot de passe.
-
Le deuxième argument prend une valeur entière représentant le nombre de caractères spéciaux pour le mot de passe.
Cependant, ce code ne garantit pas la présence d’au moins un chiffre numérique dans le mot de passe. Pour vous assurer qu’il y ait au moins un caractère numérique, vous pouvez utiliser le code suivant.
Exemple de code :
do {
$pwd = [System.Web.Security.Membership]::GeneratePassword(15, 2)
} until ($pwd -match '\d')
$pwd
Tout d’abord, créez une boucle en utilisant le mot-clé do
pour générer un mot de passe et assurez-vous qu’il contient au moins un caractère numérique. Ensuite, générez un mot de passe aléatoire de 15 caractères, dont 2 caractères spéciaux, en utilisant cette ligne de code [System.Web.Security.Membership]::GeneratePassword(15, 2)
et en le stockant dans la variable $pwd
.
La boucle se répète jusqu’à ce que le mot de passe généré contienne au moins un chiffre numérique.
Sortie :
Y4UkK4)G+lannRd
En seulement quelques lignes de code, la sortie ci-dessus génère une chaîne différente à chaque fois et garantit qu’il y a au moins un caractère numérique dans la chaîne générée.
Utilisez la cmdlet New-Guid
pour générer des chaînes aléatoires dans PowerShell
PowerShell fournit la cmdlet New-Guid
pour générer des GUID aléatoires (Identifiants Universels Uniques). Vous pouvez utiliser ces GUID comme chaînes aléatoires pour diverses fins, y compris les mots de passe.
Dans l’exemple suivant, nous générons un GUID aléatoire (Identifiant Universel Unique) en utilisant [System.Guid]::NewGuid()
, puis nous convertissons le GUID généré en une représentation sous forme de chaîne et le stockons dans la variable $randomString
.
Exemple de code :
$randomString = [System.Guid]::NewGuid().ToString()
$randomString
Sortie :
de5881dc-a546-43da-9b89-0bae712406b1
La sortie générera une chaîne aléatoire.
Utilisez la cmdlet Get-Random
avec des ensembles de caractères pour générer des chaînes aléatoires dans PowerShell
Vous pouvez également générer des chaînes aléatoires en définissant des ensembles de caractères personnalisés et en utilisant la cmdlet Get-Random
. Cette méthode permet un meilleur contrôle sur l’ensemble de caractères utilisé pour les chaînes aléatoires.
Voici un exemple.
Exemple de code :
$length = 10
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.ToCharArray()
$randomString = -join ($characters | Get-Random -Count $length)
$randomString
Tout d’abord, nous définissons la longueur souhaitée de la chaîne aléatoire et la stockons dans une variable $length
.
Ensuite, nous définissons les caractères ($characters
) à partir desquels la chaîne aléatoire sera générée sous forme de tableau de caractères. La méthode .ToCharArray()
convertit la chaîne en un tableau de ses caractères individuels.
Ensuite, nous créons une chaîne ($randomString
) de la longueur spécifiée en choisissant aléatoirement des caractères de l’ensemble de caractères, et les caractères sélectionnés sont joints ensemble pour former la chaîne aléatoire finale. Enfin, nous imprimons la chaîne aléatoire générée.
Sortie :
9lQSruF40i
La sortie générera une chaîne aléatoire en choisissant les caractères dans $characters
.
Conclusion
Cet article vous fournit un éventail de méthodes pour générer des chaînes aléatoires dans PowerShell, vous assurant d’avoir le bon outil pour gérer des mots de passe uniques et d’autres tâches dans Active Directory.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedInArticle connexe - PowerShell String
- Comment convertir une chaîne sécurisée en texte brut dans PowerShell
- Comment extraire une sous-chaîne PowerShell d'une chaîne
- Comment remplacer un texte dans un fichier en utilisant PowerShell
- Comment supprimer les espaces d'une variable en utilisant PowerShell
- Comment trouver la position d'une sous-chaîne dans PowerShell