Microsoft Outlook troubleshooting
Wyszukanie w Active Directory użytkowników Exchange z włączonym OWA

Wyszukanie w Active Directory użytkowników Exchange z włączonym OWA

autor CodeTwo 2008-03-11 00:00:00 w Exchange Server

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.