VB.NET Удалить пользователя из активной директории - PullRequest
0 голосов
/ 06 августа 2010

Привет! Я пытаюсь создать приложение VB.NET, которое (надеюсь) сократит время, затрачиваемое на некоторые звонки в службу поддержки моих отделов.Часть, с которой я застрял - это как использовать VB.NET для удаления пользователя из группы.Ниже приведен код, с которым я играл:

Public Shared Sub RemoveUserFromGroup(ByVal deUser As String, ByVal GroupName As String)
    Dim entry As DirectoryEntry = ADEntry()
    Dim mySearcher As DirectorySearcher = New DirectorySearcher(entry)

    mySearcher.Filter = "(&(ObjectClass=Group)(CN=" & GroupName & "))"
    mySearcher.PropertiesToLoad.Add("OrganizationalUnit")
    mySearcher.PropertiesToLoad.Add("DistinguishedName")
    mySearcher.PropertiesToLoad.Add("sAMAccountName")

    Dim searchResults As SearchResultCollection = mySearcher.FindAll()
    If searchResults.Count > 0 Then
        Dim group As New DirectoryEntry(searchResults(0).Path)
        Dim members As Object = group.Invoke("Members", Nothing)
        For Each member As Object In CType(members, IEnumerable)
            Dim x As DirectoryEntry = New DirectoryEntry(member)
            MessageBox.Show(x.Properties("sAMAccountName").Value)
            If x.Properties("sAMAccountName").Value = deUser Then
                MessageBox.Show(searchResults.Item(0).Path.ToString)
                MessageBox.Show(x.Properties("sAMAccountName").Value)
                'group.Invoke("Remove", New Object() {x.Properties("OrganizationalUnit").Value})
                group.Properties("member").Remove(x.Properties("OrganizationalUnit").Value)
            End If

        Next
    End If

Когда я запускаю программу, я получаю необработанное COMException, неопределенную ошибку в строке group.properties.При использовании group.invoke я получаю сообщение об ошибке TargetInvocationException.

Моя цель - передать в качестве строки имя пользователя (sAMAccountName) и имя группы (sAMAccountName) в функцию, которая найдет пользователя и удалит его изгруппа.

Я новичок в VB.NET и буду признателен за любую помощь, которую могут оказать люди.

Я пишу в .NET 2.0, так как не уверен, что сервер, на котором он будет житьустановлено 3,5.

1 Ответ

1 голос
/ 07 августа 2010

Ну, сообщение об ошибке 0x80004005 E_FAIL Неуказанная ошибка не очень полезно.Я часто расстраиваюсь при работе с Active Directory.

Попробуйте изменить строку:

group.Properties("member").Remove(x.Properties("OrganizationalUnit").Value)

на

group.Invoke("Remove", New Object() {x.Path.ToString()})

Если вам нужно больше ссылок, взгляните на эту статьюна VB.net Небеса Эрика Эрли.В статье рассматриваются различные варианты использования Active Directory.

Надеюсь, это поможет.

...