
Wyszukanie w Active Directory użytkowników Exchange z włączonym OWA
Przedstawiony tu skrypt wyszukuje w całej domenie Active Directory użytkowników serwera Exchange 2000/2003, którzy mają włączoną obsługę protokołu Outlook Web Access (OWA). Wyniki zapisywane są w pliku w formacie CSV, który może zostać otwarty np. w Excel'u w celu łatwiejszego ich przeglądania.
Jak uruchomić skrypt we własnym środowisku?
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 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 użytkownika z włączonym OWA skrypt eksportuje do pliku wynikowego pola Active Directory: givenName, sn, mail, czyli odpowiednio: imię, nazwisko, główny adres SMTP.
W linii oznaczonej (*1) należy wpisać nazwę własnej domeny, przykład jest dla codetwo.com. Jeśli chcemy wyeksportować inne albo dodatkowe pola Active Directory, należy wypisać je odpowiednio rozdzielając przecinkami w linii oznaczonej (*2).
' Domain strDomain = "DC=codetwo,DC=com" '(*1) ' LDAP fields strLdapFields = "givenName,sn,mail,protocolSettings" '(*2) ' LDAP query string strLdapQuery = "(&(objectClass=User)(|(homeMDB=*)(msExchHomeServerName=*)))" ' Output file Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set file = fso.CreateTextFile("C:\output.csv", True) Set con = WScript.CreateObject("ADODB.Connection") Set rs = WScript.CreateObject("ADODB.Recordset") Set Com = WScript.CreateObject("ADODB.Command") ' 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 ' Header file.WriteLine Replace( strLdapFields, ",", "|" ) If Not rs.EOF Then ' Navigate the record set. rs.MoveFirst While Not rs.EOF strLine = "" bOWAEnabled = True For i = 0 To rs.Fields.Count - 1 If rs.Fields(i).Type = 12 And Not (IsNull(rs.Fields(i).Value)) Then strValue = "" vValue = rs.Fields(i).Value For j = LBound(rs.Fields(i).Value) To UBound(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 rs.Fields(i).Name = "protocolSettings" Then If InStr(strValue, "HTTP§0") > 0 Then bOWAEnabled = False Else If i <> 0 Then strLine = strLine & "|" If Not IsNull(strValue) Then strLine = strLine & strValue End If Next If bOWAEnabled Then file.WriteLine strLine End If 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.