虽然 PowerShell 允许您设置密码永不过期,但此做法应限于特殊情况,如服务账户或遗留应用程序。在您的 Active Directory (AD) 中拥有永久密码的用户可能会使组织面临暴力破解攻击和审计失败的风险。一旦您 识别出密码永不过期的 AD 用户,启用密码过期将促使他们定期更改密码,从而降低风险并确保合规。
PasswordNeverExpires 属性决定用户密码是否遵循域策略。将其设置为 False 可确保密码按照域策略过期。在某些特殊情况下,如服务账户、硬编码凭据或可能因密码更改而中断的旧版应用程序,您可能需要将 PasswordNeverExpires 设置为 True,使密码永不过期。
前提条件
使用以下命令导入 AD 模块(如果尚未导入):
Import-Module ActiveDirectory
使用 Set-ADUser cmdlet 配置密码过期
运行以下命令以启用密码过期。如果您想设置密码永不过期,请将 $false 替换为 $true。
Get-ADUser -Filter 'PasswordNeverExpires -eq $true' -Properties PasswordNeverExpires |
Select-Object Name, SamAccountName, PasswordNeverExpires
Set-ADUser -Identity "username" -PasswordNeverExpires $false
Get-ADUser -Filter * -SearchBase "OU=Users,DC=domain,DC=com" |
ForEach-Object { Set-ADUser $_ -PasswordNeverExpires $false }
Get-ADUser -Filter * | ForEach-Object {
Set-ADUser $_ -PasswordNeverExpires $false }
注意:要列出 AD 中密码设置为永不过期的用户,请按照以下步骤操作。
Set-ADUser -Identity "james" -PasswordNeverExpires $true
Get-ADUser -Filter * -SearchBase "OU=Users,DC=domain,DC=com" |
ForEach-Object { Set-ADUser $_ -PasswordNeverExpires $true }
$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."
}
$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 | 导出报告的输出文件路径。 |
ADManager Plus 是一个基于网页的 AD 和 Microsoft Entra ID 管理及报告工具,简化 AD 密码管理 及更多功能,集中界面操作:
要在 PowerShell 中禁用本地用户的密码过期,您可以使用 Set-LocalUser cmdlet。以管理员身份打开 PowerShell,并运行以下命令,将 替换为本地用户账户的实际名称:
Set-LocalUser -Name "<username>" -PasswordNeverExpires $true
历史上,组织不鼓励设置密码永不过期,因为这可能增加长期被攻破的风险并导致不符合安全标准。然而,密码过期有时会适得其反,因为用户可能会选择更简单的密码。在依赖服务账户或遗留应用程序的环境中,密码永不过期可能是避免中断的必要措施,但应通过强复杂度和监控加以保护。
当前的网络安全最佳实践建议设置强且长度足够的密码,然后设置为永不过期。结合多因素认证等其他安全措施时,这种方法更为有效。
归根结底,关键是平衡安全与实用性,在密码无法过期时使用额外的防护措施。