Beispielcode zum Hinzufügen eines Mitglieds zu einer Gruppe

Dieses Thema enthält Codebeispiele, die einer Gruppe ein Mitglied hinzufügen. In den Beispielen Visual Basic Scripting Edition (VBScript) und C++ wird ein Member hinzugefügt, indem das IADs-Objekt, das das Element darstellt, dem IADsGroup-Objekt hinzugefügt wird, das die Gruppe darstellt. Die Visual Basic .NET- und C#-Beispiele ändern die Membereigenschaft des DirectoryEntry-Objekts, das die Gruppe darstellt.

In den folgenden C#-Codebeispielen wird einer Gruppe ein vorhandenes Mitglied hinzugefügt. Die Funktion verwendet den ADsPath des Gruppencontainers und den Distinguished Name des Members, das der Gruppe hinzugefügt werden soll. Der ADsPath wird verwendet, um ein DirectoryEntry-Objekt zu erstellen, das die Gruppe darstellt. Die PropertyValueCollection.Add-Methode fügt der Gruppe das Element hinzu, dessen Distinguished Name an die Funktion übergeben wurde. Die Funktion verwendet dann die DirectoryEntry.CommitChanges-Methode, um die neuen Memberinformationen in die Datenbank zu schreiben.

Rufen Sie die Funktion mit den folgenden Parametern auf:

  • bindString: ein gültiger ADsPath für einen Gruppencontainer, z. B. "LDAP://fabrikam.com/CN=TestGroup,OU=TestOU,DC=fabrikam,DC=com".
  • newMember: Der Distinguished Name des Members, das der Gruppe hinzugefügt werden soll, z. B. "CN=JeffSmith,OU=TestOU,DC=fabrikam,DC=com".
private void AddMemberToGroup(

                                string bindString,

                                string newMember

                                )

{

    try
    {

        DirectoryEntry ent = new DirectoryEntry( bindString );

        ent.Properties["member"].Add(newMember);

        ent.CommitChanges();

    }

    catch (Exception e)
    {

        Console.WriteLine( "An error occurred.");

        Console.WriteLine( "{0}", e.Message);

        return;

    }

}

Die folgenden Visual Basic .NET-Codebeispiele fügen einer Gruppe ein vorhandenes Mitglied hinzu. Die Funktion verwendet den ADsPath des Gruppencontainers und den Distinguished Name des Members, das der Gruppe hinzugefügt werden soll. Der ADsPath wird verwendet, um ein DirectoryEntry-Objekt zu erstellen, das die Gruppe darstellt. Die PropertyValueCollection.Add-Methode fügt der Gruppe das Element hinzu, dessen Distinguished Name an die Funktion übergeben wurde. Die Funktion verwendet dann die DirectoryEntry.CommitChanges-Methode, um die neuen Memberinformationen in die Datenbank zu schreiben.

Rufen Sie die Funktion mit den folgenden Parametern auf:

  • bindString: ein gültiger ADsPath für einen Gruppencontainer, z. B. "LDAP://fabrikam.com/CN=TestGroup,OU=TestOU,DC=fabrikam,DC=com".
  • newMember: Der Distinguished Name des Members, das der Gruppe hinzugefügt werden soll, z. B. "CN=JeffSmith,OU=TestOU,DC=fabrikam,DC=com".
Private Sub AddMemberToGroup(ByVal bindString As String, 
                                      ByVal newMember As String)

    Try

        Dim ent As New DirectoryEntry(bindString)

        ent.Properties("member").Add(newMember)

        ent.CommitChanges()

    Catch e As Exception

        Console.WriteLine("An error occurred.")

        Console.WriteLine("{0}", e.Message)

        Return

    End Try

End Sub

Im folgenden VBScript-Beispiel wird einer Gruppe ein vorhandenes Element hinzugefügt. Das Skript fügt den Benutzer Jeff Smith der Gruppe TestGroup hinzu.

Option Explicit

On Error Resume Next

Dim scriptResult        ' Script success or failure

Dim groupPath           ' ADsPath to the group container

Dim group               ' Group object

Dim memberPath          ' ADsPath to the member

Dim member              ' Member object

Dim groupMemberList     ' Used to display group members

Dim errorText           ' Error handing text

scriptResult = False

