我一直在整理一个非常简单的脚本来监控我们的终端服务器场使用的某些方面,并实现了一个部分,我在一个给定时间点检查服务器上的内存使用情况.以下是我使用的特定部分:
<#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 / 1GB)更改为
($_.SysMem.TotalVisibleMemorySize / 1MB)
它输出:
Win10Test has 1.1 GB free space out of 3.8 GB total available memory
哪个是对的.但我觉得我此刻正在服用疯狂的药片.我在这里遗漏了一些简单的东西来解释为什么这些只返回转换为MEGABYTES内存的值,而不是我在系统上的实际GIGABYTES内存?
我试过运行这个脚本:
> Windows 8.1
> Windows 10(技术预览版)
> Windows Server 2012 R2
总是一样的结果.
根据
Win32_OperatingSystem class on MSDN:
原文链接:https://www.f2er.com/windows/367231.htmlTotalVisibleMemorySize
Data type: uint64
Access type: Read-only
Total amount,in kilobytes,of physical memory available to the operating system.
当然,FreePhysicalMemory也是如此.
在PowerShell中除以1GB相当于除以1073741824(或1024 * 1024 * 1024).因此,需要以字节为单位表示内存量,以便除以1GB以返回GB的RAM量.
由于TotalVisibleMemorySize以千字节为单位,因此您可以通过以下方式转换为GB:
TotalVisibleMemorySize/1MB
要么
TotalVisibleMemorySize*1024/1GB