Sikker og automatiseret nulstilling af adgangskoder med PowerShell-kommandoen

PowerShell-scriptet nedenfor kan bruges til automatisk nulstilling af adgangskoder med regelmæssige intervaller. ADSelfService Plus tilbyder også en indstilling, der kan bruges til automatisk at nulstille domænebrugeres adgangskoder, når de udløber. Når denne indstilling er aktiveret, kører et planlægningsværktøj med regelmæssige intervaller for at søge efter brugerkonti med udløbne adgangskoder og foretager automatisk nulstillinger af adgangskoderne. Den nye adgangskode sendes derefter til brugeren via e-mail. Nedenfor kan du se en sammenligning mellem den automatiske nulstilling af adgangskoder via PowerShell og 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
Klik for at kopiere hele scriptet

ADSelfService Plus

I ADSelfService Plus:
  • Gå til Konfiguration > Konfiguration af politik.
  • Opret en ny politik.
  • Når du har angivet de oplysninger, der kræves for at oprette politikken, skal du klikke på Avanceret, gå til fanen Automatisering og markere afkrydsningsfeltet Nulstiller automatisk domænebrugerens adgangskoder, når de udløber.
  • Angiv den hyppighed, hvormed planlægningsværktøjet skal køres.
  • Marker afkrydsningsfeltet Ved automatisk nulstilling af adgangskoder skal brugerne tvinges til at ændre adgangskoden ved næste logon, hvis det er nødvendigt.
  • Feltet "Nulstil adgangskoden til" kan angives til brugerdefineret tekst eller politik for adgangskoder (der genereres en tilfældig adgangskode på baggrund af den brugerdefinerede politik for adgangskoder).
  • Gå til Meddelelse > Nulstil adgangskode, og indtast de nødvendige oplysninger for at give brugerne besked om deres nulstilling af adgangskoder.
  • Klik på OK, og i afsnittet Konfiguration af politik skal du klikke på Gem.
Advantages of ADSelfService Plus
  • Hurtig konfiguration:

    Med ADSelfService Plus kan automatisk nulstilling af adgangskoder aktiveres med et par klik og indtastning af få oplysninger. I PowerShell kræver dette oprettelse, fejlfinding og kørsel af scripts.

  • Vælg hvilke brugeres adgangskoder, der kan nulstilles automatisk:

    Når man opretter en politik for ADSelfService, kan administratorer vælge det domæne, de OU'er og grupper, hvis brugere automatisk kan få nulstillet deres adgangskoder efter udløb. Brug af PowerShell til at automatisere nulstillinger af adgangskoder for bestemte brugere kræver, at man udarbejder et omfangsrigt script.

  • Undgå oprettelse af svage adgangskoder:

    ADSelfService Plus' funktion til håndhævelse af politik for adgangskoder giver administratorer mulighed for at oprette og håndhæve brugerdefinerede politikker for adgangskoder, der forhindrer oprettelsen af svage adgangskoder. Du kan vælge, at de adgangskoder, der genereres automatisk, skal overholde denne brugerdefinerede politik for adgangskoder.

  • Synkroniser adgangskoder med virksomhedsapplikationer:

    Når ADSelfService Plus' funktion til synkronisering af adgangskoder er aktiveret, synkroniserer den automatisk den nye adgangskode med brugerens konti i virksomhedsapplikationer såsom G Suite og Salesforce.

  • Rapport om audit af nulstilling af adgangskoder:

    Registrerer alle handlinger vedrørende nulstilling af adgangskoder, herunder automatiserede nulstillinger af adgangskoder, i rapporter, der nemt kan genereres med et enkelt klik og eksporteres i forskellige formater såsom HTML, CSV, PDF og XLS.

  • Give besked til administratorer:

    Administratorer får med jævne mellemrum tilsendt en konsolideret rapport, der indeholder oplysninger om alle nulstillinger af adgangskoder.

Planlagte meddelelser til AD-brugere om kontoens udløb

 Prøv ADSelfService Plus helt gratis!
  • Gå til din script-fri script-fri AD Self-Service Password Management med ADSelfService Plus.
  • Download nu 

Relaterede ressourcer