使用 PowerShell 管理 Windows 域中的密码重置

发布时间:2022-05-05 01:31

上个月,白宫发布了一项建议,要求每个人都更改密码,以防止潜在的违规行为。尽管这样的请求听起来很简单,但在整个组织中强制更改密码是一项艰巨的任务。

虽然组织联系所有员工并告诉他们重置密码相对容易,但大多数人很可能会忽略该请求。有些用户很懒惰,根本不想为更改密码而烦恼。其他用户可能计划更改他们的密码,但因其他事情而分心而忘记进行更改。还有其他用户会声称更改了他们的密码,而实际上他们的密码保持不变。

调查谁需要重设密码
那么,组织如何才能确定哪些用户已更改密码,哪些未更改密码呢?完成此类任务的一种方法是使用 Active Directory 用户和计算机控制台。

控制台打开后,从“视图”菜单中选择“高级功能”命令。接下来,选择“用户”容器 右键单击​​要检查其密码更改历史记录的用户,然后从快捷菜单中选择“属性”命令。当用户属性表打开时,选择属性编辑器选项卡。

此选项卡列出了与用户帐户相关的数十个属性。您可以通过检查 PwdLastSet 属性找到用户最近更改密码的日期,如图 1 所示。值得注意的是,如果用户从未更改过密码,则 PwdLastSet 属性将显示帐户的创建日期(假设在创建时为帐户分配了密码)。

PwdLastSet 属性反映用户最近一次密码更改的日期。
使用 PowerShell 加快速度
当然,使用这种方法的主要缺点是它迫使您单独检查每个帐户。您可以使用 PowerShell 绕过此限制。

为此,您需要确保已加载 PowerShell 的 Active Directory 模块。用于检索用户密码最近更改日期的命令是:

获取 ADUser -Properties PasswordLastSet

您可以在此处查看此命令的工作原理:

这是您使用 PowerShell 确定用户密码上次更改时间的方式。
在此示例中,仅显示了一个用户的密码更改日期,但有多种方法可以告诉 Get-ADUser cmdlet 显示多个用户帐户的数据。例如,此命令将导致为所有用户显示最后一次密码更改日期:

Get-ADUser -Filter * -Properties PasswordLastSet

你可以在这里看到这个命令的样子:

您可以告诉 PowerShell 显示每个用户最近的密码更改日期。
尽管这些信息可能很有帮助,但您仍然需要解析 PowerShell 生成的数据。这可能意味着按日期对输出进行排序或将数据导出到 Excel 电子表格。尽管 PowerShell 将允许您执行这些类型的操作,但它们比仅检索密码更改日期更复杂。例如,如果您想查看按密码更改日期排序的所有用户帐户列表,您可以使用以下命令:

Get-ADUser -Filter * -Properties PasswordLastSet | 排序对象-属性 PasswordLastSet | 选择对象名称、密码上一个设置

您可以在此处查看命令的输出:

您可以使用 get PowerShell 对用户最近更改密码的日期进行排序。
所有这一切都是说您可以使用 PowerShell 找出谁更改了密码,谁没有更改密码。然而,真正的问题是,密码更改是否真的值得钻研 PowerShell 所涉及的复杂性?考虑到 CISA、微软和其他网络安全专家现在建议不要定期更改密码,这个问题似乎特别重要。

密码年龄问题的可持续解决方案
虽然白宫指令希望是一次性事件,但组织永远不会真正知道何时出现意外情况可能需要更改组织范围的密码。如果发生此类事件,时间很可能至关重要,因此为用户提供完成密码更改的简单方法非常重要。为 IT 提供一种验证密码更改的简单方法也同样重要。毕竟,您真的不想在危机情况下拼凑 PowerShell 代码。

更好的选择是使用Specops Password Auditor。最新版本的 Specops Password Auditor 包含一个工具,管理员可以使用该工具来确定自某个日期以来谁更改了密码,谁没有更改密码。在您的 Active Directory 中免费对其进行测试,以仔细检查您的组织是否遵守了最近的密码更改建议。

客户热线:037125966675