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

Get-ADUser使用msDS-cloudExtensionAttribute20过滤无结果问题求助

Get-ADUser属性匹配查询问题修复方案

错误原因

  • 逻辑偏差:你原本的过滤逻辑是判断用户的UserPrincipalName是否等于"msDS-cloudExtensionAttribute20"这串字符,不是判断UserPrincipalName是否和msDS-cloudExtensionAttribute20属性的存储值相等,完全不符合查询需求。
  • 语法限制:Get-ADUser的-Filter参数原生不支持在查询阶段直接对比同一用户对象的两个属性值,该筛选逻辑必须在拿到查询结果后通过Where-Object实现。
  • 变量解析失效:过滤脚本块内用单引号包裹变量会导致变量不会被解析,直接被识别为纯字符串内容。
  • 搜索路径格式错误:SearchBase参数中嵌套双引号、填写空OU的写法会导致查询路径无效,需要替换为实际的组织单元和域路径,无需额外嵌套引号。

修复后的代码

# 定义需要查询的扩展属性名
$extensionAttr = "msDS-cloudExtensionAttribute20"
# 先查询所有启用的用户,拉取所需全部属性
Get-ADUser -Filter {Enabled -eq $true} `
-SearchBase 'OU=实际OU1,OU=实际OU2,OU=实际OU3,DC=你的域名,DC=后缀' `
-Properties Name, PasswordNeverExpires, PasswordExpired, PasswordLastSet, EmailAddress, $extensionAttr, UserPrincipalName |
# 后续过滤密码未过期、两个属性值相等的用户
Where-Object { $_.PasswordExpired -eq $false -and $_.UserPrincipalName -eq $_.$extensionAttr }

改动说明

  • 把两个属性值匹配的逻辑移到了查询后的过滤阶段,适配AD查询的语法限制
  • SearchBase参数请替换为你实际的域组织单元路径,不要留空、不要加嵌套双引号
  • 所有需要用到的属性都提前在-Properties参数中声明,避免后续过滤时属性缺失

内容的提问来源于stack exchange,提问作者Herry Huang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:45:04