如何解决Active Directory 查询中的子查询
我正在尝试从 Active Directory 中的 OU 获取用户列表,我尝试获取的字段之一是“经理”字段,以及 AD 中每个用户的其他字段。 manager 字段的返回数据是 distinguisehdName
,我想获取 manager 的 displayName
。我可以在主查询中进行子查询以获得经理字段的 displayName
吗?
我该怎么办?此外,即使我的过滤器包含特定属性,我也会返回添加到我的数据中的属性,例如 SID
、用户 distiguishedname,ObjectClass,ObjectGUID
。我怎样才能摆脱那些?
这是我正在运行的命令
$result =@()
$result+= Get-ADuser -Filter * -SearchBase "OU=SomeOU,OU=MAinOU,DC=Local,DC=WAN" -properties City,Company,Country,countryCode,Department,Description,displayName,Division,EmailAddress,EmployeeID,extensionAttribute1,extensionAttribute10,extensionAttribute11,extensionAttribute12,extensionAttribute13,extensionAttribute14,extensionAttribute15,extensionAttribute2,extensionAttribute3,extensionAttribute8,Givenname,HomePhone,mail,Manager,MobilePhone,Name,Office,OfficePhone,Organization,SamAccountName,State,StreetAddress,Surname,telephoneNumber,Title,UserPrincipalName
$result | Export-Csv -Path .\Users.csv -Delimiter ';' -NoTypeinformation
解决方法
构建一个将 DistinguishedName
值映射到相应 ADUser 对象的哈希表:
$Properties = 'City,Company,Country,countryCode,Department,Description,DisplayName,Division,EmailAddress,EmployeeID,extensionAttribute1,extensionAttribute10,extensionAttribute11,extensionAttribute12,extensionAttribute13,extensionAttribute14,extensionAttribute15,extensionAttribute2,extensionAttribute3,extensionAttribute8,GivenName,HomePhone,mail,Manager,MobilePhone,Name,Office,OfficePhone,Organization,SamAccountName,State,StreetAddress,Surname,telephoneNumber,Title,UserPrincipalName' -split ','
$AllUsers = Get-ADuser -Filter * -SearchBase "OU=SomeOU,OU=MAinOU,DC=Local,DC=WAN" -Properties $Properties
$UsersByDN = @{}
$AllUsers |ForEach-Object { $UsersByDN[$_.DistinguishedName] = $_ }
现在您可以使用 $UsersByDN
查找管理器的 ADUser 对象并根据 manager
属性值获取显示名称:
$AllUsers |Select -Property @($Properties;@{Name='ManagerName';Expression={$UsersByDN[$_.manager].DisplayName}})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。