当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 PowerShell 在 Active Directory 中查找锁定的用户

作者:精品下载站 日期:2024-12-14 13:18:13 浏览:12 分类:玩电脑

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


您组织中的用户是否曾经忘记密码?当然不是! Active Directory 用户是否已锁定其帐户?决不!让我们看看如何使用 PowerShell 查找 Active Directory 中被锁定的用户!

不再为 Active Directory 中的密码重置调用和帐户锁定而烦恼。免费试用 Specops uReset。

您的网络是否曾感染过尝试使用尽可能多的域用户帐户进行身份验证的恶意软件?我希望不会,但我已经看到这种情况发生过几次了。用户和蠕虫只是一个或多个 AD 帐户被锁定的原因之一。根据您的密码策略,锁定可能每天都会发生,也可能只是偶尔发生。

无论原因或情况如何,帐户锁定都会影响您的用户。由于他们几乎所有事情都依赖 Active Directory 域帐户,因此他们会立即注意到该帐户何时被锁定。您的服务台可以重新启用该帐户,但如果再次发生这种情况怎么办? …然后再次。 …然后再次。找出这个问题的根本原因很重要。

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

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

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

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

Search-AdAccount -LockedOut

这个命令很棒,但是如果您的帐户不断被锁定并且您需要弄清楚它来自哪个系统怎么办?每当您的网络中某个地方感染了恶意软件,或者当您的管理员忘记注销远程桌面会话时,这就是一项常见任务。那从来没有发生过,对吧?

要查找 Active Directory 锁定的根源,您首先需要确保正在查询正确的域控制器。在本例中,这将是具有 PDC 模拟器角色的域控制器。

查找 PDCe 角色持有者

所有密码身份验证都将到达此具有 PDCe 角色的 DC,因此它始终是最佳检查位置。要查找具有 PDCe 角色的域控制器,您可以检查从 Get-ADDomain cmdlet 返回的 PDCEmulator 属性。

$pdce = (Get-ADDomain).PDCEmulator

搜索事件日志以查找锁定情况

如果您拥有担任 PDCe 角色的 DC,则需要查询该 DC 的安全事件日志(安全日志)以获取事件 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帐户。通过 ActiveDirectory 模块加载后,此命令适用于 Windows PowerShell 和 PowerShell 7。

Unlock-ADAccount -Identity 'lockeduser'

也许您希望一次解锁所有锁定的用户,请将 Search-ADAccount-LockedOut 参数结合使用,并将结果通过管道传输到 Unlock-ADAccount命令,如下图。

Search-ADAccount -LockedOut | Unlock-ADAccount

使用自助密码重置解决方案减少服务台呼叫并更新远程用户的缓存凭据,即使在 VPN 之外也是如此。获取 Specops uReset 演示!

概括

[玩转系统] 如何使用 PowerShell 在 Active Directory 中查找锁定的用户

到目前为止,您应该能够快速查明域中当前锁定的所有帐户,并查看所有帐户锁定的历史记录。现在是时候与 Joe 严肃讨论让这些 RDP 会话保持开放状态了……

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