【问题标题】:How can I find the manager's details for each user who is an ADGroupMember如何找到每个 ADGroupMember 用户的经理详细信息
【发布时间】:2021-01-08 17:43:38
【问题描述】:

我正在尝试使用 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 本地管理员权限”所需的输出:

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的名字总是显示为空白。

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

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

【问题讨论】:

    标签: powershell active-directory


    【解决方案1】:

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

    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

    由于您没有获得“Manager”属性,因此您需要专门请求它,您可以使用 -Properties x,y,z 选项来执行此操作,其中 x、y 和 z 是您想要的属性。如果你想要每个属性,你可以使用星号*Get-ADUser johnny -Properties *

    【讨论】:

    • 太好了,已经解决了问题,我现在可以在我的报告中成功获取经理的详细信息。我知道这将是一个非常简单的修复,只是还没有完全熟悉 PowerShell 语法——我还在学习。非常感谢@Guy-S,我已将此标记为答案。感恩的伊夫特非常感谢您,并祝您新年快乐。 ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 2019-12-07
    • 2012-07-18
    • 2014-10-15
    相关资源
    最近更新 更多