Sichere & automatisierte Passwortzurücksetzung mit PowerShell-Befehlen

Das folgende PowerShell-Skript dient dazu, die Passwörter automatisch in bestimmten Abständen zurückzusetzen. Auch ADSelfService Plus bietet eine Option zum automatischen Zurücksetzen von Domänenpasswörtern, wenn diese ablaufen. Bei aktivierter Option wird in regelmäßigen Abständen ein Planer ausgeführt, der Benutzerkonten mit abgelaufenen Passwörtern sucht und diese automatisch zurücksetzt. Das neue Passwort wird dann per E-Mail an den Benutzer gesendet. Hier ein Vergleich zwischen der automatischen Passwortzurücksetzung mit PowerShell oder mit 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
Zum Kopieren des gesamten Skriptes klicken

ADSelfService Plus

In ADSelfService Plus:
  • Wechseln Sie zu Konfiguration Richtlinienkonfiguration.
  • Neue Richtlinie erstellen.
  • Geben Sie die erforderlichen Informationen an, um die Richtlinie zu erstellen, und klicken Sie dann auf Erweitert. Navigieren Sie zur Registerkarte Automatisierung und aktivieren Sie das Markierungsfeld „Domänen-Benutzerpasswörter beim Ablauf automatisch zurücksetzen“. .
  • Geben Sie die Frequenz an, mit welcher der Planer ausgeführt werden soll.
  • Aktivieren Sie bei Bedarf das Markierungsfeld Benutzer nach der automatischen Passwortzurücksetzung zwingen, bei der nächsten Anmeldung das Passwort zu ändern.
  • Das Feld „Passwort zurücksetzen“ können Sie auf Spezifischen Text oder Passwortrichtlinie einstellen (ein gemäß der spezifischen Passwortrichtlinie zufällig generiertes Passwort)
  • gehen Sie auf Benachrichtigen > Passwort zurücksetzen und geben Sie die nötigen Details an, um Benutzer über das Zurücksetzen von Passwörtern zu benachrichtigen.
  • Klicken Sie auf OK und dann in der Richtlinienkonfiguration auf Speichern.
Secure & Automated Password Reset with PowerShell Command
Vorteile von ADSelfService Plus
  • Schnelle Konfiguration:

    In ADSelfService Plus benötigen Sie zum Aktivieren der automatischen Passwortzurücksetzung nur wenige Klicks und müssen minimale Informationen angeben. In PowerShell müssen zunächst Skripte geschrieben, auf Fehler geprüft und dann ausgeführt werden.

  • Auswahl, welche Benutzerpasswörter automatisch zurückgesetzt werden können:

    Beim Erstellen einer ADSelfService-Plus-Richtlinie können Admins die Domäne, OEs und Gruppen auswählen, deren Benutzerpasswörter beim Ablauf automatisch zurückgesetzt werden können. Um die Passwortzurücksetzung für bestimmte Benutzer zu automatisieren, müssten Sie in PowerShell ein umfangreiches Skript schreiben

  • Verhindern der Erstellung schwacher Passwörter:

    Die Erzwingung von Passwortrichtlinien in ADSelfService Plus ermöglicht es Admins, spezifische Passwortrichtlinien zu erstellen, damit keine schwachen Passwörter verwendet werden können. Das automatische Generieren von Passwörtern kann auf Wunsch nach dieser spezifischen Richtlinie erfolgen.

  • Synchronisieren von Passwörtern mit Unternehmensanwendungen:

    Wenn Sie die Passwortsynchronisierung in ADSelfService Plus aktivieren, werden neue Passwörter automatisch mit Benutzerkonten in Unternehmensanwendungen synchronisiert (wie G Suite und Salesforce).

  • Audit-Bericht zur Passwortzurücksetzung:

    Erfasst alle (auch automatisierte) Operationen zum Zurücksetzen von Passwörtern in Berichten, die Sie ganz einfach mit nur einem Klick erstellen und in verschiedenen Formaten wie HTML, CSV, PDF und XLS exportieren können.

  • Administratoren benachrichtigen:

    Administratoren erhalten regelmäßig einen zusammengefassten Bericht mit Details zu allen Passwortzurücksetzungen.

Geplante Benachrichtigungen für AD-Benutzer über den Kontoablauf

 Probieren Sie ADSelfService Plus kostenlos aus!
  • Begeben Sie sich auf Ihre script-free skriptfrei AD Self-Service-Passwortverwaltung mit ADSelfService Plus.
  • Jetzt herunterladen 

ADSelfService Plus vertraut von