You are here

Как найти компьютер, из-за которого постоянно лочится аккаунт в AD


Как найти компьютер, из-за которого постоянно лочится аккаунт в AD

Наверняка, практически каждый администратор, если в его подчинении много серверов, сталкивался с ситуацией, что после изменения пароля аккаунт начинает часто оказываться заблокированным. Практически 100%, если такое начало происходить после смены пароля – это из-за того, что на каком-то из серверов осталась висеть старая сессия, вход в которую был осуществлен со старым паролем. Соответственно компьютер пытается обновить данные о сессии, несколько раз происходит передача неверного пароля контроллеру домена, и учетная запись блокируется.

Чтобы подобного избежать, необходимо взять за правило – завершать сессии после окончания работы, но не всегда есть такая возможность, и бывает, что забываешь куда там когда-то заходил. Чтобы найти проблемные компьютеры, на которых висит сессия можно воспользоваться командой powershell которая просмотрит логи безопасности на контроллерх домена, на предмет блокировки аккаунта пользователя и выдаст список компьютеров, из-за которых произошла блокировка.

Команда:

Get-WinEvent -ComputerName dc01 -FilterHashtable `
@{logname='security';id=4740;data='johndoe'} |`
Select-Object -Property timecreated,`
@{label='username';expression={$_.properties[0].value}},`
@{label='computername';expression={$_.properties[1].value}}

Список компьютеров из-за которых аккаунт залочился

Соответственно computername – должен быть ваш контроллер домена (команду нужно будет выполнить для каждого из контроллера домена в вашей сети), data=’johndoe’ – нужно заменить на имя пользователя, для которого требуется найти причину проблемы.

UPD: Чтобы не заморачиваться с ручным вводом каждого  контроллера домена можно воспользоваться микроскриптом:

$username="johndoe"
$DomainName = (Get-ADDomain).DNSRoot
$AllDCs = Get-ADDomainController -Filter * -Server $DomainName | Select-Object name
foreach ($dc in $alldcs) {
    $dc.name
    Get-WinEvent -ComputerName $dc.name -FilterHashtable `
        @{logname='security';id=4740;data=$username} | `
        Select-Object -Property timecreated, `
        @{label='username';expression={$_.properties[0].value}}, `
        @{label='computername';expression={$_.properties[1].value}}
}
1 0

Share the article with your friends in social networks, maybe it will be useful to them.


If the article helped you, you can >>thank the author<<