|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » WMI - [решено] Запрос на колличество используемой RAM. |
|
|
WMI - [решено] Запрос на колличество используемой RAM.
|
Пользователь Сообщения: 126 |
Уважаемые друзья, в WMI опыта практически нет, поэтому обращаюсь к вам за помощью...
Помогите для системы мониторинга написать сценарий-запрос через WMI или Powershell на выдачу результата по используемой RAM (используемая память) в Mb. Использовал бы готовые значения по свободной RAM, но т.к. RAM динамическая, эти значения не несут требуемого смысла. Заранее спасибо! |
|
Отправлено: 13:34, 22-11-2015 |
Ветеран Сообщения: 1758
|
PowerShell:
Не проверялось в случае нескольких плашек памяти. |
Отправлено: 14:59, 22-11-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
Правильно ли я понимаю, что не зависимо от того, что динамическая память будет расти или наоборот уменьшаться, то значение USED все равно будет правильным? Выдает ошибку при сложении чисел: 'Свободно {0} Mb' -f $free Не удается преобразовать значение "System.Object[]" типа "System.Object[]" в тип "System.I nt32". строка:1 знак:1 + [int] $total += (gwmi win32_physicalmemory).capacity | foreach { $_ / 1mb } + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [], RuntimeException + FullyQualifiedErrorId : ConvertToFinalInvalidCastException Сбой вызова метода из-за отсутствия в [System.Object[]] метода с именем "op_Subtraction". строка:3 знак:1 + $used = $total - $free + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (op_Subtraction:String) [], RuntimeExcept ion + FullyQualifiedErrorId : MethodNotFound |
|
Последний раз редактировалось rudimko, 22-11-2015 в 15:22. Отправлено: 15:12, 22-11-2015 | #3 |
Ветеран Сообщения: 1758
|
rudimko, Виртуалка? Тогда посмотрите в сторону этих классов:
Win32_PerfFormattedData_BalancerStats_HyperVDynamicMemoryVM Win32_PerfRawData_BalancerStats_HyperVDynamicMemoryVM Win32_PerfFormattedData_Counters_HyperVDynamicMemoryIntegrationService Win32_PerfRawData_Counters_HyperVDynamicMemoryIntegrationService Сам этого сделать не могу (за отсутствием виртуальных машин) |
Отправлено: 15:37, 22-11-2015 | #4 |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
А этих каунтеров и классов на виртуалки у меня почему-то нет. |
||
Последний раз редактировалось rudimko, 22-11-2015 в 15:51. Отправлено: 15:43, 22-11-2015 | #5 |
Ветеран Сообщения: 1758
|
Цитата rudimko:
|
|
Отправлено: 15:57, 22-11-2015 | #6 |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
Отправлено: 16:06, 22-11-2015 | #7 |
Пользователь Сообщения: 126
|
Профиль | Отправить PM | Цитировать Спустя время обнаружилось:
Этот запрос покажет минимальную ОЗУ выделенную для запуска, в данном случае, виртуальной машины. Но если этот предел будет превышен и виртуальной машине будет выделено больше чем выделено за запуска, то этот запрос покажет тот же самый результат и раньше - минимальное кол-во ОЗУ, выделенное для запуска. =\ Следовательно и расчет, отталкиваясь от этого значения, будет неверным, к сожалению. =\ |
Отправлено: 14:43, 01-12-2015 | #8 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:22, 01-12-2015 | #9 |
Забанен Сообщения: 793
|
Как вариант, вкупе с Invoke-Command задействовать рефлексию:
$MEMORYSTATUSEX = ($$ = [Object].Assembly.GetType( 'Microsoft.Win32.Win32Native' )).GetNestedType( 'MEMORYSTATUSEX', [reflection.BindingFlags]36 ).GetConstructor( [Reflection.BindingFlags]36, $null, [Type[]]@(), $null ).Invoke($null) if ($$.GetMethod( 'GlobalMemoryStatusEx', [Reflection.BindingFlags]40 ).Invoke($null, @($MEMORYSTATUSEX))) { $MEMORYSTATUSEX.GetType().GetFields( [Reflection.BindingFlags]36 ) | ? {$_.Name -clike '*Phys'} | % { '{0} : {1:F2} Mb' -f $_.Name, ($_.GetValue($MEMORYSTATUSEX) / 1Mb) } } |
Отправлено: 16:05, 02-12-2015 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Ram-компьютер не запускаетcя при добавление 4 gb ram | zveroboy13 | Материнские платы и память | 9 | 19-12-2012 00:42 | |
CMD/BAT - [решено] Скопировать определенное колличество файлов | WoW | Скриптовые языки администрирования Windows | 1 | 02-01-2012 09:36 | |
[решено] Как влияет общее колличество установленных приложений на работу компьютера? | dima1981 | Хочу все знать | 22 | 29-05-2009 02:12 | |
Alg.exe колличество подключений | Oput | Microsoft Windows NT/2000/2003 | 0 | 27-09-2008 00:03 | |
колличество часов музыки в медиаплеере (№10) | Vlad Drakula | Программное обеспечение Windows | 9 | 20-12-2004 09:38 |
|