快速枚举远程受信任域中的域用户

时间:2018-09-13 18:10:47

标签: c# active-directory

我们遇到一种情况,一个域中的服务器上运行的应用程序代码需要列出另一域中的用户。让我们将域称为“ PRODUCTION”和“ CORPORATE”-该代码需要在PRODUCTION中运行并与PRODUCTION资源进行交互,但是在其中有一个特殊的流程需要允许用户选择CORPORATE \ Domain Users的成员(好,从技术上讲是一个更具体的小组,但这是一个技术性问题)。 CORPORATE的域控制器都位于PRODUCTION服务器的远程位置,可通过VPN进行访问,该VPN速度相当快,但与本地相距甚远。我一直很难找到一种有效地列出CORPORATE组成员的方法。

我尝试了各种API,最近尝试了PowerShell ActiveDirectory模块,我怀疑它是在.NET Framework中的System.DirectoryServices之上构建的。以下命令可在几秒钟内直接在CORPORATE域中的计算机和CORPORATE LAN上运行:

Get-ADGroup "Domain Users" | Get-ADGroupMember

但是,如果我在PRODUCTION中的机器上使用CORPORATE DC远程,则等效命令:

Get-ADGroup -Server CORPORATEDC "Domain Users" | Get-ADGroupMember

...需要10分钟以上才能完成。

结果集中有1288个元素。

是否有一些更快的方法来获取小组成员?性能特征就像是在设置一个远程迭代器,然后为每个单独的元素带来一个单独的网络往返(或多个)。是否有API可以一次往返返回结果?

我最终想从C#代码中做到这一点,而只是使用PowerShell来验证概念。如果提供所需的功能,我不反对使用本机P / Invoke或COM API。

0 个答案:

没有答案