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

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

我被要求生成一个安全组列表(特别不是分发组),其中大约有 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
}

这几乎可行,但存在两个问题:

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

答案1

延伸你的Get-ADUser产品线:

$getmembership = Get-ADUser $User -Properties MemberOf | Select -ExpandProperty memberof | Get-ADGroup -Properties name | Where { $_.GroupCategory -eq 'Security' } | Select -ExpandProperty Name

这将提供组的 DN 来Get-ADGroup检索其他属性,然后根据组类别进行过滤并选择组的名称(而不是 DistinguishedName)。

相关内容