У меня есть активный сервер каталогов, где пользователи разделены на различные группы безопасности, и я пытался найти способ сбросить пароли для всех сразу.
Итак, сначала я подумал, что могу просто использовать dsquery. Команда
dsquery group -name "<group>" -uc | dsget group -members -uc
получил строки для всех пользователей. Это хорошо и все такое, но когда я отправлял вывод в файл, cmd всегда сохранял его как файл ANSI, независимо от настроек кодовой страницы и т.д. Сложно сохранить вывод программ, передаваемых по конвейеру, в переменную в пакетном режиме, так что это было вне окна.
dsquery на PowerShell просто отказался работать. С DN или нет, всегда говорилось, что «объект каталога не может быть найден». (Как видно здесь.).
То же самое с Get-ADUser
и Get-ADGroup
и т.д. из модуля AD PowerShell (как те, что описаны здесь). Либо истекло время, либо они просто вышли, ничего не вернув. Ни ошибки, ни сообщения об успехе, ничего. Конечно же, пароли остаются неизменными.
Возникает вопрос: как изменить пароли сразу для всей группы?
Что-то вроде Get-AdGroupMember -Identity 'GroupName' -Recursive
должен получить список пользователей; если список выглядит правильно, то Get-AdGroupMember -Identity 'GroupName' -Recursive | Set-AdAccountPassword -Reset -NewPassword 'SomePassword'
должен изменить их все.