Моніторинг завдань в VMM за допомогою змінної JobVariable.
Більшість завдань в Virtual Machine Manager набагато швидше виконувати з консолі PowerShell, однак при цьому неможливо відстежувати їх стан і прогрес виконання. Це не дуже зручно при виконанні тривалих за часом завдань, наприклад таких, як міграція чи створення віртуальних машин.
Справа в тому, що команди в VMM запускаються у фоновому режимі у вигляді фонового завдання (job), соответствено безпосередньо побачити процес виконання неможливо. Однак більшість командлетів мають параметр JobVariable, в який можна прописати ім'я змінної. У цю змінну буде поміщено завдання для виконання, і звертаючись до цієї змінної можна дізнатися його стан.
Для прикладу створимо невеликий скрипт, який буде створювати віртуальну машину і показувати процес виконання. Спочатку імпортуємо модуль VMM:
Import-Module virtualmachinemanager
Потім визначаємо сервер VMM, хост, на якому розміщуватиметься ВМ і шлях (папку) для розміщення її файлів:
$ VMMServer = Get-SCVMMServer "SRV2"
$ VMHost = Get-SCVMHost -ComputerName "SRV3"
$ VMPath = "E: \ VM"
Вводимо ім'я ВМ і шаблон, з якого вона буде розгорнута:
$ OSName = Read-Host "Enter OS name"
$ Template = Get-SCVMTemplate -Name $ OSName
$ VMName = Read-Host "Enter VM name"
Запускаємо створення нової ВМ, вказуючи змінну JobVariable з ім'ям NewVM:
$ CreateVM = New-SCVirtualMachine -Name $ VMName -Template $ Template -VMHost $ VMHost - Path $ VMPath -JobVariable "NewVM" -RunAsynchronously
І відстежуємо створення ВМ за допомогою командлета Write-Progress:
While ($ NewVM.status -eq "Running")
{
Write-Progress -Activity "VM creating ..." -Status $ NewVM.progress
Start-Sleep -Seconds 5
}
Об'єднуємо все в скрипт, запускаємо його і в результаті отримаємо приблизно таку картину.
Звичайно не так наочно, як з графічної оснащення, але досить інформативно.
.