
Eksport do pliku CSV kontaktów z Active Directory o określonym numerze telefonu
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 naszym forum.
(c) CodeTwo. Wszelkie prawa zastrzeżone.
© Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.