我想按照以下格式
从Active目录中检索所有组的所有成员的列表Group | Member
----------------
group1 | member1
group1 | member2
group1 | member3
group2 | member1
group2 | member4
...
实际上我有一个使用Quest cmdlts的PowerShell脚本来检索组成员,但性能非常糟糕(最多30小时才能完成提取)所以我只是暂时尝试检索主要组的成员。
我尝试使用DSGET
命令,但它没有显示组名或ID,只显示成员列表
dsquery group -limit 0 | dsget group -members
我也尝试使用命令CSVDE
,但没有成功
如果可能的话,我想要一个不使用Quest cmdlts和AD cmdlet的解决方案(Get-ADGroupMember ...)
修改 动作Quest cmdlts脚本,我没有Powershell知识所以我无法解释它是如何工作的......
$csv = get-content "C:\group_names.txt"
$result = $csv | foreach-object { $group=$_ get-qadgroupmember "$_"
-PageSize 500 -sizelimit 0 -indirect |
select-object sAMAccountName,@{n="GroupName";e={$group}} } $result |
export-csv C:\group_members.csv -Delimiter "|" -notypeinformation
答案 0 :(得分:0)
我尝试使用Quest cmdlet优化您的脚本。你说你只想拥有直接成员,但你的脚本仍然使用像你所说的-Indirect
开关,使它变得非常缓慢。试试这个:
Get-Content "C:\group_names.txt" |
Foreach-Object {
$group = $_
Get-QADGroupMember "$_" -PageSize 500 -SizeLimit 0 |
Select-Object sAMAccountName,@{n="GroupName";e={$group}}, type
} | Export-CSV C:\group_members.csv -Delimiter "|" -NoTypeInformation
您必须创建自己的逻辑,sql脚本等以将组链接在一起,以便找到间接成员。您也可以通过使用函数和递归在PowerShell中执行此操作,此时我还没有时间编写一些函数。我在您的输出中添加了type
,因此您可以轻松查看哪个成员是嵌套组。