powershell - 如何从特定OU的用户列表中获取组的特定部分并将其放入表中?
问题描述
正如标题所说,我需要获取一组用户的组名的特定部分。是的,Get-ADPrincipalGroupMembership
允许获取用户组。但它返回所有用户的组(虽然我想得到一个确切的组),并且据我所知,只针对一个确切的用户。
所以我有三个OU。每个 OU 都有用户。每个用户都是几个组的成员,但我需要为每个用户获取一个具有标准名称的组。标准名称是department - X
,其中X部分特定于每个用户。所以结果我想得到一个表,其中将是Name,SamAccountName和X 部分 group(s)。
因此,我需要:
- 从确切的OU中获取用户列表及其组;
- 从所有用户及其组的列表中,我需要获取每个用户具有标准名称的组。标准名称是
department - X
,其中X部分是每个用户特定的,一个用户可以拥有多个具有标准名称的组; - 每个用户我需要从具有标准名称的组中获取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
. 在这些条目中,它只选择与部门匹配的条目,并用逗号和等号分割 DN 以获得 CN 部分(应该与组的名称匹配)。
推荐阅读
- c++ - 通过 Nuget 将 libpng 添加到 VS2019 C++ 项目后,如何修复 LNK2019 错误?
- powershell - 在 PowerShell 中显示事件类型
- haskell - 匹配对列表的函数类型签名时出错
- mongodb - 如何在contanier中连接mongodb
- rrdtool - Check_Mk RRD 文件平均值不匹配
- node.js - 主机节点 API 在线
- swiftui - 为什么 scaleToFill 没有填满整个屏幕?
- c++ - 别名信息可以简化这个程序集吗
- android - 如何在 Android Kotlin 中创建 BottomSheet
- blockchain - 在币安智能链中部署合约时面临错误