Como obter memória máxima da máquina virtual usando o WMI?

1

Em uma máquina virtual Windows 2012 R2 em execução no Hyper-V, o Gerenciador de Tarefas tem a capacidade de exibir a memória máxima de uma máquina virtual quando a máquina virtual estiver usando memória dinâmica, como mostrado na captura de tela abaixo.

Eu tentei navegar pelas seguintes classes, mas não consigo encontrar o que preciso:

  • Win32_OperatingSystem (TotalVisibleMemorySize mostra apenas o que a VM consumiu até agora - não o que é o máximo)
  • Win32_PhysicalMemory
  • Win32_PhysicalMemoryArray
  • Win32_ComputerSystem (TotalPhysicalMemory reporta o mesmo que TotalVisibleMemorySize acima - ou seja, o primeiro dos valores de memória confirmados)

É possível consultar programaticamente usando o WMI ou o Registro para obter esse valor de Memória Máxima de dentro da própria máquina virtual?

    
por KeyszerS 10.09.2015 / 12:36

1 resposta

0

Sistemas operacionais modernos (Windows 8/2012 e mais recentes) incluem uma classe chamada Win32_PerfRawData_Counters_HyperVDynamicMemoryIntegrationService no namespace root \ cimv2

Esta classe tem uma propriedade chamada MaximumMemoryMBytes que mostra a memória máxima, também vista no Windows 2012 e acima dos gerenciadores de tarefas.

Exemplo de código do VBScript:

Set objWMIService = GetObject("winmgmts:\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PerfRawData_Counters_HyperVDynamicMemoryIntegrationService",,48)
For Each Item in colItems
    Wscript.Echo "Maximum memory in Megabytes  " & Item.MaximumMemoryMbytes
Next

Exemplo de código do Powershell:

Get-WmiObject -namespace root\cimv2 -class Win32_PerfRawData_Counters_HyperVDynamicMemoryIntegrationService | Select-Object MaximumMemoryMBytes

Esta classe não existe no Windows 2008 R2 / Windows 7 ou sistemas operacionais anteriores.

Mais informações sobre essa classe podem ser encontradas aqui

    
por 16.09.2015 / 11:22