Sécurisation & Réinitialisation automatisée du mot de passe avec la commande PowerShell

Le script PowerShell ci-dessous peut être utilisé pour réinitialiser automatiquement les mots de passe à intervalles réguliers. ADSelfService Plus offre également une option qui peut être utilisée pour réinitialiser automatiquement les mots de passe des utilisateurs du domaine lorsqu'ils expirent. Si cette option est activée, un planificateur s'exécute à intervalles réguliers pour rechercher les comptes utilisateurs dont le mot de passe a expiré et réinitialise automatiquement les mots de passe. Le nouveau mot de passe est ensuite envoyé par e-mail à l'utilisateur. Voici une comparaison entre la réinitialisation automatique du mot de passe à l'aide de PowerShell et ADSelfService Plus :

PowerShell

Param (
    [Parameter(Mandatory=$True)]
    [String]$InputFile
)
Function MakeRandomPass {
    Param (
        [Int]$PLength
    )
    If ($PLength -LT 4) {Return $Null}
    $Numbers = $Null
    For ($A=48;$A -LE 57;$A++) {$Numbers+=,[Char][Byte]$A}
    $UpCase = $Null
    For ($A=65;$A -LE 90;$A++) {$UpCase+=,[Char][Byte]$A}
    $LowCase = $Null
    For ($A=97;$A -LE 122;$A++) {$LowCase+=,[Char][Byte]$A}
    $SpChar = $Null
    For ($A=33;$A -LE 47;$A++) {$SpChar+=,[Char][Byte]$A}
    For ($A=58;$A -LE 64;$A++) {$SpChar+=,[Char][Byte]$A}
    For ($A=123;$A -LE 126;$A++) {$SpChar+=,[Char][Byte]$A}
    
    $Buffer = @()
    For ($A=1;$A -LE $PLength;$A++) {$Buffer+=0}
    While ($True) {
        $NumChar = (Get-Random -Minimum 0 -Maximum $PLength)
        If ($Buffer[$NumChar] -EQ 0) {$Buffer[$NumChar] = 1; break}
    }
    While ($True) {
        $NumChar = (Get-Random -Minimum 0 -Maximum $PLength)
        If ($Buffer[$NumChar] -EQ 0) {$Buffer[$NumChar] = 2; break}
    }
    While ($True) {
        $NumChar = (Get-Random -Minimum 0 -Maximum $PLength)
        If ($Buffer[$NumChar] -EQ 0) {$Buffer[$NumChar] = 3; break}
    }
    While ($True) {
        $NumChar = (Get-Random -Minimum 0 -Maximum $PLength)
        If ($Buffer[$NumChar] -EQ 0) {$Buffer[$NumChar] = 4; break}
    }
    $ThisPassword = $Null
    ForEach ($CharType In $Buffer) {
        If ($CharType -EQ 0) {
            $CharType = ((1,2,3,4) | Get-Random)
        }
        Switch ($CharType) {
            1 {$ThisPassword+=($Numbers | Get-Random)}
            2 {$ThisPassword+=($UpCase | Get-Random)}
            3 {$ThisPassword+=($LowCase | Get-Random)}
            4 {$ThisPassword+=($SpChar | Get-Random)}
        }
    }
    Return $ThisPassword
}

$ErrorActionPreference = "SilentlyContinue"
$T = Get-Date
If ($Error) {$Error.Clear()}
Write-Host "`n"
Write-Host "Working. Please wait"
Write-Host "`n"
$RepFile = $T -Replace " ", $Null
$RepFile = $RepFile -Replace ":", $Null
$RepFile = $RepFile -Replace "/", $Null
$RepFile = $RepFile -Replace "-", $Null
If (Test-Path "Report_$RepFile.txt") {
    Remove-Item "Report_$RepFile.txt"
}
New-Item -Path "Report_$RepFile.txt" -Type File -Force -Value "REPORT: Reset Local User Account Password On Multiple Computers" | Out-Null
Add-Content "Report_$RepFile.txt" "`n"
Add-Content "Report_$RepFile.txt" "`n"
Add-Content "Report_$RepFile.txt" "Report Created On $T"
Add-Content "Report_$RepFile.txt" 
Add-Content "Report_$RepFile.txt" "`n"

