2015-05-20 5 views
2

Я ищу, чтобы определить, является ли компьютер членом группы AD или даже получить все компьютеры, которые являются членами группы AD, используя VB.net. Я нашел несколько примеров для проверки того, является ли пользователь членом группы, но нет для проверки компьютеров. Я надеялся преобразовать эту функцию для поиска компьютера в группе, но я не увенчался успехом. Любая помощь будет оценена. Заранее спасибо.Определите, находится ли компьютер в группе AD

Function IsInGroup(GroupName) As Boolean 
    Dim MyIdentity As System.Security.Principal.WindowsIdentity = System.Security.Principal.WindowsIdentity.GetCurrent() 
    Dim MyPrincipal As System.Security.Principal.WindowsPrincipal = New System.Security.Principal.WindowsPrincipal(MyIdentity) 
    Return MyPrincipal.IsInRole(GroupName) 
End Function 
+0

Я нашел это, но я не достаточно хорошо, чтобы преобразовать его в vb.net. Может ли кто-нибудь помочь мне? 'Set objSysInfo = CreateObject ("ADSystemInfo") strComputer = objSysInfo.ComputerName Набор objComputer = GetObject ("LDAP: //" & strComputer) objmemberOf = objComputer.GetEx ("memberOf") Для каждого objGroup в objmemberOf groupCN = Split (objGroup, "") Groupname = Mid (groupCN (0), 4) Следующая Select Case Groupname Case "TestGroup" Wscript.Echo Groupname Case Else Wscript.Echo "" End Select' – Michael

+0

Возможный дубликат [Есть ли способ проверить принадлежность группы AD для компьютера?] (Http://stackoverflow.com/questions/11126060/is-there-a-way-to-check-ad-grou р-членов-для-а-компьютера) – JStevens

ответ

0

Попробуйте что-то вроде этого

Function IsInGroup(PCName As String, groupName As String) As Boolean 
     Dim vUsuario As New NTAccount(PCName & "$") 
     Dim sid As SecurityIdentifier = vUsuario.Translate(GetType(SecurityIdentifier)) 

     Using vRootDSE As New DirectoryEntry("LDAP://rootDSE") 
     Using vSearcher As New DirectorySearcher(New DirectoryEntry("LDAP://" + CStr(vRootDSE.Properties("defaultNamingContext")(0))), "(objectSID=" & sid.ToString() & ")", New String() {"memberOf"}, SearchScope.Subtree) 
      Dim src As SearchResultCollection = vSearcher.FindAll() 

      Dim memberOf As ResultPropertyValueCollection = src(0).Properties("memberOf") 
      For i As Integer = 0 To memberOf.Count - 1 
       'Debug.Print(memberOf(i).ToString()) 

       ' I don't really like this approach, but it's quick to write ;) 
       If memberOf(i).ToString().Contains("=" & groupName & ",") Then 
        Return True 
       End If 
      Next 

     End Using 

     End Using 

     Return False 
    End Function