groupPath = "LDAP://fabrikam.com/CN=TestGroup,OU=TestOU,DC=fabrikam,DC=com"

memberPath = "LDAP://CN=JeffSmith,OU=TestOU,DC=fabrikam,DC=com"

WScript.Echo("Retrieving group object")

Set group = GetObject(groupPath)

If Err.number <> vbEmpty then

    Call ErrorHandler("Could not create group object.")

End If

Call ShowMembers(groupPath)     'Optional function call

WScript.Echo("Retrieving new member object")

Set member = GetObject(memberPath)

If Err.number <> vbEmpty then

    Call ErrorHandler("Could not get new member object.")

End If

WScript.Echo("Adding member to group.")

group.Add(member.ADsPath)

If Err.number <> vbEmpty then

    Call ErrorHandler("Could not add member to group.")

End If

Call ShowMembers(groupPath)     ' Optional function call

scriptResult = True

Call FinalResult(scriptResult)

'****************************************************************
' This function displays the members of a group. The function
' takes the ADsPath of the group.
'****************************************************************

Sub ShowMembers(groupPath)

    Dim groupMember

    Dim groupMemberList

    Dim groupObject

    Set groupObject = GetObject(groupPath)

    Set groupMemberList = groupObject.Members

    Select Case groupMemberList.Count

        Case 1 

            WScript.Echo vbcrlf & "The group has one member."

        Case 0

            WScript.Echo vbcrlf & "The group has no members."

        Case Else

            WScript.Echo vbcrlf & "The group has " & groupMemberList.Count & " members."

    End Select

    If groupMemberList.Count > 0 then

        WScript.Echo vbcrlf & "Here is a member list."

        For Each groupMember in groupMemberList

            WScript.Echo groupMember.Name

        Next

        WScript.Echo vbcrlf

    End If

    Set groupObject = Nothing

    Set groupMemberList = Nothing

End Sub

'****************************************************************
' This function shows if the script succeeded or failed. The 
' function processed the scriptResult variable.
'****************************************************************

Sub FinalResult(scriptResult)

    WScript.Echo vbcrlf

    If scriptResult = False then

        WScript.Echo "Script failed."

    Else

        WScript.Echo("Script successfully completed.")

    End If

    WScript.Quit

End Sub

'****************************************************************
' This function handles errors that occur in the script.
'****************************************************************

Sub ErrorHandler( errorText )

    WScript.Echo(vbcrlf & errorText)

    WScript.Echo("Error number: " & Err.number)

    WScript.Echo("Error Description: " & Err.Description)

    Err.Clear 

    Call FinalResult(scriptResult)

End Sub

Im folgenden C++-Codebeispiel wird einer Gruppe ein vorhandenes Element hinzugefügt.

/////////////////////////////////////////////////////////////
/*  AddMemberToGroup() - Adds the passed directory object as a member 
                         of passed group
 
    Parameters
 
        IADsGroup * pGroup   - Group to hold the new IDirectoryObject.
        IADs* pIADsNewMember - Object which will become a member 
                               of the group. Object can be a user, 
                               contact, or group.
*/
HRESULT AddMemberToGroup(IADsGroup * pGroup, IADs* pIADsNewMember)
{
    HRESULT hr = E_INVALIDARG;
    if ((!pGroup)||(!pIADsNewMember))
        return hr;
 
    // Use the IADs::get_ADsPath() member to get the ADsPath.
    // When the ADsPath string is returned, to add the new
    // member to the group, call the IADsGroup::Add() member,
    // passing in the ADsPath string.
    // Query the new member for its AdsPath.
    // This is a fully qualified LDAP path to the object to add.
    BSTR bsNewMemberPath;
    hr = pIADsNewMember->get_ADsPath(&bsNewMemberPath); 
    if (SUCCEEDED(hr))
    {
 
        // Use the IADsGroup interface to add the new member.
        // Pass the LDAP path to the 
        // new member to the IADsGroup::Add() member
        hr = pGroup->Add(bsNewMemberPath);
 
        // Free the string returned from IADs::get_ADsPath()
        SysFreeString(bsNewMemberPath);
    }
    return hr;
}

Hinzufügen von Mitgliedern zu Gruppen in einer Domäne

DirectoryEntry

DirectoryEntry.CommitChanges

Iads

IADsGroup

PropertyValueCollection.Add