Restablecimiento de contraseñas seguro y automatizado con el comando de PowerShell
El script de PowerShell que se proporciona a continuación se puede usar para restablecer automáticamente las contraseñas a intervalos regulares. ADSelfService Plus también ofrece una opción que se puede utilizar para restablecer automáticamente las contraseñas de los usuarios del dominio cuando caducan. Cuando esta opción está habilitada, un programador se ejecuta a intervalos regulares para buscar cuentas de usuario con contraseñas caducadas y restablece automáticamente las contraseñas. A continuación, la nueva contraseña se envía por correo al usuario. Aquí se muestra una comparación entre el restablecimiento automático de contraseñas usando PowerShell y 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"
copiar
ADSelfService Plus
En ADSelfService Plus:
- Vaya a Configuración > Configuración de directivas.
- Crear una directiva nueva.
- Una vez proporcionada la información necesaria crear la directiva, haga clic en Avanzado, vaya a la pestaña Automatización y marque la casilla Restablece automáticamente las contraseñas de los usuarios del dominio cuando caducan.
- Especifique la Frecuencia en la que debe ejecutarse el programador.
- Seleccione la casilla Tras el restablecimiento automático de contraseña, forzar a los usuarios a cambiar la contraseña en el próximo inicio de sesión, si es necesario.
- El campo Restablecer contraseña se puede establecer en Texto personalizado o Directiva de contraseñas (una contraseña aleatoria generada en base a la directiva de contraseñas personalizada).
- Vaya a Notificación > Restablecer contraseña e ingrese los detalles necesarios para notificar a los usuarios sobre sus contraseñas restablecidas.
- Haga clic en Aceptar y en la sección Configuración de directivas, haga clic en Guardar.