如何找到每个 ADGroupMember 用户的经理详细信息

How can I find the manager's details for each user who is an ADGroupMember

我正在尝试使用 PowerShell 来显示 AD 组中每个活跃成员的管理员名称,例如

此方法适用于单个用户:

    Get-ADUser C567890X -Properties * | Select Name, GivenName, Surname, 
    @{ N = "Manager"; E = { (Get-ADUser $PSItem.Manager -Property DisplayName).DisplayName } } `
    | Sort GivenName, Surname

Name GivenName Surname Manager
C567890X Thomas Sawyer Mark Twain

此方法也适用于单个用户:


    Get-ADUser B3456789 -Properties Name, GivenName, Surname, Manager `
    | Select @{ N = 'Account#'; E = {$_.Name} }, @{ N ='FirstName'; E = {$_.GivenName} }, 
    @{ N ='LastName'; E = {$_.Surname} }, @{ N = 'Manager'; 
    E = { ([ADSI]"LDAP://$($_.Manager)").DisplayName -Replace ' \(.*$' } } `
    | Sort FirstName, LastName

Account# FirstName LastName Manager
B3456789 Huckleberry Finn Mark Twain

域组属性

'CN=GG ELEV Local Admin Perms,OU=Group Policy,OU=Groups,OU=Administrative,DC=MyDomain,DC=local'


    Get-ADGroupMember "GG ELEV Local Admin Perms" -Recursive `
    | ForEach{Get-ADUser $_} | Where-Object {$PSItem.Enabled} `
    | Select Name, GivenName, Surname | Sort GivenName, Surname `
    | Out-String -Width 100

Name GivenName Surname
A1234567 Mark Twain
B3456789 Huckleberry Finn
C567890X Thomas Sawyer

整个组“GG ELEV Local Admin Perms”所需的输出:

Account# FirstName LastName Manager
A1234567 Mark Twain Samuel Langhorne Clemens
B3456789 Huckleberry Finn Mark Twain
C567890X Thomas Sawyer Mark Twain

我试过了:


    Get-ADGroupMember "GG ELEV Local Admin Perms" -Recursive | ForEach {Get-ADUser $_} `
    | Where-Object {$PSItem.Enabled} | Select Name, GivenName, Surname, @{ N = "Manager"; 
    E = { (Get-ADUser $PSItem.Manager).DisplayName -Replace ' \(.*$' } } `
    | Sort GivenName, Surname | Out-String -Width 100

Name GivenName Surname Manager
A1234567 Mark Twain BLANK
B3456789 Huckleberry Finn BLANK
C567890X Thomas Sawyer BLANK

我也试过了:


    Get-ADGroupMember "GG ELEV Local Admin Perms" -Recursive | ForEach {Get-ADUser $_} `
    | Where-Object {$PSItem.Enabled} | Select @{ N = 'Account#'; E = {$_.Name} }, @{ N ='FirstName'; 
    E = $_.GivenName} }, @{ N ='LastName'; E = {$_.Surname} }, @{ N = 'Manager'; 
    E = { ([ADSI]"LDAP://$($_.Manager)").DisplayName -Replace ' \(.*$' } } `
    | Sort FirstName, Lastname | Out-String -Width 100

Account# FirstName LastName Manager
A1234567 Mark Twain BLANK
B3456789 Huckleberry Finn BLANK
C567890X Thomas Sawyer BLANK

目前,以上两种Get-ADGroupMember方法我都试过了,Manager的名字总是显示空白

请有人告诉我如何结合使用上述两种方法,根据每个组成员的列表获取经理的名字,即从 [=16] 管道传输经理 属性 =] 命令的输出通过计算 属性 显示经理的名字(在一个脚本中)?

我使用各种来源的建议构建了上述脚本,包括下面的 link,但我想我错过了一些东西(我仍在学习 PowerShell) Retrieve Manager name for each user in AD using powershell

对于您的每个 Get-ADUser $_ 部分,您还需要请求“经理”属性

Get-ADUser $_ -properties manager

这适用于您在该行中请求 所有 属性的“一个用户”选项。

示例:

Get-ADGroupMember "GG ELEV Local Admin Perms" -Recursive `
| ForEach{Get-ADUser $_ -properties manager} | Where-Object {$PSItem.Enabled} `
| Select Name, GivenName, Surname, Manager | Sort GivenName, Surname `
| Out-String -Width 100

说明:当你使用Get-ADUser方法时,你只会得到一些基本的属性:

DistinguishedName, Enabled, GivenName, Name, ObjectClass, ObjectGUID, SamAccountName, SID, Surname, UserPrincipalName

来源:https://social.technet.microsoft.com/wiki/contents/articles/12037.active-directory-get-aduser-default-and-extended-properties.aspx

因为您没有获得“管理器”属性,您需要专门请求它,您可以使用 -Properties x,y,z 选项,其中 x、y 和 z 是您的属性想。如果您想要每个 属性,您可以使用星号 *Get-ADUser johnny -Properties *