' Code: Dmitry Stremkouski ' Date: 17.11.2006 ' License: GPL ' Usage: objectURL PostmasterLogin PostmasterPassword ' example: ' cscript //nologo ListEmailsForFolder.vbs http://ex-2/exchange/testuser/Inbox/ superv1sor myPassw0rd ' note: ' ex-2 must be Exchange server, ex-2 must contain testuser's mailbox. ' superv1sor ought have access rights to testuser's mailbox ' Get command line arguments. Dim obArgs Dim cArgs Set obArgs = WScript.Arguments cArgs = obArgs.Count Main Sub Main() ' On Error Resume Next sUrl = obArgs.Item(0) ListIt(sUrl) End Sub Public Function isodateit(datetocon) strDateTime = year(datetocon) & "-" if (Month(datetocon) < 10) then strDateTime = strDateTime & "0" strDateTime = strDateTime & Month(datetocon) & "-" if (Day(datetocon) < 10) then strDateTime = strDateTime & "0" strDateTime = strDateTime & Day(datetocon) & "T" & formatdatetime(datetocon,4) & ":00Z" isodateit = strDateTime end function Public Sub ListIt(sUrl) Dim oXMLHttp Dim oXMLDoc Dim oXMLHREFNodes Dim oXMLHasSubsNodes Dim sQuery Set oXMLHttp = CreateObject("Microsoft.xmlhttp") If Err.Number <> 0 Then WScript.Echo "Error Creating XML object" WScript.Echo Err.Number & ": " & Err.Description Set oXMLHttp = Nothing End If ' Open DAV connection. oXMLHttp.open "SEARCH", sUrl, False, obArgs.Item(1), obArgs.Item(2) If Err.Number <> 0 Then WScript.Echo "Error opening DAV connection" WScript.Echo Err.Number & ": " & Err.Description Set oXMLHttp = Nothing End If ' Set up query. sQuery = "" sQuery = sQuery & "" sQuery = sQuery & "" sQuery = sQuery & "SELECT ""DAV:displayname"", ""DAV:href"", ""urn:schemas:httpmail:datereceived"" " sQuery = sQuery & " FROM SCOPE('shallow traversal of """ & sURL & """')" sQuery = sQuery & " WHERE " sQuery = sQuery & """urn:schemas:httpmail:datereceived"" < CAST(""2006-11-27T00:00:00Z"" as 'dateTime') " sQuery = sQuery & " AND ""DAV:isfolder"" = False" sQuery = sQuery & " AND ""DAV:ishidden"" = False" sQuery = sQuery & " ORDER BY ""urn:schemas:httpmail:datereceived"" DESC" sQuery = sQuery & "" sQuery = sQuery & "" ' WScript.Echo isodateit(now()-31) ' Set request headers. oXMLHttp.setRequestHeader "Content-Type", "text/xml" oXMLHttp.setRequestHeader "Translate", "f" oXMLHttp.setRequestHeader "Depth", "0" oXMLHttp.setRequestHeader "Content-Length", "" & Len(sQuery) ' Send request. oXMLHttp.send sQuery If Err.Number <> 0 Then WScript.Echo "Error Sending Query" WScript.Echo Err.Number & ": " & Err.Description Set oXMLHttp = Nothing End If ' Load XML. Set oXMLDoc = oXMLHttp.responseXML 'WScript.Echo oXMLDoc.Text Set fs = CreateObject("Scripting.FileSystemObject") Set oFile = fs.CreateTextFile("c:\temp\testarea\leff.log", True) oFile.Write(oXMLDoc.XML) oFile.Close Set oXMLHREFNodes = oXMLDoc.getElementsByTagName("a:displayname") Set oRecord = oXMLDoc.getElementsbyTagName("d:datereceived") ' for DAV:href if nessesary could be accessed by ("a:href"), not now. WScript.Echo "For URL: [" & sUrl & "]" WScript.Echo ' Loop through the nodes. For iM = 0 to oRecord.Length - 1 WScript.Echo "Name: [" & oXMLHREFNodes.Item(iM).nodeTypedValue & "]" WScript.Echo "Date: [" & oRecord.Item(iM).nodeTypedValue & "]" Next WScript.Echo WScript.Echo "~~~~~~~~~~~~~~" WScript.Echo "Total found: " & oRecord.Length ' Clean up. Set oXMLDoc = Nothing Set oXMLHttp = Nothing End Sub