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}})
我正在尝试从 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}})