Найти в Дзене

Invoke-VMScript: узнать процент загрузки памяти и процессора на удаленной ВМ

Бывает так, что пользователь начинает жаловаться, что у него все тормозит и невозможно работать, но доступ на его виртуальную машину по RDP или иного способа подключиться и посмотреть у вас нет, а в самой виртуализации по метрикам проблемы с памятью и процессором не наблюдается, тогда вам придет на помощь команда Invoke-VMScript входящая в состав PowerCli. Основные условия для срабатывания скрипта является: 1. У вас должен быть установлен компонент PowerCli. 2. машина на которой вы хотите выполнить запрос должна быть или в домене (авторизация все равно должна проходить под доменной учетной записью) или вы должны знать логин и пароль пользователя, даже если у него нет разрешения на подключение к удаленному рабочему столу. 3. Виртуальная машина, на которой нужно запустить скрипт, под управлением ОС Windows. 4. На виртуальной машине должны быть установлены vmtools (запрос идет через данный компонент). 5. PowerCli должен быть подключен к вашему vCenter (Connect-VIServer <адрес вцентра>).

Бывает так, что пользователь начинает жаловаться, что у него все тормозит и невозможно работать, но доступ на его виртуальную машину по RDP или иного способа подключиться и посмотреть у вас нет, а в самой виртуализации по метрикам проблемы с памятью и процессором не наблюдается, тогда вам придет на помощь команда Invoke-VMScript входящая в состав PowerCli.

Основные условия для срабатывания скрипта является:

1. У вас должен быть установлен компонент PowerCli.

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

3. Виртуальная машина, на которой нужно запустить скрипт, под управлением ОС Windows.

4. На виртуальной машине должны быть установлены vmtools (запрос идет через данный компонент).

5. PowerCli должен быть подключен к вашему vCenter (Connect-VIServer <адрес вцентра>).

Сам скрипт:

# Тело запроса для Powershell
$script = '$name = $env:computername
Write-Host "PC name: $name"
$usedMemory = Get-WmiObject -Class Win32_OperatingSystem
$totalMemory = $usedMemory.TotalVisibleMemorySize
$freeMemory = $usedMemory.FreePhysicalMemory
$usedMemoryPercentage = ($totalMemory - $freeMemory) / $totalMemory * 100
$NewUsedMemoryPercentage = "{0:N0}" -f $usedMemoryPercentage
Write-Host "Used Memory Percentage: $NewUsedMemoryPercentage%"
$usedCPU = Get-CimInstance -ClassName Win32_Processor
$usedCPUPercentage = $usedCPU.LoadPercentage
Write-Host "Used CPU Percentage: $usedCPUPercentage%"'
# Авторизация на удаленном терминале
$guestCredential = Get-Credential
# Запрос, вместо nameVM указывается имя виртуальной машины как она называется в вцентре
Invoke-VMScript -ScriptText $script -VM nameVM -GuestCredential $guestCredential -ScriptType Powershell | Select -ExpandProperty ScriptOutput

В результате вы должны получить имя виртуальной машины и показатели загруженности памяти и процессора в процентах.

Еще хотелось бы отметить, что с помощью команды Invoke-VMScript можно узнать не только про показатели нагрузки но также запускать на удаленных виртуальных машинах любые команды и скрипты для Powershell и CMD .