ターミナルサーバーファームの使用状況のいくつかの側面を監視するための非常に単純なスクリプトをまとめ、特定の時点でのサーバーのメモリ使用量を確認するセクションを実装しています。これは私がそれを得るために使用している特定のセクションです:
<#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
どちらが正しい。しかし、私はこの時点でクレイジーな薬を飲んでいるような気がします。システムにある実際のメモリのギガバイトではなく、メモリのメガバイトに変換される値のみを返す理由を説明するために、ここで簡単なものが欠けていますか?
私はこのスクリプトを以下に対して実行しようとしました:
常に同じ結果。
MSDNのWin32_OperatingSystemクラスによれば :
TotalVisibleMemorySize
データ型:uint64
アクセスタイプ:読み取り専用
オペレーティングシステムで使用できる物理メモリの総量(キロバイト単位)。
もちろん、同じことがFreePhysicalMemory
にも当てはまります。
PowerShellでの1GB
による除算は、1073741824
(または1024*1024*1024
)による除算と同等です。したがって、1GBで除算してRAM GB単位)を返すには、メモリ量をバイトで表す必要があります。
TotalVisibleMemorySize
はキロバイト単位であるため、次の方法でGBに変換できます。
TotalVisibleMemorySize/1MB
または
TotalVisibleMemorySize*1024/1GB