Active Directory 查询中的子查询

Subquery in Active Directory Query

我正在尝试从 Active Directory 中的 OU 中获取用户列表,我正在尝试获取的字段之一是“经理”字段,以及针对每个用户的其他字段广告。经理字段的返回数据是 DistinguisehdName,我想为经理获取 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}})