如何从特定OU的用户列表中获取组的特定部分并将其放入table?

How to get a specific part of a group from a list of users of specific OU and put it into table?

正如标题所说,我需要获取用户组名称的特定部分。 是的,Get-ADPrincipalGroupMembership 允许获取用户的组。但它 returns 所有用户的组(虽然我想得到一个确切的组),而且据我所知,只针对一个确切的用户。

所以我有三个 OU。每个 OU 都有用户。每个用户都是几个组的成员,但我需要为每个用户获取一个具有标准名称的组。标准名称是 department - X,其中 X 部分特定于每个用户。所以结果我想得到一个 table,其中 NameSamAccountNameX 的一部分小组.

因此,我需要:

  1. 从确切的 OU 中获取用户及其组的列表;
  2. 我需要从所有用户及其组的列表中获取每个用户都具有标准名称的组。标准名称为department - X,其中X部分是针对每个用户的,一个用户可以拥有多个标准名称的组;
  3. 每个用户我需要从具有标准名称的组中获取 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 部分(应与组名匹配)。