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

问题描述 投票:0回答:2

正如标题所说,我需要获取用户组的组名的特定部分。 是的,

Get-ADPrincipalGroupMembership
允许获取用户组。但它返回所有用户的组(虽然我想获得一个确切的组),并且据我了解,仅针对一个确切的用户。

所以我有三个 OU。每个 OU 都有用户。每个用户都是几个组的成员,但我需要为每个用户获取一个具有标准名称的组。标准名称是

department - X
,其中 X 部分是针对每个用户的。所以在结果中我想得到一个表,其中将是组的NameSamAccountNameX部分

因此,我需要:

  1. 从确切的 OU 获取用户及其组列表;
  2. 从所有用户及其组的列表中,我需要获取每个用户具有标准名称的组。标准名称为
    department - X
    ,其中X部分是针对每个用户的,一个用户可以拥有多个具有标准名称的组;
  3. 每个用户我需要从具有标准名称的组中获取 X 部分。
powershell active-directory usergroups
2个回答
0
投票

我会尝试这样的事情:

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 部分(应与组名称匹配)。


0
投票

您能给我没有部门过滤器的语法吗?我只是想查看特定 OU 的组成员资格。

Get-ADUser -filter * -SearchBase“OU STRING REMOVED”-properties memberof

并且仅显示嵌套在该 OU 中的组,但我的用户是位于不同 ou 中的组的成员。这可行吗?

© www.soinside.com 2019 - 2024. All rights reserved.