Eksport do pliku CSV kontaktów z Active Directory o określonym numerze telefonu
Udostępnij Follow CodeTwo on Facebook Follow CodeTwo on Twitter
Artykuł dotyczy: Exchange Server 2000/2003

Skrypt pokazuje, w jaki sposób przeszukać Active Directory i wyeksportować do pliku CSV użytkowników posiadających określone wartości atrybutów, na przykład numer telefonu.

Poniższy skrypt wyszuka w Active Directory i wyeksportuje do pliku "C:\output.csv" wszystkie kontakty i użytkowników, którzy w numerze telefonu mają wartość "12345". Skrypt można w prosty sposób zmodyfikować, aby wyszukiwał na podstawie innych pól. W tym celu w linii oznaczonej (*4) należy zmodyfikować zapytanie LDAP podając odpowiednią nazwę atrybutu z Active Directory.

Jak uruchomić skrypt we własnym środowisku?

Poniższy skrypt należy zapisać w pliku o dowolnej nazwie z rozszerzeniem .VBS. Nie musi on być zapisany bezpośrednio na komputerze z serwerem Exchange, wystarczy jeśli będzie to stacja kliencka należąca do Active Directory. Po uruchomieniu pliku ze skryptem wygenerowany zostanie na dysku C: plik wynikowy o nazwie output.csv (wartości pól będą rozdzielone znakiem | strumienia, jeśli wartość pola składa się z kilku innych wartości, np. kilka aliasów, będą one rozdzielone znakiem #). Dla każdego kontaktu lub użytkownika skrypt eksportuje do pliku wynikowego pola Active Directory: givenName, sn, mail- czyli odpowiednio: imię, nazwisko, główny adres SMTP.

W linii oznaczonej (*0) należy wpisać cały lub część numeru poszukiwanego telefonu. W linii (*1) nazwę domeny, z której mają zostać wyeksportowane skrzynki (przykład jest dla domeny codetwo.com). Jeśli chcemy wyeksportować inne albo dodatkowe pola Active Directory, należy wypisać je odpowiednio rozdzielając przecinkami w linii oznaczonej (*2). Jeśli chcemy wyeksportować dane do pliku innego niż c:\output.csv, jego ścieżkę należy podać w linii oznaczonej (*3). Aby wyszukiwać po innych polach niż numer telefonu, należy zmodyfikować zapytanie LDAP (linia (*4)) podając odpowiednią nazwę atrybutu z Active Directory.

' Phone Number
strPhone = "12345" '(*0)

' Domain
strDomain = "DC=codetwo,DC=com"  '(*1)

' LDAP fields
strLdapFields = "givenName,sn,mail"  '(*2)

' Output path
strOutputPath = "C:\output.csv"  '(*3)

' LDAP query string
strLdapQuery = "(&(objectClass=User)(telephoneNumber=*" & strPhone & "*))"  ' (*4)


Set con = WScript.CreateObject("ADODB.Connection")
Set rs = WScript.CreateObject("ADODB.Recordset")
Set Com = WScript.CreateObject("ADODB.Command")

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set file = fso.CreateTextFile(strOutputPath, True)
    
' Open a Connection object.
con.Provider = "ADsDSOObject"
con.Properties("ADSI Flag") = 1
'con.Properties("User ID") = strDomain + "\" + strUserID
'con.Properties("Password") = strPassword
con.Open "Active Directory Provider"
    
' Create a command object on this connection.
Set Com.ActiveConnection = con

' Set the query string.
Com.CommandText = "<LDAP://" & strDomain & ">;" & strLdapQuery & ";" & strLdapFields & ";SubTree"
    
' Execute the query.
Set rs = Com.Execute

file.WriteLine Replace( strLdapFields, ",", "|" )

If Not rs.EOF Then
    ' Navigate the record set.
    rs.MoveFirst
    While Not rs.EOF
        strLine = ""

        For i = 0 To rs.Fields.Count - 1
            If rs.Fields(i).Type = 12 And Not (IsNull(rs.Fields(i).Value)) Then
                strValue = ""
                For j = LBound(rs.Fields(i).Value) To UBound(rs.Fields(i).Value)
                    vValue = rs.Fields(i).Value
                    If j <> LBound(rs.Fields(i).Value) Then strValue = strValue & "#"
                    strValue = strValue & vValue(j)
                Next
            Else
                strValue = rs.Fields(i).Value
            End If

            If i <> 0 Then strLine = strLine & "|"
            If Not IsNull(strValue) Then strLine = strLine & strValue
        Next
        
        file.WriteLine strLine
        rs.MoveNext
    Wend
    
    rs.MoveLast
End If




Jeśli masz jakieś pytania lub komentarze dotyczące tego artykułu, napisz na forum.

(c) CodeTwo
Wszelkie prawa zastrzeżone. Artykuł ten nie może być kopiowany lub publikowany bez wyraźnej zgody autora.


Słowa kluczowe: Exchange Server 2000/2003, Small Business Server (SBS). Jak wyeksportować wszystkie skrzynki serwera Exchange do pliku CSV lub tekstowego. Eksport informacji o skrzynkach z Active Directory. Jak stworzyć listę wszystkich adresów proxy (alias, aliasów) użytkowników. Lista, adresy, aliasy. Skrypt do eksportu danych z Exchange Server do innego programu lub pliku.