Import-CSV -Path $InputFile | ForEach-Object {
    Try {
        $ThisMachine = $_.ComputerName
        $ThisAccount = $_.LocalAccountLoginID
        If (!([string]::IsNullOrEmpty($ThisMachine)) -AND !([string]::IsNullOrEmpty($ThisAccount))) {
            Write-Host "`tAttempting to reset the  local account password in computer: $ThisMachine" -ForeGroundColor "Yellow"
            $PassToSet = MakeRandomPass 20
            $ThisUser = [ADSI]"WinNT://$ThisMachine/$ThisAccount, User"
            $ThisUser.SetPassword($PassToSet)
            $ThisUser.SetInfo()
            If (!$Error) {
                Add-Content "Report_$RepFile.txt" "$ThisMachine `t`t -- $ThisAccount `t`t -- $PassToSet `t`t --success: Password Has Been Reset/Changed."
            }
        }       
    }
    Catch {
        [System.Exception] | Out-Null
        If ($Error) {
            Add-Content "Report_$RepFile.txt" "$ThisMachine `t`t -- $ThisAccount `t`t -- Password Reset has failed. An Error Has Occurred."
            Add-Content "Report_$RepFile.txt" $Error
            $Error.Clear()
        }
    }
}
Write-Host "`n"
Write-Host "Task Completed. Check Report File: Report_$RepFile.txt"
Notepad "Report_$RepFile.txt"
Write-Host "`n"
 Copied
Cliquez pour copier tout le script

ADSelfService Plus

Dans ADSelfService Plus :
  • Allez dans Configuration > Configuration de la stratégie.
  • Créez une nouvelle stratégie.
  • Une fois que les informations nécessaires à la création de la stratégie sont fournies, cliquez sur Avancé naviguez jusqu'à l'onglet Automatisation et cochez la case Réinitialiser automatiquement les mots de passe des utilisateurs du domaine lorsqu'ils expirent.
  • Spécifiez la Fréquence à laquelle le planificateur doit être exécuté.
  • Cochez la case En cas de réinitialisation automatique du mot de passe, obliger les utilisateurs à changer leur mot de passe à la prochaine connexion.
  • Le champ Réinitialiser le mot de passe peut être défini comme Texte personnalisé ou Stratégie de mot de passe (un mot de passe aléatoire généré sur la base de la stratégie de mot de passe personnalisée).
  • Allez dans Notification > Réinitialisation du mot de passe et entrez les détails nécessaires pour notifier les utilisateurs de leur réinitialisation de mot de passe.
  • Cliquez sur OK et, dans la section Configuration de la stratégie, cliquez sur Enregistrer.
Secure & Automated Password Reset with PowerShell Command
Avantages d'ADSelfService Plus
  • Configuration rapide :

    Avec ADSelfService Plus, la réinitialisation automatique du mot de passe peut être activée en quelques clics et en saisissant un minimum d'informations. Dans PowerShell, cela nécessite la création, le débogage et l'exécution de scripts.

  • Choisissez les mots de passe des utilisateurs qui peuvent être automatiquement réinitialisés :

    Lors de la création d'une stratégie ADSelfService, les administrateurs peuvent sélectionner le domaine, les UO et les groupes dont les utilisateurs peuvent voir leurs mots de passe automatiquement réinitialisés à leur expiration. L'utilisation de PowerShell pour automatiser la réinitialisation des mots de passe pour des utilisateurs spécifiques nécessite la création d'un script complet

  • Empêcher la création de mots de passe faibles :

    Avec ADSelfService Plus et son Password Policy Enforcer, les administrateurs peuvent créer et appliquer des stratégies de mot de passe personnalisées qui empêchent la création de mots de passe faibles. Les mots de passe générés automatiquement peuvent être choisis pour être conformes à cette stratégie de mot de passe personnalisée.

  • Synchroniser les mots de passe avec les applications d'entreprise :

    L’option de Synchronisation du mot de passe d’ADSelfService Plus, lorsqu'elle est activée, permet de synchroniser automatiquement le nouveau mot de passe avec les comptes de l'utilisateur dans les applications d'entreprise comme G Suite et Salesforce.

  • Rapport d'audit pour la réinitialisation des mots de passe :

    Capture toutes les opérations de réinitialisation de mot de passe, y compris les réinitialisations automatisées de mot de passe dans des rapports qui peuvent être facilement générés d'un simple clic et exportés dans différents formats tels que HTML, CSV, PDF ou XLS.

  • Notifiez les administrateurs :

    Les administrateurs reçoivent périodiquement un rapport consolidé contenant les détails de toutes les opérations de réinitialisation de mot de passe.

Réinitialisez automatiquement les mots de passe des utilisateurs d'Active Directory.

  Obtenez un essai gratuit de 30 jours

Produits connexes