【问题标题】:Get Specific AD Users from AD Group从 AD 组获取特定的 AD 用户
【发布时间】:2021-02-19 23:59:59
【问题描述】:

我需要从 Active Directory 中的特定组中获取特定用户。

到目前为止,我有这个:

$Groupnames = get-adgroup -Filter "name -like '$Groupfilter'" -Properties * -SearchBase $Grouppath |
    Select-Object Name, @{
        Name='Username';
        Expression={
            Get-ADGroupMember -identity $($_.Name) -Recursive |
            Get-ADUser -Property SamAccountName |
            Select -ExpandProperty SamAccountName
        }
    }

这可以获取带有名称的组。现在我想从这些组中获取所有用户。什么有效,但格式完全关闭。我想要这个:

Name                               Username                                                                                
----                               --------                                                                                
Group1                             user1adm                                                                             
Group2                             {user1adm, user1, user2, user2adm...}                                      
Group3                             {user1adm, user3, user2adm, user6...}

但我明白了:

{user1adm, user1, user2, user2adm...}

使用这种格式,我无法看到所有用户。

我最后的目标也是排除以adm结尾的用户,但我不知道该怎么做。

你能帮帮我吗?

【问题讨论】:

  • Select Name 更改为Select -Expand Name
  • 是的,它在某种程度上有所帮助,但它仍然是这样的:{user1, user1adm, user2, user3...} 为什么最后有{}...。它不显示其余用户。
  • 这只是 PowerShell 表示属性中有多个值的方式。你期望什么输出
  • 我想将它们放入 CSV {} 不是一个大问题,我可以摆脱它们。但它没有显示所有用户是更大的问题。
  • 对,但是 CSV 文件会是什么样子?每行/记录一个用户?

标签: powershell active-directory


【解决方案1】:

Get-ADGroupMember 可以返回“用户”、“组”或“计算机”类型的对象,因此如果其中一个对象不是用户,则将返回的对象直接传送到 Get-ADUser 可能会给您带来麻烦。

话虽如此,从Get-ADGroupMember 返回的对象已经包含您所追求的 SamAccountName 属性,因此您可以从代码中删除 Get-ADUser。

$Groupnames = Get-ADGroup -Filter "name -like '$Groupfilter'" -SearchBase $Grouppath | 
                Select-Object Name, 
                @{Name = 'Username'; Expression = { 
                        ($_ | Get-ADGroupMember -Recursive | 
                              Select-Object -ExpandProperty SamAccountName | 
                              Where-Object { $_ -notmatch 'adm$' } 
                        ) -join ', '
                    }
                }

# output the result on screen
$Groupnames | Format-Table -AutoSize

# output to CSV file
$Groupnames | Export-Csv -Path 'Path\To\The\GroupMembers.csv' -NoTypeInformation

【讨论】:

  • 哇,非常感谢,这正是我所需要的?
  • 哦,对不起,我刚刚发现了一个我无法解决的问题...当我将所有内容导出为 CSV 然后在 Excel 中打开时,第一个“”会删除,但用户名中的“”会删除它没有我该如何解决这个问题?
  • @Forestbird 请问你为什么不接受这个答案?
  • @Forestbird 尝试在 Export-Csv 命令中添加-UseCulture
  • 还有更大的问题,在用户名的末尾它只是写...当有很多用户名时!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多