понедельник, 6 сентября 2010 г.

PowerCLI: сколько всего памяти выделено машинам?

Встала передо мной задача - посчитать сколько памяти выделено репликам машинам на удаленном кластере и дозаказать памяти в серверы. Можно это сделать вручную, но скучно.

Как обычно, делать веселее с PowerShell :)

$Mem = 0;
Get-Cluster "Remote Cluster" | Get-VM | Get-View |`
  %{ $Mem += $_.Config.Hardware.MemoryMB }
$Mem

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

$Mem = 0;
Get-Folder "Infrastructure" | Get-VM | Get-View |`
  %{ $Mem += $_.Config.Hardware.MemoryMB }
$Mem

Или даже посчитать количество памяти для машин с именем, начинающимся на linux:

$Mem = 0;
Get-VM linux* | Get-View |`
  %{ $Mem += $_.Config.Hardware.MemoryMB }
$Mem

Прекрасно, мы теперь знаем, сколько памяти нужно машинам. Но память машин считается в мегабайтах, а нам нужны гигабайты. Можно взять калькулятор и поделить, но зачем? Мы же можем сделать это прямо здесь.

$Mem / 1024

Но красивее делать это так:

$Mem / 1kb

Существуют предопределенные значения kb, mb, gb и tb, содержащие количество байт в "настоящих", а не "коммерческих", гигабайтах. Если с килобайтами все просто, 1024 байта, то мне так и не удалось запомнить наизусть сколько байт в гигабайте.

И все равно немного неаккуратненько. Зачем нам 6 цифр после запятой? Отформатируем вывод.

"{0:N2}" -f ($Mem / 1kb)

Комментариев нет:

Отправить комментарий