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

如何通过ldapsearch或PowerShell使用attributeID(urn:oid)查询AD

通过URN:OID格式属性标识查询Active Directory的实现方法

Active Directory原生兼容LDAP标准的OID属性引用格式,无需提前将urn:oid:2.5.4.42这类标识映射为givenName类友好名称即可直接查询,以下是两种常用工具的操作方式:

ldapsearch 操作方法

ldapsearch(OpenLDAP官方查询工具)可直接识别带urn:oid:前缀的属性标识,无需额外配置参数,直接将OID格式标识放在查询属性列表、过滤条件中即可。

基础查询示例

查询基准DN下所有用户对象,返回givenName(对应OID 2.5.4.42)、sn(对应OID 2.5.4.4)两个属性:

ldapsearch -x -h <AD域控IP/域名> -D "<绑定账号的完整DN>" -w "<绑定账号密码>" -b "<查询基准DN>" "(objectClass=user)" urn:oid:2.5.4.42 urn:oid:2.5.4.4

过滤条件中使用OID

如果需要在查询过滤规则中直接通过OID匹配属性值,直接将OID标识写入过滤表达式即可,例如查询givenName为「张三」的用户:

ldapsearch -x -h dc01.corp.com -D "cn=administrator,cn=users,dc=corp,dc=com" -w "yourpassword" -b "dc=corp,dc=com" "(urn:oid:2.5.4.42=张三)" urn:oid:2.5.4.42

补充:如果希望返回结果中所有属性默认以OID格式显示而非友好名称,可以添加-O oid启动参数。

PowerShell 操作方法

PowerShell无论是使用官方ActiveDirectory模块,还是原生.NET的DirectorySearcher类,都原生支持OID格式的属性标识。

方式1:使用ActiveDirectory模块(需提前安装RSAT AD组件)

直接将OID格式标识传入-Properties参数、写入过滤条件即可,返回结果的属性名与你传入的OID字符串完全一致,调用时需要完整引用:

# 导入AD模块
Import-Module ActiveDirectory

# 查询所有用户,返回指定OID对应的属性
Get-ADUser -Filter * -Properties "urn:oid:2.5.4.42","urn:oid:2.5.4.4" | Select-Object Name,"urn:oid:2.5.4.42","urn:oid:2.5.4.4"

# 过滤条件中使用OID,查询givenName为张三的用户
Get-ADUser -Filter "urn:oid:2.5.4.42 -eq '张三'" -Properties "urn:oid:2.5.4.42"

方式2:使用原生DirectorySearcher(无需安装额外模块)

如果环境没有安装AD管理模块,可以直接调用.NET的System.DirectoryServices类实现查询,将OID标识加入PropertiesToLoad属性集合即可:

# 初始化查询对象
$searcher = New-Object System.DirectoryServices.DirectorySearcher
$searcher.SearchRoot = New-Object System.DirectoryServices.DirectoryEntry("LDAP://<查询基准DN>")
$searcher.Filter = "(objectClass=user)"

# 加载需要返回的OID格式属性
$searcher.PropertiesToLoad.Add("urn:oid:2.5.4.42") | Out-Null
$searcher.PropertiesToLoad.Add("urn:oid:2.5.4.4") | Out-Null

# 执行查询并遍历结果
$results = $searcher.FindAll()
foreach($entry in $results){
    Write-Host "对象名:$($entry.Properties['name'][0])"
    Write-Host "givenName(urn:oid:2.5.4.42):$($entry.Properties['urn:oid:2.5.4.42'][0])"
    Write-Host "sn(urn:oid:2.5.4.4):$($entry.Properties['urn:oid:2.5.4.4'][0])"
}

注意事项

  • 必须保留urn:oid:前缀,仅写数字OID在部分旧版本工具/AD环境中可能出现识别失败问题,带前缀的写法完全符合LDAP RFC标准,兼容性最好。
  • 所有可通过友好名查询的AD属性,都可以通过其对应的schema OID用上述方式查询,不存在权限或功能差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 02:30:54