可使用powershell脚本结合active directory模块批量查询密码永不过期用户:先确保rsat-ad-powershell已安装并导入模块,再用get-aduser -filter {passwordneverexpires -eq $true}筛选,指定properties导出关键属性,支持按ou限定范围及导出csv审计。
可以使用powershell脚本结合active directory模块,通过筛选 passwordneverexpires 属性为 $true 的用户对象来批量查询。
确认AD PowerShell模块已安装并导入
确保运行脚本的机器已安装 RSAT-AD-PowerShell 功能(Windows 10/11 或 Server 系统),并在脚本开头导入模块:
- Windows Server:通常已内置,直接运行
Import-Module ActiveDirectory - Windows 10/11:需先启用功能(设置 → 可选功能 → 添加RSAT: Active Directory Domain Services and Lightweight Directory Services Tools)
- 若权限不足,需以域管理员或具有“读取用户对象”权限的账户运行 PowerShell
基础查询命令(当前域内所有永不过期密码用户)
执行以下命令即可列出所有符合条件的用户(仅显示常用属性):
Get-ADUser -Filter {PasswordNeverExpires -eq $true} -Properties Name, SamAccountName, DistinguishedName, PasswordLastSet, Enabled |
Select-Object Name, SamAccountName, DistinguishedName, PasswordLastSet, Enabled |
Sort-Object Name
-
-Filter使用 LDAP 筛选语法,高效定位目标用户 -
-Properties显式指定需获取的扩展属性,避免默认只返回基本字段 -
PasswordLastSet可辅助判断是否长期未改密;Enabled区分账号是否启用,避免导出已禁用账号
导出为CSV文件便于审计与跟踪
将结果保存为表格文件,方便后续分析或上报:
Get-ADUser -Filter {PasswordNeverExpires -eq $true} -Properties Name, SamAccountName, UserPrincipalName, PasswordLastSet, Enabled, LastLogonDate |
Select-Object Name, SamAccountName, UserPrincipalName, PasswordLastSet, Enabled, LastLogonDate |
Export-Csv -Path "C:\Reports\PasswordNeverExpires_Users.csv" -NoTypeInformation -Encoding UTF8
-
LastLogonDate可识别长期未登录却设为永不过期的“僵尸账号” -
-Encoding UTF8避免中文字段在Excel中乱码 - 建议定期运行并比对历史文件,监控异常新增
按组织单位(OU)或部门范围精确查询
如只需检查特定部门,可添加 -SearchBase 限定搜索路径:
$ou = "OU=Finance,DC=contoso,DC=com"
Get-ADUser -Filter {PasswordNeverExpires -eq $true} -SearchBase $ou -Properties Department, Title |
Select-Object Name, SamAccountName, Department, Title
- 使用
Get-ADOrganizationalUnit可先获取OU的DistinguishedName - 配合
-SearchScope OneLevel可限制只查该OU下直接子项,不递归子OU - 适用于合规检查、安全整改等需聚焦特定业务单元的场景











