monitorando o disco i / o via wmi

3

Estou usando o WMI para monitorar hosts do Windows Server 2003 e do Windows Server 2008. Eu tenho todas as informações que queria, mas o desempenho de E / S do disco.

Eu tentei pesquisar o "Win32_PerfFormattedData_PerfDisk_LogicalDisk" para o "AvgDiskQueueLength", mas sempre recebo o resultado "sem chave".

O serviço WMI está sendo executado nos dois sistemas e eu posso me conectar a ele usando o wbemtest sem erros.

Eu perdi alguma coisa ou estou fazendo algo errado?

    
por Jorge 07.11.2011 / 19:25

1 resposta

1

AvgDiskQueueLength é uma propriedade da classe Win32_PerfFormattedData_PerfDisk_LogicalDisk. A menos que o resultado "sem chave" seja algo realmente funky, parece que você talvez esteja tentando acessá-lo errado. Deve ser simples notação de propriedade como

win32perf.AvgDiskQueueLength

O código a seguir deve funcionar.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colDisks = objRefresher.AddEnum _
    (objWMIService, "win32_perfformatteddata_perfdisk_physicaldisk"). _
        objectSet
objRefresher.Refresh
For Each objDisk in colDisks
        Wscript.Echo "Average Disk Queue Length: " & vbTab &  _
           objDisk.AvgDiskQueueLength
Next

A parte de atualização é realmente necessária apenas se você for fazer várias chamadas. Evita ter que executar o código GetObject repetidamente.

Você pode querer pesquisar um pouco o tamanho médio da fila de disco. Eu lembro de ter algo estranho sobre a maneira como é coletado ou relatado. Eu posso estar errado, mas pensei em mencioná-lo.

    
por 07.11.2011 / 20:36