如何生成一组用户所属的安全组列表?

NaO*_*aOH 6 windows powershell active-directory groups

我被要求生成一个包含大约 50 个用户的列表所属的安全组(特别是不是通讯组)的列表。

我有一个用户列表,users.txt其中包含一个新行的每个用户名。我想生成一个membership.txt包含用户名和用户所属的安全组列表,用逗号分隔。

到目前为止我编写的Powershell脚本如下:

$users = Get-Content C:\users.txt

ForEach ($User in $users) {
  $getmembership = Get-ADUser $User -Properties MemberOf | Select -ExpandProperty memberof
  $User + ',' + $getmembership | Out-File -Append c:\membership.txt
}
Run Code Online (Sandbox Code Playgroud)

这几乎有效,但有两个问题:

  1. 它正在生成所有组的列表,而不仅仅是安全组。我怎么能告诉它只包括安全组而不包括通讯组?
  2. 这些组以格式附加OU=Security Groups,OU=City,DC=domain,DC=com CN=Senior Leaders,但我真正想要的唯一信息是Senior Leaders. 我怎样才能删除所有额外的信息?

Oli*_*ner 6

延长您的Get-ADUser线路:

$getmembership = Get-ADUser $User -Properties MemberOf | Select -ExpandProperty memberof | Get-ADGroup -Properties name | Where { $_.GroupCategory -eq 'Security' } | Select -ExpandProperty Name
Run Code Online (Sandbox Code Playgroud)

这将提供组的 DNGet-ADGroup以检索其他属性,然后过滤组类别并选择组的名称(而不是 DistinguishedName)。