如何设置 AD 用户密码永不过期

虽然 PowerShell 允许您设置密码永不过期,但此做法应限于特殊情况,如服务账户或遗留应用程序。在您的 Active Directory (AD) 中拥有永久密码的用户可能会使组织面临暴力破解攻击和审计失败的风险。一旦您 识别出密码永不过期的 AD 用户,启用密码过期将促使他们定期更改密码,从而降低风险并确保合规。

配置 AD 用户的密码过期

PasswordNeverExpires 属性决定用户密码是否遵循域策略。将其设置为 False 可确保密码按照域策略过期。在某些特殊情况下,如服务账户、硬编码凭据或可能因密码更改而中断的旧版应用程序,您可能需要将 PasswordNeverExpires 设置为 True,使密码永不过期。

Windows PowerShell

前提条件

使用以下命令导入 AD 模块(如果尚未导入):

Import-Module ActiveDirectory

使用 Set-ADUser cmdlet 配置密码过期

运行以下命令以启用密码过期。如果您想设置密码永不过期,请将 $false 替换为 $true

Get-ADUser -Filter 'PasswordNeverExpires -eq $true' -Properties PasswordNeverExpires |
Select-Object Name, SamAccountName, PasswordNeverExpires
  • Single AD user: (replace username with the user's login name)
    Set-ADUser -Identity "username" -PasswordNeverExpires $false
  • All users in an OU: (replace OU=Users,DC=domain,DC=com with your OU's distinguished name)
    Get-ADUser -Filter * -SearchBase "OU=Users,DC=domain,DC=com" |
    ForEach-Object { Set-ADUser $_ -PasswordNeverExpires $false }
  • All users in a domain:
    Get-ADUser -Filter * | ForEach-Object {
    Set-ADUser $_ -PasswordNeverExpires $false }
ADManager Plus
  1. 导航至 Management > User Management > Bulk User Modification Reset Password
  2. Under 密码选项 in the 密码永不过期 drop-down,
    • 选择 Yes 以禁用密码过期。
    • 选择 No 以启用密码过期。
  3. 选择域并点击 Add OUs 以选择您偏好的 OU。
  4. 输入您想配置密码过期的用户名称。要添加多个用户,请选择 CSV Import 并添加包含用户列表的 CSV 文件。
  5. 点击 Go。在下一页确认用户列表后,点击 Apply

注意:要列出 AD 中密码设置为永不过期的用户,请按照以下步骤操作

密码过期任务的示例用例和脚本

示例 1:为单个用户设置密码永不过期

Set-ADUser -Identity "james" -PasswordNeverExpires $true

示例 2:为 OU 中的所有用户设置密码永不过期

Get-ADUser -Filter * -SearchBase "OU=Users,DC=domain,DC=com" |
ForEach-Object { Set-ADUser $_ -PasswordNeverExpires $true }

示例 3:为特定 AD 组的所有成员启用密码过期

$GroupName = "Audit Non-Compliant Accounts"
Get-ADGroupMember -Identity $GroupName |
Get-ADUser |
ForEach-Object {
Set-ADUser -Identity $_ -PasswordNeverExpires $false
Write-Host "Set password for group member $($_.SamAccountName) to expire according to policy."
}

示例 4:为来自 CSV 文件的用户列表启用密码过期

$UserList = Import-Csv -Path "C:\Temp\UsersToExpire.csv"
foreach ($User in $UserList) {
Set-ADUser -Identity $User.SamAccountName -PasswordNeverExpires $false
Write-Host "Set password for user $($User.SamAccountName) to expire according to policy."
}

支持的参数

以下是执行 PowerShell 密码过期任务的关键参数:

参数 描述
-Filter 查找符合密码策略条件的用户。
-Properties 显示扩展属性(PasswordNeverExpires)。
-SearchBase 限定作用域到 OU 或容器。
-Identity 指定要修改的账户。
-PasswordNeverExpires 启用或禁用目标用户的密码过期。
-Path 导出报告的输出文件路径。

使用 PowerShell 执行密码过期操作的限制

  • 需要精确的可分辨名称和用户标识,这可能会使批量更新复杂化。
  • 脚本错误如果筛选不当,可能影响大量用户。
  • 缺乏集成的计划、警报或回滚功能;所有操作均为手动执行。
  • 运行脚本的技术人员必须适当委派权限。

ADManager Plus 如何帮助管理用户密码及其他 AD 对象

ADManager Plus 是一个基于网页的 AD 和 Microsoft Entra ID 管理及报告工具,简化 AD 密码管理 及更多功能,集中界面操作:

  • 通过 AD 密码报告 跟踪密码过期用户、密码更改用户、登录失败等。
  • 自定义并安排报告,自动发送给利益相关者或审计人员。
  • 直接从报告中执行 AD 用户管理 操作,如移除或转移成员。
  • 以多种格式导出报告,如 CSV、PDF、XLS 或 HTML,便于共享和合规。
  • 通过直观的基于GUI的批量用户和组管理功能,避免使用复杂的PowerShell脚本。

使用 ADManager Plus 简化 AD 管理和报告

常见问题解答

要在 PowerShell 中禁用本地用户的密码过期,您可以使用 Set-LocalUser cmdlet。以管理员身份打开 PowerShell,并运行以下命令,将 替换为本地用户账户的实际名称:

Set-LocalUser -Name "<username>" -PasswordNeverExpires $true

历史上,组织不鼓励设置密码永不过期,因为这可能增加长期被攻破的风险并导致不符合安全标准。然而,密码过期有时会适得其反,因为用户可能会选择更简单的密码。在依赖服务账户或遗留应用程序的环境中,密码永不过期可能是避免中断的必要措施,但应通过强复杂度和监控加以保护。

当前的网络安全最佳实践建议设置强且长度足够的密码,然后设置为永不过期。结合多因素认证等其他安全措施时,这种方法更为有效。

归根结底,关键是平衡安全与实用性,在密码无法过期时使用额外的防护措施。

Active Directory管理与报告的一站式解决方案
电子邮件下载链接 Email the ADManager Plus download link