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