powershell - 试图找到一个部门中的所有用户,并比较他们的 AD 组
问题描述
我试图找到一个部门中的所有用户,并比较他们的广告组,看看是否有任何共同的广告组。
我对编写这种脚本有点陌生 - 希望你能帮助我。
import-module activedirectory
$afd = "Wright the name of the department you want to compair"
$users = get-ADUser -Filter * -Properties department | Where-Object { $_.department -Like "$afd*" } | Select sAMAccountName, department
$users | Sort-Object -Property department | select samaccountname
ForEach ($user in $users)
{
}
这就是我卡住的地方,我得到了排序列表,并希望查看所有不同部门的所有广告组并进行比较。
有没有人有想法或暗示让我再次出发?
问候西蒙
解决方案
一种可能较慢但更简单的方法是利用Get-ADPrincipalGroupMembership。
ForEach ($user in $users)
{
$UserGroups = (Get-ADPrincipalGroupMembership $user.SamAccountName).Name
[pscustomobject]@{
User = $user.SamAccountName
GroupsList = $UserGroups # Keeping Groups as a collection
GroupsString = $UserGroups -join ';' # Delimited (;) string of the groups
}
如果您使用memberOf
用户对象的属性,您将已经拥有一个组列表(仅作为字符串的专有名称)。但是,稍后在您的代码中可能更难使用,因为这些值只会是字符串。
$users = get-ADUser -Filter * -Properties department,memberOf |
Where-Object { $_.department -Like "$afd*" } |
Select sAMAccountName,department,memberOf
在任何一种情况下,将属性值存储为数组非常适合稍后在代码中访问这些值。因为$user.memberOf
例如将为您枚举所有组 DN 字符串。但是,它不适用于导出到 CSV,因为属性值应该是单个字符串。
推荐阅读
- linux - 如何为 kubectl 命令提供输入?
- java - 在 IntelliJ IDEA 中使用 EclipseLink 构建 Java 代码失败
- python - Python gRPC从客户端取消一元流调用
- python - 在hackerearth中用Python获取输入
- python - 在 Python 中,使用静态方法实现抽象方法的优缺点是什么?
- python - 在python中删除重复分隔符之间的字符串
- c - Linux 上 64 位进程中的地址
- ios - 使用 AVAssetDownloadURLSession 进行离线下载的正确进度
- angular - 带有初始化 oninit 的未定义数组
- angular - Angular - 扩展服务并使用它的方法