Eksport kontaktów z Active Directory

Posted: 29 grudnia 2010 in IT
Tagi: , , , ,

Pracując w domenie może zajść potrzeba wyeksportowania kontaktów do pliku, możemy to bardzo łatwo wykonać za pomocą skryptu VBS

‚ 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 = „;” & 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

Skrypt ze strony outlook.pl

Powyższy skrypt możemy lekko zmodyfikować będzie nam pomocne przy tym narzędzie AD explorer

Export kontaktów z Active Directory

Dzięki temu narzędziu będziemy mogli odpowiednio zmodyfikować skrypt w taki sposób żebyśmy mogli przeszukiwać LDAP zamiast po numerze telefonu to po imieniu bądź inicjałach

‚ Phone Number
strInitials = „bn” ‚(*0)

‚ Domain
strDomain = „moja,DC=domena” ‚(*1)

‚ LDAP fields
strLdapFields = „givenName,sn,mail” ‚(*2)

‚ Output path
strOutputPath = „C:\output.csv” ‚(*3)

‚ LDAP query string
strLdapQuery = „(&(objectClass=User)(initials=*” & strInitials & „*))” ‚ (*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 = „;” & 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

Po chwili od uruchomienia skryptu mamy interesujące nas kontakty w pliku output.csv

Reklamy
Komentarze
  1. domeny pisze:

    Thank you your this usable topic!!! I will be back here soon.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s