gpt4 book ai didi

Powershell 拉取 AD 组和子组无限循环

转载 作者:行者123 更新时间:2023-12-03 00:13:58 26 4
gpt4 key购买 nike

我的脚本正在访问事件目录以提取 AD 组及其子组。

我将添加 Get-ADGroupMember Where-Object { $_.ObjectClass -eq "user" })到脚本,但现在脚本无休止地运行。

我检查了 CSV 文件并且数据正在被推送到其中,我只是不知道为什么它会无休止地运行。

我还是 Powershell 的新手,可能忽略了一些东西。

我是否需要添加某种 catchexit ?我读到 exit在循环完全执行之前关闭循环。

我的脚本:

Clear-Host

#Import-Module ActiveDirectory

Write-Host -ForegroundColor Green "Starting"

$logfile = "C:\temp\logfile.csv"
"Domains,Groups,Nested" | Add-Content $logfile

$grp_list = Import-Csv "C:\temp\Copy_lp.csv"
$domains = @()
$dom = Import-Csv "C:\temp\Copy_lp.csv" |
Select-Object -Unique -ExpandProperty "Domain Group"

foreach ($domain in $dom) {
$domains += $domain.Split('\')[0]
}

$domains = $domains | Select-Object -Unique

foreach ($domain in $domains) {

Write-Host "Domain:" $domain
Get-ADGroup -Filter * -Server $domain |

ForEach-Object {
$group = $_.Name

$grps = (Get-ADGroupMember $group -Server $domain |
Where-Object { $_.ObjectClass -eq "Group" })

$grps | ForEach {
Write-Host "Group: " $_.Name
"$domain,$($_.Name),$group" | Add-Content $logfile
}
}
}

Write-Host -ForegroundColor Green "Done"

更新
托默回答了这个问题。我从以前执行的脚本中获取了输出 CSV,该脚本用于查看数据库级别的用户权限。所以当一个用户被映射到实例内的多个数据库(用户也属于不同的组和子组)时,会出现很多次。因此,当我的脚本遍历列表时,它会一遍又一遍地重新运行相同的 AD 组。我仍然不明白为什么它会持续运行,但是一旦我将 CSV 文件更改为只执行一个域列表并吐出我正在寻找的输出。我没有把这个作为答案,因为我觉得 Tomer 值得称赞。感谢大家的帮助。

最佳答案

在 Active Directory 中,允许成员自循环。因此,例如,A 组可能包含另一个 B 组,该 B 组可能再次包含 A 组。因此,简单枚举member-of关系会导致无限循环。

解决这个问题的一个简单方法是存储您已经看到的 DN,并且不再重复它们。

关于Powershell 拉取 AD 组和子组无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41510761/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com