正如标题所说,我需要获得用户组的组名的特定部分。是的,Get-ADPrincipalGroupMembership
允许获取用户组。但是它返回所有用户的组(虽然我想得到一个精确的组),而且,据我所知,只返回一个精确的用户。
有3个ou。每个OU都有用户。每个用户都是几个组的成员,但是我需要为每个用户获得一个具有标准名称的组。标准名称为department - X
,其中X部分是针对每个用户的。所以在一个结果中,我想要得到一个表,其中将是Name,SamAccountName和组的X部分。
因此,我需要:
- 从确切的OU获取用户及其组的列表;
- 从所有用户的列表,它的组,我需要得到组,每个用户的标准名称。标准名称为
department - X
,其中X部分针对每个用户,一个用户可以拥有多个具有标准名称的组; - 每个用户我需要从具有标准名称的组(s)中获得X部分。
我会尝试这样做:
Get-ADUser -filter * -SearchBase "OU=OU1,OU=OU2,OU=OU3,DC=domain,DC=local" -Properties memberOf | % { [PSCustomObject]@{ Name = $_.Name; SamAccountName = $_.SamAccountName; Groups = ($_.MemberOf | ? { $_ -match "department" } | % { $_.Split(',')[0].Split('=')[1].Replace("department - ","") }) -join "," } }
这将获取给定OU中的所有用户及其成员资格。memberOf属性的值是以字符串形式表示的组的DN,例如CN=group,OU=OU1,DC=domain,DC=local
。在这些条目中,它只选择与department匹配的条目,并用逗号和等号分隔DN以获得CN部分(应该与组的名称匹配)。