如何使用PowerShell在Active Directory中查找被锁定的用户

您的组织中的用户是否会忘记他们的密码?当然不会!活动目录用户是否曾经锁定他们的账户?不可能!让我们看看如何使用PowerShell在活动目录中查找已锁定的用户!

不要再为密码重置和账户锁定在活动目录中苦苦挣扎了。 免费试用Specops uReset。

您的网络是否曾经感染了试图使用尽可能多的域用户账户进行身份验证的恶意软件?希望没有,但我曾经见过几次。用户和蠕虫是导致一个或多个AD账户被锁定的原因之一。根据您的密码策略,锁定可能是每天发生的事情,也可能只是偶尔发生。

无论原因或情况如何,账户锁定都会影响到您的用户。由于他们几乎在所有事情上都依赖于他们的活动目录域账户,当账户被锁定时,他们会立即注意到。您的帮助台可以重新启用该账户,但如果再次发生呢?……再次发生。……再次发生。找出这个问题的根本原因是很重要的。

一种方法是使用PowerShell和ActiveDirectory模块。通过在Active Directory模块中使用Search-AdAccount命令,您可以轻松追踪到域中当前被锁定的所有帐户。

相关:如何安装Active Directory PowerShell模块

使用PowerShell在Active Directory中查找被锁定的用户

要搜索被锁定的帐户,您可以使用Search-AdAccount命令并使用LockedOut参数。这将返回所有当前被锁定的用户,前提是您有查看权限。

Search-AdAccount -LockedOut

这个命令很好,但是如果您有一个持续被锁定的帐户,并且您需要找出是来自哪个系统?当您的网络上存在恶意软件感染或者当您有一个健忘的管理员忘记注销远程桌面会话时,这是一个常见的任务。这种情况从未发生过,对吗?

要找到Active Directory锁定的源,首先需要确保您正在查询正确的域控制器。在这种情况下,这将是具有PDC模拟器角色的域控制器。

找到PDC模拟器角色持有者

所有密码验证都将发送到持有PDCe角色的域控制器,因此检查此角色的域控制器总是最佳选择。要找到持有PDCe角色的域控制器,您可以检查从Get-ADDomain cmdlet返回的PDCEmulator属性。

$pdce = (Get-ADDomain).PDCEmulator

检查锁定的事件日志

一旦找到持有PDCe角色的域控制器,您需要查询该域控制器的安全事件日志(安全日志)以获取事件ID 4740。事件ID 4740是每次账户被锁定时注册的事件。可以使用Get-WinEvent cmdlet来完成这个任务。

Get-WinEvent -ComputerName $pdce -FilterHashTable @{'LogName' ='Security';'Id' = 4740}

您离使用PowerShell在Active Directory中查找被锁定用户更近了!

解析用户名和位置

这将返回所有锁定事件,但不会立即显示锁定事件是在哪个计算机上执行的用户名和计算机名。要找到用户名,您需要对Get-WinEvent返回的一个叫做Properties的属性进行更深入的研究。

$filter = @{'LogName' = 'Security';'Id' = 4740}
$events = Get-WinEvent -ComputerName $pdce -FilterHashTable $filter
$events | Select-Object @{'Name' ='UserName'; Expression={$_.Properties[0]}}, @{'Name' ='ComputerName';Expression={$_.Properties[1]}}

您可以看到我已将哈希表过滤器移动到了防止代码换行的位置,更重要的是,使用了Select-Object的计算属性从Properties属性中提取用户名和计算机名。在每个事件中,被锁定的用户名始终是Properties数组的第一个元素,而第二个元素始终是执行锁定的计算机名。

利用PowerShell解锁AD账户

现在您已经找到了被锁定的AD用户,那么您将如何解锁这些账户呢?PowerShell中的ActiveDirectory模块提供了Unlock-ADAccount命令,可以快速帮助客户恢复工作。如下所示,可以使用PowerShell来解锁AD账户。这个命令在Windows PowerShell和PowerShell 7中都适用,只要通过ActiveDirectory模块加载即可。

Unlock-ADAccount -Identity 'lockeduser'

也许您想一次性解锁所有被锁定的用户,可以使用Search-ADAccount命令的-LockedOut参数,并将结果传递给Unlock-ADAccount命令,如下所示。

Search-ADAccount -LockedOut | Unlock-ADAccount

通过自助密码重置解决方案,降低服务台呼叫并更新远程用户的缓存凭据,即使在VPN之外也可以实现。 获取Specops uReset的演示!

总结

Find Locked Out Users in Active Directory

到目前为止,您应该能够快速定位当前在您的域中被锁定的所有账户,并查看所有账户锁定的历史记录。现在是时候严肃地和乔讨论一下他为什么一直不关闭那些RDP会话了…

Source:
https://adamtheautomator.com/find-locked-out-users-in-active-directory-powershell/