В консоли SCVMM 2008 R2 на закладке Hosts можно видеть текущую версию компонент виртуализации если включить отображение колонки Virtualization Software Version, чего не скажешь об уровне виртуальных машин, где визуально с помощью этой консоли определить то какая версия компонент интеграции установлена внутри виртуальных машин не представляется возможным. Для того чтобы попытаться получить данную информацию в сводном виде воспользуемся советом от Peter Noorderijk из заметки Hyper-v.nu - How to check the version of the Integration Components. Скрипт взят за основу, и немного расширен, а именно:
- Добавлена загрузка PSSnapin VMM (на тот случай если скрипт выполняется не на сервере VMM)
- Информация о хостах виртуализации берётся не из файла а из данных сервера VMM, к которому мы предварительно подключаемся.
- Виртуальные машины с версией компонент интеграции не соответствующей номеру, указанному в переменных, - выделяются красным цветом для облегчения визуального анализа
# Блок переменных
# $VMMSrv - Имя сервера SCVMM на котором будут выбраны все хосты виртуализации и их VM для анализа
# $ICCurrentVer - Текущая версия компонент интеграции которая должна быть установлена на VM
#
$VMMSrv = "KOM-SCVMM.holding.com"
$ICCurrentVer = "6.1.7601.17514"
#
# Подгружаем оснастку PS VMM для работы с объектами SCVMM
#
$VMMMod = "Microsoft.SystemCenter.VirtualMachineManager"
If ((Get-PSSnapin -Name $VMMMod -ErrorAction SilentlyContinue) -eq $null)
{
Add-PSSnapin $VMMMod
}
#
# Функция получения и вывода сведений о компонентах интеграции на VM определённого хоста
#
Function Get-IntegrationServicesVersion ($HVhost = $(Throw "HVHost required"))
{
$kvps = Get-WmiObject -Namespace rootvirtualization `
-ComputerName $HVHost `
-Query "Select GuestIntrinsicExchangeItems From Msvm_KvpExchangeComponent"
Foreach ($kvp in $kvps)
{
$vmkvp = $Kvp.GuestIntrinsicExchangeItems
$VMICvArray = $vmkvp | Select-Object `
@{Label="VMName";Expression={([xml]$vmkvp[0]).instance.property[1].value}},`
@{Label="ICVersion";Expression={([xml]$vmkvp[14]).instance.property[1].value}} -first 1
Foreach ($VMICv in $VMICvArray)
{
If ($ICCurrentVer -ne $VMICv.ICVersion) {
Write-Host "IC ver.: " $VMICv.ICVersion " on " $VMICv.VMName -ForegroundColor Red
} Else {
Write-Host "IC ver.: " $VMICv.ICVersion " on " $VMICv.VMName
}
}
}
}
#
# Блок основного вывода
#
$VMHosts = Get-VMMServer -ComputerName $VMMSrv | Get-VMHost | Sort -Property "Name"
Foreach ($HVhost in $VMHosts) {
Write-Host "`nHyper-V Host: " $HVhost "`n" -ForegroundColor Green
Get-IntegrationServicesVersion $HVhost
}
Результат работы скрипта будет выглядеть примерно так:
Примечание:
Скрипт не выводит информацию о виртуальных машинах, которые находятся в выключенном состоянии.
Вы издеваетесь?!
Где вы были всего несколько дней назад... Я так долго искал рабочий плагин, что пришлось делать самому :)
http://bafff.ru/blog/?p=2974