PowerShell · 15.09.2023

Мониторинг памяти

Скрипт для мониторинга нагрузки на оперативную память удалённого хоста. Был написан и применялся для опроса виртуального сервера на предмет необходимости повышения ресурсов системы.

Сразу после запуска скрипт спрашивает имя удалённого хоста, подключается к нему и возвращает в консоль текущие дату-время, общий объем ОЗУ и её свободный ресурс. Само собой эти данные пишутся в текстовый файл, который будет создан рядом со скриптом.

Опрос осуществляется с помощью wmi и ответ удалённая система даст мгновенно, даже при условии практически полной загруженности ресурса оперативной памяти.

[System.Console]::Title = "Потребление оперативной памяти удалённым хостом"
$servername = Read-Host "Имя удалённого хоста"
[System.Console]::Title = "Потребление оперативной памяти $servername"

$logfile = "$servername-ramlog.txt"

clear

try { $test=Get-WmiObject -ComputerName $servername Win32_OperatingSystem -ErrorAction Ignore }
catch { $test=$null }

if($test -ne $null)
{
  while($true)
  {
    $datetime = Get-Date -format "dd-MM-yyyy HH:mm:ss"
    $total = Get-WmiObject -ComputerName $servername Win32_OperatingSystem | select -ExpandProperty TotalVisibleMemorySize
    $free = Get-WmiObject -ComputerName $servername Win32_OperatingSystem | select -ExpandProperty FreePhysicalMemory
    $totalgb = [math]::round($total/1MB,0)
    $freegb = [math]::round($free/1MB,1)
    $outdata = "$datetime | Всего: $totalgb Гб | Свободно: $freegb Гб" 
    $outdata | Out-File -FilePath $logfile -Append
    Write-Host "$outdata" -ForegroundColor Cyan
    Sleep(5)
  }
}
else { Write-Host "Ошибка доступа к $servername" -ForegroundColor Red; Read-Host }

Обратите внимание на команду Sleep(5), которая отправляет цикл в сон на пять секунд. Можете установить любое приемлемое для ваших целей значение.