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

我被要求生成一个安全列表(特别是不是通讯组),列出大约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的forms被追加,但是我唯一需要的信息是Senior Leaders 。 我怎样才能删除所有的额外信息?

扩展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以检索其他属性,然后过滤组类别并select组的名称(而不是DistinguishedName)。