2011-12-19 12 views
5

Ho il seguente script .VBS, che funziona, ma restituisce solo le prime ± 100 (97) righe di dati. Come ottengo l'elenco completo?Come ottenere più di 97 righe da WMI?

On Error Resume Next 
strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set colItems = objWMIService.ExecQuery("Select * from Win32_PerfFormattedData_MSMQ_MSMQQueue",,48) 
For Each objItem in colItems 
    Wscript.Echo objItem.Name & " - " & objItem.MessagesinQueue 
Next 

risposta

4

Con un po 'googling ho trovato un post di Yoel Arnon (ricerca sul web dice che è un guru su MSMQ), The MSMQ WMI Provider. In esso afferma che i contatori delle prestazioni MSMQ hanno una limitazione che forniscono solo "le prime 97 code (locali e in uscita) nel computer".

Nello stesso post fornisce un collegamento a un nuovo provider WMI che ha sviluppato per superare questa limitazione più alcuni altri, nonché un indirizzo email per le informazioni di contatto. Il post ha tre anni ma il file è ancora disponibile per il download.

1

per realizzare ciò che si sta cercando, e la risposta da Daryn su MS specificamente l'annullamento dopo 97 voci, vorrei regolare il processo in dire ... 2 o 3 domande ...

Vostri criteri è alla ricerca per

Select * from Win32_PerfFormattedData_MSMQ_MSMQQueue 

cercare qualche modello dei dati che sta già riempiendo il vostro primo 97 che sarebbe inferiore al 97 ... come

Select * from Win32_PerfFormattedData_MSMQ_MSMQQueue 
    where SomeColumn = 'Some Common Value' 

poi fare un passaggio secondo con

Select * from Win32_PerfFormattedData_MSMQ_MSMQQueue 
    where NOT SomeColumn = 'Some Common Value' 

Ciò aiuterà ad arrivare ad un massimo di 194 voci ... Trovare un ulteriore elemento "comune" e romperlo in 3 passaggi, rispettivamente, e ciascuno potrebbe essere messo in proprio FOR/OGNI ciclo per popolare l'elenco echo all'utente.