guybrush 19 Geschrieben 4. Oktober 2007 Melden Teilen Geschrieben 4. Oktober 2007 hallo, ich suche nach einer kleinen lösung, wie man die queue des exchangeservers (remote) auselesen kann. ich habe da 2 wege ins auge gefasst: entweder über windows scripting oder per c++/vb. jedoch hab ich bei beiden lösungen keinen ansatz. nun meine frage(n): gibt es da schon etwas auf dem markt und wenn nein, kann mir da jemand mal grundsätzlich was dazu sagen? vielleicht hat ja jemand schon erfahrung mit dem exchange sdk oder so danke! hannes Zitieren Link zu diesem Kommentar
GuentherH 61 Geschrieben 4. Oktober 2007 Melden Teilen Geschrieben 4. Oktober 2007 Hi. Welche Queue willst du da auslesen ? LG Günther Zitieren Link zu diesem Kommentar
guybrush 19 Geschrieben 4. Oktober 2007 Autor Melden Teilen Geschrieben 4. Oktober 2007 die queue der ungesendeten nachrichten. ich dachte, da gibt es nur eine. anscheinend nicht ;-) welche queues gibt es im exchange sosnt noch? Zitieren Link zu diesem Kommentar
GuentherH 61 Geschrieben 4. Oktober 2007 Melden Teilen Geschrieben 4. Oktober 2007 Hi. Wie wäre es mit einer einfachen Freigabe des Pickup Verzeichnisses ? LG Günther Zitieren Link zu diesem Kommentar
guybrush 19 Geschrieben 4. Oktober 2007 Autor Melden Teilen Geschrieben 4. Oktober 2007 wo liegt das verz. genau? ich hab jetzt mal nachgeschaut, das pickup verzeichnis ist leer, obwohl es die mailqueue nicht ist... Zitieren Link zu diesem Kommentar
woiza 10 Geschrieben 5. Oktober 2007 Melden Teilen Geschrieben 5. Oktober 2007 Hi, du kannst das über WMI abfragen. Ich hab da mal was gebastelt, mal sehen, ob ich es finde, dann stell ich es rein. Zitieren Link zu diesem Kommentar
guybrush 19 Geschrieben 5. Oktober 2007 Autor Melden Teilen Geschrieben 5. Oktober 2007 das wär natürlich fein von dir... würdest mir sicher einiges an arbeit und zeit sparen Zitieren Link zu diesem Kommentar
woiza 10 Geschrieben 5. Oktober 2007 Melden Teilen Geschrieben 5. Oktober 2007 So, habs gefunden. Es ist in ein hta eingebettet. Da ich nicht weiß, welcher Teil interessant für diech ist, hau ich alles rein. <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>HTA Queue Viewer</title> <script language="vbscript"> <!-- Startup Script, befüllt die Combobox --> Dim iTimerID Sub Window_Onload Dim objRootDSE, objConfNC Dim strSearchBase, strFilter,strAttrs,strScope Dim objConn, objRS Dim objSelectOption set objRootDSE = GetObject("LDAP://RootDSE") objConfNC = objRootDSE.get("configurationnamingcontext") strSearchBase = "<LDAP://cn=microsoft exchange,cn=services," & objConfNC &">;" strFilter = "(objectCategory=msExchExchangeServer);" strAttrs = "cn;" ' add more attributes here if desired strScope = "subtree" Set objConn = CreateObject("ADODB.Connection") objConn.Open "Provider=ADsDSOObject;" Set objRS = objConn.Execute(strSearchBase & strFilter & strAttrs & strScope) objRS.MoveFirst While Not objRS.EOF strLine = objRS.Fields(0).Value Set objSelectOption = document.createElement("OPTION") objSelectOption.Text = strLine objSelectOption.Value = strLine ExchangeChooser.Add(objSelectOption) objRS.MoveNext Wend End Sub Zitieren Link zu diesem Kommentar
woiza 10 Geschrieben 5. Oktober 2007 Melden Teilen Geschrieben 5. Oktober 2007 Und weiter gehts: Function checkviewOption For Each selOption in viewOption If selOption.Checked Then checkviewOption = selOption.Value End If Next End Function Sub ChangeExch Dim myValue, exOption, out, myViewOption myValue = ExchangeChooser.Value 'Datum out = Time & "<br><br>" 'Radiobutton auswerten myViewOption = checkviewOption If myValue = "all_Servers" Then 'mache alle Server durch For Each exOption In ExchangeChooser.Options 'all_servers ausfiltern If exOption.Value <> "all_Servers" Then out = out & createOutput (myViewOption,exOption.Value) & "<br>" End If Next Else 'ausgewählter Server out = out & createOutput (myViewOption, myValue) End if document.all.output.innerHTML = out End Sub Function createOutput(selectedOption, server) Dim temp 'Servername temp = "<H3>" & server & "</H3>" If selectedOption = "Queues" Then createOutput = temp & createQueueTable (server) ElseIf selectedOption = "Categorizer" Then createOutput = temp & createCategorizerOutput (server) Else temp = createCategorizerOutput (server) createOutput = temp & createQueueTable (server) End If End Function Zitieren Link zu diesem Kommentar
woiza 10 Geschrieben 5. Oktober 2007 Melden Teilen Geschrieben 5. Oktober 2007 Da ist jetzt der WMI Aufruf drin: Function createQueueTable(Servername) Dim tempOut On Error Resume Next 'WMI Funktion strComputer = servername UserName = "" Password = "" Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator") Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\MicrosoftExchangeV2",UserName,Password) Set colItems = objWMIService.ExecQuery("Select * from Exchange_Queue",,48) ' Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\cimv2",UserName,Password) ' Set colItems = objWMIService.ExecQuery("Select * From Win32_PerfRawData_MSMQ_MSMQQueue",,48) 'Tabelle starten tempOut = tempOut & "<table border=""1""><thead><tr>" & "<th>ProtocolName</th><th>QueueName</th>" tempOut = tempOut & "<th>QueueId</th>" & "<th>MsgCount</th>" & "<th>Size</th>" tempOut = tempOut & "<th>LinkName</th>" & "<th>LinkId</th></thead>" tempOut = tempOut & "<tbody>" For Each objItem in colItems tempOut = tempOut & "<tr><td>" & objItem.ProtocolName & "</td>" tempOut = tempOut & "<td>" & objItem.QueueName & "</td>" tempOut = tempOut & "<td><font size=""-2"">" & objItem.QueueId & "</font></td>" tempOut = tempOut & "<td>" & objItem.MessageCount & "</td>" tempOut = tempOut & "<td>" & objItem.Size & "</td>" tempOut = tempOut & "<td>" & objItem.LinkName & "</td>" tempOut = tempOut & "<td><font size=""-2"">" & objItem.LinkId & "</font></td>" tempOut = tempOut & "</tr>" Next tempOut = tempOut & "</tbody></table>" On Error Goto 0 'Return Value createQueueTable = tempOut End Function Zitieren Link zu diesem Kommentar
woiza 10 Geschrieben 5. Oktober 2007 Melden Teilen Geschrieben 5. Oktober 2007 Und hier der restliche Skriptteil: Function createCategorizerOutput(Servername) Dim tempOut On Error Resume Next 'WMI Funktion strComputer = servername UserName = "" Password = "" 'start Table tempOut = "<table border=""1""><thead><tr><th>Name</th><th>Queue Length</th>" tempOut = tempOut & "<th>Msgs. submitted</th></tr></thead><tbody>" Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator") Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password) Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfFormattedData_SMTPSVC_SMTPServer",,48) tempOut = tempOut & "<b>Categorizer</b><br>" For Each objItem In colItems tempOut = tempOut & "<tr>" tempOut = tempOut & "<td>" & objItem.Name & "</td>" tempOut = tempOut & "<td>" & objItem.CategorizerQueueLength & "</td>" tempOut = tempOut & "<td>" & objItem.CatMessagessubmitted & "</td>" tempOut = tempOut & "</tr>" Next On Error Goto 0 'Tabelle schließen tempOut = tempOut & "</tbody></table><br>" 'Return Value createCategorizerOutput = tempOut End Function Sub changeRefresh If isRefresh.Checked Then iTimerID = window.setInterval("ChangeExch", Intervall.Value * 1000, "VBScript") refresh.disabled = True Else window.clearInterval iTimerID refresh.disabled = False End If End Sub Zitieren Link zu diesem Kommentar
woiza 10 Geschrieben 5. Oktober 2007 Melden Teilen Geschrieben 5. Oktober 2007 Fehlt noch der html-Code </script> <hta:application applicationname="HTA Queue Viewer" borderstyle="normal" caption="yes" contextmenu="no" icon="myicon.ico" maximizebutton="yes" minimizebutton="yes" navigable="no" scroll="yes" selection="yes" showintaskbar="yes" singleinstance="yes" sysmenu="yes" version="1.0" windowstate="normal" > </head> <body bgcolor="#2557AD" text="#FFFFFF"> <table> <tr> <td width="190"> <H3>HTA Queue Viewer</H3> </select> </td> <td width="150"> <select size="1" name="ExchangeChooser" onChange="ChangeExch"> <option value="all_Servers">all Servers</option> </td> <td width="180"> <input type="radio" name="viewOption" value="Queues">view Queues<BR> <input type="radio" name="viewOption" value="Categorizer">view Categorizer<BR> <input type="radio" name="viewOption" value="Both" checked="true">view Both </td> <td width="150"> <input type="text" name="Intervall" value="10" size="5"> <input type="checkbox" name="isRefresh" onClick="changeRefresh">Timer </td> </tr> </table> <INPUT TYPE="button" NAME="Refresh" VALUE="Refresh" onclick="ChangeExch"><BR> <br> <span id="output"> </span> </body> </html> Falls du Fragen hast, her damit. Zitieren Link zu diesem Kommentar
guybrush 19 Geschrieben 5. Oktober 2007 Autor Melden Teilen Geschrieben 5. Oktober 2007 WOW! jetzt ärgert es mich um so mehr, dass ich weg muss und keine zeit mehr habe! vielen dank für den code, ich werd mir den mal in einer ruhigen minute zu gemüte führen ein schönes wochenende mfg hannes Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.