You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell Get-ADUser查询AD用户属性返回空值异常问题

问题原因

两个问题本质都是Get-ADUser的默认机制导致的,和OU本身无关:

  • Get-ADUser默认只返回固定的一小部分用户属性,Title、AccountExpirationDate都不在默认返回集里,没显式指定拉取的话,就算AD里配了值,Select出来也是空。
  • Enabled不是AD原生存储的属性,是cmdlet根据原生属性userAccountControl的标志位计算出来的。你提到的管理员OU下的账户基本都是受AdminSDHolder保护的高权限账户,默认查询时如果没显式拉取计算所需的属性,或者运行命令的账号对这些受保护对象的读取权限不够,就会计算失败返回空值。
  • 补充说明:如果用户账户设置为永不过期,AccountExpirationDate本身就会返回空,这是正常表现,对应原生属性accountExpires的值为0或9223372036854775807,不是命令错误。

解决步骤

  • 权限准备:使用拥有AD域读取权限的账户运行PowerShell,查询高权限管理员账户属性建议使用域管理员组成员账户,启动PowerShell时选择「以管理员身份运行」避免权限裁剪。
  • 参数补全:在Get-ADUser中添加-Properties参数,显式指定需要拉取的非默认属性,确保cmdlet向AD请求所有需要用到的字段。
  • 导出优化:导出CSV时添加-NoTypeInformation参数去除多余的PowerShell类型描述行,在PowerShell 5.1环境中额外添加-Encoding UTF8参数避免中文属性值乱码。

修正后的可直接运行命令:

Get-ADUser -Filter * -SearchBase "DC=XXX,DC=XXXX" -Properties Title, AccountExpirationDate, userAccountControl |
    Select-Object Name, GivenName, Surname, SamAccountName, DistinguishedName, Enabled, Title, AccountExpirationDate |
    Export-Csv -Path C:\users\myname\ADUsersWithExpirationDate.csv -NoTypeInformation -Encoding UTF8

异常排查

如果跑完还有个别账户Enabled为空,可单独查询对应账户确认权限问题:

# 将<异常账户登录名>替换为实际出问题的SamAccountName
Get-ADUser -Identity <异常账户登录名> -Properties userAccountControl, Title, AccountExpirationDate

如果单独查询也返回空属性,说明当前账号对这个受保护对象的读取权限不足,换高权限账号运行即可。

内容的提问来源于stack exchange,提问作者John Deaux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:42:20