Computer der gegenwärtigen Domäne auslesen

Geschrieben von admin am 7. Januar 2010 | Abgelegt unter Veröffentlichungen

Mit dieser Funktion ist man in der Lage, alle Computer in der gegenwärtigen Domäne aus dem LDAP, mittels ADSI (ADSI = Active Directory Service Interface) auszulesen und in einem StringArray zurückzugeben.

Um diese Funktion auszuführen, müssen folgende Verweise eingefügt werden:

  • Microsoft ActiveX Data Objects 2.5 Libary
  • Active DS Type Libary

Quellcode:

Public Function AllComputers() As String()
  Dim conn As New Connection
  Dim rs As RecordsetDim Root As IADs
  Dim Domain As IADs

Dim strBase As String
  Dim strFilter As String
  Dim strDomain As String

Dim strAttr As String
  Dim strDepth As String
  Dim strQuery As String
  Dim strPC() As String
  Dim nElement As Integer

On Error GoTo ErrHandler

ReDim strPC(0) As String

‘ Pfad der gegenwärtigen Domäne (LDAP) einholen
  Set Root = GetObject(“LDAP://rootDSE”)
  strDomain = Root.Get(“defaultNamingContext”)
  Set Domain = GetObject(“LDAP://” & strDomain)

‘ LDAP Base DN setzen
  strBase = “<” & Domain.ADsPath & “>”

‘ Filter auf die Kategorie Computer setzen
  strFilter = “(&(objectCategory=Computer))”

‘ Attribut setzen
  strAttr = “name”

‘ Suchtiefe setzen
  strDepth = “subTree”

‘ Abfrage zusammen setzen
  strQuery = strBase & “;” & strFilter & “;” & strAttr & “;” & strDepth

‘ Verbindung öffnen
  conn.Open “Data Source=Active Directory Provider;Provider=ADsDSOObject”

‘ Query ausführen
  Set rs = conn.Execute(strQuery)

Do While Not rs.EOF
  If strPC(0) = “” Then
  nElement = 0
  Else
  nElement = nElement + 1
  End If

‘ das Array Redimensionieren
  ReDim Preserve strPC(nElement) As String

‘ Den Computernamen in das Array schreiben
  strPC(nElement) = rs(“name”)
  rs.MoveNext
  Loop

‘ Das StringArray zurückgeben
  AllComputers = strPC

If rs.State <> 0 Then rs.Close
  If conn.State <> 0 Then conn.Close

‘ Error Handling
ErrHandler:
  On Error Resume Next
  AllComputers = strPC
  Set rs = Nothing
  Set conn = Nothing
  Set Root = Nothing
  Set Domain = Nothing
End Function

 

 Beispiel für den Auruf der Funktion:

Private Sub Command1_Click()
  Dim strA() As String
  Dim lI As LongstrA = AllComputers
  If Not strA(0) = “” Then
  For lI = 0 To UBound(strA)
  Debug.Print strA(lI)
  Next
  End If
End Sub 

 

Sie können hier bei vbarchiv.net für mich voten!

Ein Kommentar zu “Computer der gegenwärtigen Domäne auslesen”

  1. am 7. Januar 2010 um 11:40 1.Gadgets, IT-Projekte, Programmierung und mehr » Benutzer der gegenwärtigen Domäne auslesen schrieb …

    […] Mit dieser Funktion ist man in der Lage, alle Benutzer und deren angelegte Daten in der gegenwärtigen Domäne aus dem LDAP, mittels ADSI (ADSI = Active Directory Service Interface) auszulesen und in einem StringArray zurückzugeben. Eine andere Funktion, die sich ebenfalls mit dem Auslesen des LDAP beschäftigt, findet ihr hier: Computer der gegenwärtigen Domäne auslesen. […]

Trackback URI | Kommentare als RSS

Einen Kommentar schreiben

Du musst angemeldet sein, um einen Kommentar zu schreiben.