powershell - Powershell 组成员资格 - 按 OU 过滤
问题描述
我想查看OU A
并仅获取每个组中的成员OU B
。
我的脚本得到了我想要的信息,但它们都在一个列表中,没有按组分解,这使得它毫无用处。
理想情况下,我想导出到 Excel,其中 A 列具有组名(不是 DN),B 列具有组成员。
我很感激任何帮助。请参阅下文了解我已经拥有的内容:
$DNs = Get-ADGroup -Filter * -SearchBase "OU A" | ForEach { $_.DistinguishedName }
ForEach ($i in $DNs) {
Get-ADComputer -Filter {memberof -eq $i} -SearchBase "OU B" | Select-Object Name
}
解决方案
我能够在我的环境中完成这项工作,因此它应该在您的环境中进行一些必要的更改。如果您有任何问题,请告诉我,我会为您提供帮助。
获取给定组 A 和 B 中的 AD 用户: $ADGroups = Get-ADGroup -filter * -SearchBase "OU=A,DC=zone,DC=domain,DC=com" $report = @() Foreach ($分组 ($ADGroups | ? { $_.DistinguishedName -like " OU=B " })) { try{ $members = Get-ADGroupMember -identity $group.Name $object = [pscustomobject]@{ GroupName = $group.姓名; GroupMembers = "$($members.name -join ";")"; } $report += $object } catch { Write-Host "无法找到 AD 组成员" } }
$report | Export-CSV -NoTypeInformation -Path "C:\Temp\Test.csv"
要从 A 和 B 中的 ADGroups 获取 B 中的 ADComputers:
$ADGroups = Get-ADGroup -filter * -SearchBase "OU=A,DC=zone,DC=domain,DC=com"
$report = @()
Foreach ($Group in ($ADGroups | ? { $_.DistinguishedName -like "*OU=B*" }))
{
try{
<#
$members = Get-ADGroupMember -identity $group.Name
#>
$members = -Filter * -Property MemberOf -SearchBase "OU=B,DC=zone,DC=domain,DC=com" | Where-Object { $_.memberOf -like "*$($group.name)*" }
$object = [pscustomobject]@{
GroupName = $group.Name;
GroupMembers = "$($members.name -join ";")";
}
$report += $object
}
catch
{
Write-Host "Unable to find AD Group Members"
}
}
$report | Export-CSV -NoTypeInformation -Path "C:\Temp\Test.csv"
第二个条件有效,但我在自己的网络中没有针对我正在执行的有限搜索的结果。试一试,我们可以根据需要进行调整。
推荐阅读
- javascript - 我无法让我的地图打印是函数之外的值
- javascript - javascript中带有if else条件的函数永远返回true
- r - 循环遍历向量只更新第一项
- python - 如何修复此正则表达式以匹配 Json 中的对象并将其替换为对象列表
- angular - 错误类型错误:“_co.category.category_type 未定义”
- excel - 如何在工作表代码的范围内查找值
- sql - SQL 检索具有特殊字符的字符串
- javascript - 如何解析 moment.js 日期对象
- vb.net - 如何将数据从并行数组传输到文本框?
- swift - 如何在有顺序的循环中使用 DispatchGroup?