Назад | Перейти на главную страницу

Win32_OperatingSystem.FreePhysicalMemory и $ _. TotalVisibleMemory дают вывод в неправильных единицах

Я собрал довольно простой скрипт для мониторинга некоторых аспектов использования нашей фермы терминальных серверов и реализую раздел, в котором я проверяю использование памяти на серверах в определенный момент времени. Вот конкретный раздел, который я использую для этого:

<#Modified to troubleshoot this particular section; defined $TermSvr and pipe output directly to   
host:#>
$RemoteSvr = "Win10Test"

#Check current Memory Usage and Available Space
$SysMem = Get-WmiObject Win32_OperatingSystem -ComputerName $RemoteSvr
"$RemoteSvr has {0:#.0} GB free space out of {1:#.0} GB total available memory" -f   
($SysMem.FreePhysicalMemory/1GB),    
($SysMem.TotalVisibleMemorySize/1GB) | Write-Host

Это выводит:

Win10Test has **.0** GB free space out of **.0** GB total available memory

Но; когда я изменяю ($ _. SysMem.TotalVisibleMemorySize /1 ГБ) в ($ _. SysMem.TotalVisibleMemorySize /1 МБ)

Он выводит:

Win10Test has 1.1 GB free space out of 3.8 GB total available memory

Что правильно. Но я чувствую, что сейчас принимаю сумасшедшие таблетки. Мне здесь не хватает чего-то простого, чтобы объяснить, почему они возвращают только значение, которое переводится в МЕГАБАЙТЫ памяти, а не на фактические ГИГАБАЙТЫ памяти, которые у меня есть в системах?

Я пробовал запустить этот скрипт против:

Всегда один и тот же результат.

В соответствии с Win32_OperatingSystem класс в MSDN:

TotalVisibleMemorySize
Тип данных: uint64
Тип доступа: только чтение
Общая сумма, в килобайтахфизической памяти, доступной операционной системе.

Конечно, то же самое верно и для FreePhysicalMemory.

Деление на 1GB в PowerShell - это эквивалент деления на 1073741824 (или 1024*1024*1024). Следовательно, объем памяти должен быть выражен в байты чтобы деление на 1ГБ возвращало количество ОЗУ в ГБ.

поскольку TotalVisibleMemorySize в килобайтах, вы можете преобразовать в ГБ следующим образом:

TotalVisibleMemorySize/1MB

или

TotalVisibleMemorySize*1024/1GB