【发布时间】: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