我被要求生成一个安全组列表(特别不是分发组),其中大约有 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
}
这几乎可行,但存在两个问题:
- 它正在生成所有组的列表,而不仅仅是安全组。我怎样才能告诉它只包含安全组而不包含分发组?
- 组别以 格式附加
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)。