Il arrive souvent dans le cadre de migration ou de création de nouvelle forêt/Domaine Active Directory, de générer des nouveau mots de passe pour les nouveau comptes. Afin d’automatiser cette opération, le PowerShell nous permet de scripter cette étape et de la faire correspondre à la stratégie de mot-de-passe mise en œuvre.
Voici un exemple de fonction qui permet de générer des mots-de-passe correspondant à la stratégie par défaut (complexité et 8 caractères):
#============================================
# Fonction de création de Password aléatoire
#============================================
function RandomPassword ([int]$intPasswordLength)
{
if ($intPasswordLength -lt 4) {return "password cannot be <4 chars"} # -lt inférieur à
$strNumbers = "1234567890"
$strCapitalLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
$strLowerLetters = "abcdefghijklmnopqrstuvwxyz"
$strSymbols = "@-?!#"
$rand = new-object random
for ($a=1; $a -le $intPasswordLength; $a++) #inférieur -le inférieur ou égal à
{
if ($a -gt 4) #supérieur à
{
$b = $rand.next(0,4) + $a
$b = $b % 4 + 1
} else { $b = $a }
switch ($b)
{
"1" {$b = "$strNumbers"}
"2" {$b = "$strCapitalLetters"}
"3" {$b = "$strLowerLetters"}
"4" {$b = "$strSymbols"}
}
$charset = $($b)
$number = $rand.next(0,$charset.Length)
$RandomPassword += $charset[$number]
}
return $RandomPassword
}
#######################
# PROGRAMME PRINCIPAL
#######################
# Génération aléatoire du Password en lançant la fonction définie précédemment
RandomPassword 8
Il suffit de modifier le programme principal pour générer des mots-de-passe plus longs. Il ne reste plus qu’à intégrer et appeler la fonction dans un script global de création des comptes Active Directory.