Comment générer des chaînes aléatoires en utilisant PowerShell

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

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 :

  1. Le premier argument prend une valeur entière représentant le nombre total de caractères nécessaires pour le mot de passe.

  2. 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.

Vous aimez nos tutoriels ? Abonnez-vous à DelftStack sur YouTube pour nous aider à créer davantage de tutoriels vidéo de haute qualité. Abonnez-vous
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

Article connexe - PowerShell String