Определяем размер выделенной памяти на компьютере из командной строки Windows, то есть в bat файле, скрипте и т.д.

Эта информация используется для мониторинга состояния компьютеров: перерасход памяти является признаком программных проблем или недостаточной аппаратной конфигурации компьютера и требует действий со стороны администратора.

Скрипт JScript (аналогично VBScript)

Скрипт использует WSH, WMI и Win32_PerfFormattedData_PerfOS_Memory class, делает выборку данных о счётчиках памяти и выводит чаще всего используемые параметры:

CommittedBytes
Amount of committed virtual memory, in bytes. Committed memory is physical memory for which space has been reserved on the disk paging file in case it must be written back to disk. This property displays the last observed value only; it is not an average.

CommitLimit
Amount of virtual memory, in bytes, that can be committed without having to extend the paging files. Committed memory is physical memory for which space has been reserved on the disk paging files. Each logical disk drive has one paging file. If the paging files are be expanded, the CommitLimit value increases accordingly. This property displays the last observed value only; it is not an average.

PercentCommittedBytesInUse
Ratio of memory bytes committed to the memory commit limit. Committed memory is physical memory in use for which space has been reserved in the paging file should it must be written to disk. The commit limit is determined by the size of the paging file. If the paging file is enlarged, the commit limit increases, and the ratio is reduced. The value is the current percentage value only; it is not an average.

var computer_name = "."; 
var wmi = GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\"+
    computer_name+"\\root\\cimv2");
var m = wmi.ExecQuery("select * from Win32_PerfFormattedData_PerfOS_Memory");

var e = new Enumerator(m);
WScript.Echo(e.item().CommittedBytes + 
    "/" + e.item().CommitLimit + 
    " " + e.item().PercentCommittedBytesInUse + "%");

Пример вывода cscript //nologo mem.js:

4866715648/12592377856 38%

Возможное использование и развитие скрипта:

  • проверка условия e.item().PercentCommittedBytesInUse > 85 и автоматическая подача предупреждения администратору
  • опрос в одном скрипте группы серверов (сетевое имя задаётся в переменной computer_name, значение «.» означает локальный компьютер) с проверкой размера (или процентовки) выделенной памяти и уведомлением администратора.

При желании можно переложить mem.js на VBScript, но можно и использовать подключение файлов скриптов JS/VBS через WSF.

Для использования mem.js в CMD его следует запускать как cscript //nologo mem.js

Этот и другие скрипты доступны для скачивания с Яндекс.Диска.

Команда systeminfo

Предустановленная программа systeminfo выводит информацию о памяти, не требуя скачиваний или подготовки скриптов:

C:\>systeminfo | find "память"
 Доступная физическая память:      784 МБ
 Виртуальная память: Макс. размер: 5 740 МБ
 Виртуальная память: Доступна:     1 218 МБ
 Виртуальная память: Используется: 4 522 МБ

Программа systeminfo локализованная, поэтому в русской версии надо фильтровать по слову «память», а в английской — по слову «memory».

И ещё, программа systeminfo не выводит показатель использования в процентах, поэтому делить 4 522 МБ или 1 218 МБ на 5 740 МБ придется вручную или дорабатывать скрипт / bat файл.

WMIC

Ещё один способ, позволяющий считать показатели по памяти.

В виде списка:

 C:>wmic OS get FreeVirtualMemory,TotalVirtualMemorySize /Value
 FreeVirtualMemory=1139828
 TotalVirtualMemorySize=5877920 

Те же данные, но в табличном виде:

 C:>wmic OS get FreeVirtualMemory,TotalVirtualMemorySize
 FreeVirtualMemory  TotalVirtualMemorySize
 1139828            5877920 

Также готового процентного соотношения нет, его придется вычислять дополнительно.

Какой вариант выбрать

Если задача состоит в проверке доступного размера памяти, проще использовать:

wmic OS get FreeVirtualMemory 

Если требуется процентное значение занятой или доступной памяти, удобнее использовать описанный выше скрипт mem.js:

script //nologo mem.js
Размер выделенной памяти в командной строке Windows
Метки:         

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *