2009-03-29 4 views
0

Я унаследовал кусок кода из недавно вышедших на пенсию коллеги, который получает общую физическую память на коробке и, когда я выполнить следующие действия на Windows XP и Server 2003, она отлично работает:висячие VBScript по запросу

memSize = 0 
set colItems = wmi.execQuery("select * from Win32_LogicalMemoryConfiguration") 
for objItem in colItems 
    memSize = memSize + objItem.TotalPhysicalMemory 
next 

В Windows Server 2008, однако, он, похоже, зависает в операторе for (на основе сложных отчетов по отладке после каждой строки, которые не показаны в примере).

Любые идеи, почему?

+0

Кстати, вы можете запустить VBScript в отладчике, если вы передадите // d // x в командной строке. – Tmdean

ответ

2

Класс Win32_LogicalMemoryConfiguration был устаревшим. Вместо этого попробуйте использовать класс Win32_OperatingSystem. Он должен дать правильные результаты на сервере 2008.

Я считаю, что недвижимость Вас интересует TotalVisibleMemorySize.

+0

Почему TotalVisibleMemorySize? Я пытаюсь вычислить реальную физическую RAM, которая, по-видимому, дает только оперативную память, доступную для Windows. Тем не менее, +1 для устаревания. Спасибо за это. – paxdiablo

+0

@ Angry, я нашел правильное значение в конце концов (некоторое время назад мне потребовалось некоторое время, чтобы вернуться к этому вопросу), и, поскольку это был ваш комментарий к устареванию, который привел меня к этому (ну, это и тот факт, еще один потрудился ответить, я приму этот ответ :-). Благодарю. – paxdiablo