将Active Directory子域用户添加到主域组

时间:2010-09-22 19:11:00

标签: vb.net visual-studio active-directory

当我尝试将来自同一域的用户添加到同一域的组中时,我有一个完美的功能。

Function AddUserToGroup(ByVal strUserDN As String, ByVal strGroupDN As String, ByVal strGRPDC As String, ByVal strUserDC As String) As Boolean
    Dim oUser As DirectoryEntry
    Dim oGroup As DirectoryEntry
    Dim blnStatus As Boolean
    Try
        oUser = New DirectoryEntry("LDAP://" & strUserDN)
        oGroup = New DirectoryEntry("LDAP://" & strGroupDN)
        oGroup.Invoke("Add", oUser.Path.ToString)
        oGroup.CommitChanges()
        blnStatus = True
    Catch ex As Exception
                //catch error...send email to support
    End Try
    oUser = Nothing
    oGroup = Nothing
    Return blnStatus
End Function

我需要做的是将子域中的用户添加到此主域组。例如:

主域名:geo.com 子域名:customer.geo.com

我有一位用户:Homer Simpson,他是customer.geo.com域的成员。我想将此用户添加到geo.com域中的一个组。我正在传递正确的完整adsPath,但始终会收到无效的错误消息:

User: WACUSTDC2/CN=Simpson\, Homer,OU=Geo Test OU,OU=Customers,DC=customer,DC=geo,DC=com
Group: wadc4/CN=QSGEOTESTOU_RW,OU=Permission Groups,OU=Resources,DC=geo,DC=com
Error: Exception has been thrown by the target of an invocation.

错误实际上是在Invoke行上引发的,但正如我之前所说的,如果用户位于同一个域中,这将完美地运行。

非常感谢任何想法或建议。

...地理位置

1 个答案:

答案 0 :(得分:0)

您依赖于IADsGroup.Add方法。正确的语法是(我认为 - 我是C#用户):

oGroup.Invoke("Add", new object[] { oUser.Path }

您还需要检查它是否已经是该组的成员,因为如果是,您将收到错误。