Пользователи в вашей организации когда-нибудь забывают свои пароли? Конечно, нет! Заблокировал ли пользователь Active Directory свою учетную запись? Ни в коем случае! Давайте посмотрим, что мы можем сделать, чтобы найти заблокированных пользователей в Active Directory с помощью PowerShell!
Прекратите бороться с вызовами на сброс пароля и блокировками учетных записей в Active Directory. Получите бесплатную пробную версию Specops uReset.
Была ли ваша сеть когда-нибудь заражена вредоносным программным обеспечением, которое пытается аутентифицироваться с как можно большим количеством учетных записей домена? Надеюсь, нет, но я видел, как это происходит несколько раз. Пользователи и черви – всего лишь две причины, по которым одна или несколько учетных записей AD могут быть заблокированы. В зависимости от вашей политики паролей блокировки могут происходить ежедневно или случаться лишь время от времени.
Вне зависимости от причины или ситуации блокировка учетных записей влияет на ваших пользователей. Поскольку они зависят от своей учетной записи домена Active Directory почти во всем, они сразу заметят, когда она будет заблокирована. Учетная запись может быть снова включена вашей службой поддержки, но что, если это произойдет снова? …и снова. …и снова. Важно выяснить корень этой проблемы.
Один из способов сделать это – использовать PowerShell и модуль ActiveDirectory. Используя cmdlet Search-AdAccount
внутри модуля Active Directory, вы легко можете отследить все учетные записи, которые в данный момент заблокированы в вашем домене.
Связано: Как установить модуль PowerShell для управления Active Directory
Поиск заблокированных пользователей в Active Directory с помощью PowerShell
Чтобы найти заблокированные учетные записи, вы можете выполнить команду Search-AdAccount
с использованием параметра LockedOut
. Это вернет все пользователи, в данный момент заблокированные, при условии, что у вас есть право это видеть.
Эта команда отлично подходит, но что, если у вас есть учетная запись, которая постоянно блокируется, и вам нужно выяснить, с какой системы это происходит? Это обычная задача, когда у вас есть заражение вредоносным ПО где-то в вашей сети или, возможно, когда у вас забывчивый администратор, который забыл выйти из сеанса удаленного рабочего стола. Такое никогда не случалось, верно?
Чтобы найти источник блокировки учетной записи в Active Directory, сначала убедитесь, что вы запрашиваете правильный контроллер домена. В этом случае это будет контроллер домена с ролью эмулятора PDC.
Найти держателя роли PDCe
Вся аутентификация пароля будет проходить через этот контроллер домена, удерживающий роль PDCe, поэтому это всегда лучшее место для проверки. Чтобы найти контроллер домена с ролью PDCe, вы можете проверить свойство PDCEmulator
, возвращаемое cmdlet Get-ADDomain
.
Просмотр журнала событий для блокировок
После того как у вас есть контроллер домена с ролью PDCe, вам нужно будет запросить журнал событий безопасности (журналы безопасности) этого контроллера для события с идентификатором 4740. Событие с идентификатором 4740 регистрируется каждый раз, когда учетная запись блокируется. Для этого используйте cmdlet Get-WinEvent
.
Вы так близки к тому, чтобы найти заблокированных пользователей в Active Directory с помощью PowerShell!
Анализ имени пользователя и местоположения
Это вернет все события блокировки, но не сразу покажет имена пользователей и компьютеры, на которых была выполнена блокировка. Чтобы найти имя пользователя, вам нужно будет немного глубже изучить свойство, которое возвращает Get-WinEvent
, называемое Properties
.
Вы можете видеть, что я переместил фильтр хэш-таблицы, чтобы предотвратить обертывание кода, и, что более важно, использовал вычисляемые свойства Select-Object
, чтобы извлечь имя пользователя и имя компьютера из свойства Properties
. В каждом из этих событий имя пользователя, которое было заблокировано, всегда является первым элементом в массиве Properties
, в то время как второй элемент всегда является именем компьютера, где была выполнена блокировка.
Использование PowerShell для разблокировки учетных записей AD
Теперь, когда вы нашли заблокированных пользователей AD, как вы разблокируете их учетные записи? Модуль ActiveDirectory
в PowerShell предоставляет команду Unlock-ADAccount
, которая быстро помогает вернуть клиента к работе. Как показано ниже, используйте PowerShell для разблокировки учетных записей AD. Эта команда работает как в Windows PowerShell, так и в PowerShell 7, после загрузки модуля ActiveDirectory
.
Возможно, вы хотите разблокировать всех заблокированных пользователей одновременно. Используйте команду Search-ADAccount
с параметром -LockedOut
и направьте результаты на команду Unlock-ADAccount
, как показано ниже.
Сократите вызовы службы поддержки и обновите учетные данные кэша для удаленных пользователей, даже вне VPN, с помощью решения для сброса пароля через самообслуживание. Получите демонстрацию Specops uReset!
Итак,

На данный момент вы должны быть способны быстро определить все учетные записи, которые в настоящее время заблокированы в вашем домене, а также просматривать историю всех блокировок учетных записей. Теперь пришло время серьезно поговорить с Джо о том, чтобы закрывать эти сеансы RDP…
Source:
https://adamtheautomator.com/find-locked-out-users-in-active-directory-powershell/