У меня есть следующий код с некоторыми настройками вверху и кодом, извлеченным изнутри тела цикла ниже:
Add-Type -AssemblyName System.DirectoryServices.AccountManagement
$DIR_SVCS = New-Object System.DirectoryServices.AccountManagement.PrincipalContext('domain')
## Other stuff...
## usersOU is set to the domain of the users (...,OU=users,dc=<domain>...)
Search-ADAccount -LockedOut -SearchBase $usersOU | Unlock-ADAccount
## Loop code...
$userID = 'myuser'
$password = 'TempPa$$w0rd'
$SecurePW = ConvertTo-SecureString ($password) -AsPlainText -Force
Set-ADAccountPassword $userID -Reset -NewPassword $SecurePW | Out-Null
if ((-Not $?) -or ($LASTEXITCODE -gt 0)) {
Throw "ERROR with Set-ADAccountPassword exit code $LASTEXITCODE on $userID"
}
if ($DIR_SVCS.ValidateCredentials($userID, $password)) {
Write-Host "Validated new account password: $userID"
} else {
Write-Host "FAILED validation of new account password: $userID"
}
Это выполняется для массива пользователей и паролей, и вывод оставляет меняпочесывая голову:
Validated new account password: user1
FAILED validation of new account password: user2
FAILED validation of new account password: user3
Validated new account password: user4
FAILED validation of new account password: user5
...
Я не вижу признаков того, почему это не удается для некоторых и успешно для других.Все изменяемые пользователи существуют в «$ usersOU», который разблокируется выше, но я ожидаю, что после вызова «Set-ADAccountPassword» будет возникать ошибка или все вызовы проверки завершатся успешно ...
Буду признателен за любую помощь в понимании того, что здесь происходит!