Powershell 如何从Active Directory获取所有组的所有成员

Powershell 如何从Active Directory获取所有组的所有成员,powershell,active-directory,Powershell,Active Directory,我想按照以下格式从Active directory中检索所有组的所有成员的列表 Group | Member ---------------- group1 | member1 group1 | member2 group1 | member3 group2 | member1 group2 | member4 ... 实际上,我有一个PowerShell脚本,它使用Quest CMDLT检索组成员,但性能非常差(完成提取需要30个小时),因此我目前仅尝试检索主要组的成员。 我尝试使用DSG

我想按照以下格式从Active directory中检索所有组的所有成员的列表

Group  | Member
----------------
group1 | member1
group1 | member2
group1 | member3
group2 | member1
group2 | member4
...
实际上,我有一个PowerShell脚本,它使用Quest CMDLT检索组成员,但性能非常差(完成提取需要30个小时),因此我目前仅尝试检索主要组的成员。 我尝试使用
DSGET
命令,但它不显示组名或ID,只显示成员列表

dsquery group -limit 0 | dsget group -members
我还尝试使用命令
CSVDE
,但没有成功
如果可能,我想要一个不使用Quest cmdlts或AD cmdlet的解决方案(Get-ADGroupMember…)

编辑: actal 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

我已尝试使用Quest cmdlet优化您的脚本。你说你只希望有直接成员,但是你的脚本仍然使用了
-间接
开关,就像你说的,这使得它运行得非常慢。试试这个:

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
,这样您就可以很容易地看到哪个成员是嵌套组。

使用quest cmdlet的powershell脚本是什么样子的?也许我们可以优化它。您只需要直接成员还是间接成员(通过嵌套组)?否则,您可以使用adsi。搜索“powershell获取成员adsi”或其他内容。@FrodeF。我在问题中添加了实际的脚本,我更喜欢获得直接成员,然后找到另一个解决方案来检索子成员(可能通过SQL),因为检索子成员也需要很长时间“我想要一个不使用Quest cmdlts或AD cmdlet的解决方案”为什么?您必须像编写直接LDAP查询的旧VBScript查询一样编写它。这完全是粗俗和容易出现错误的,而且可能表现得更差。@BaconBits这就是我添加“如果可能”的原因,原因是我没有权限导入Active Directory模块,也没有权限查询Quest,我还怀疑Quest服务器管理不善,Quest CMDLT运行速度非常慢。Quest cmdlet可以使用LDAP直接与DC通信。我认为可以对某些类型的任务服务器使用它(就像你可能正在做的那样),但99%的模块用户并不是这样使用它的