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

$vCenter = "localhost"
Connect-VIServer $vCenter 
$vhosts = Get-VMHost
foreach ($vhost in $vhosts) {
     $tag = $vhost.ExtensionData.Hardware.SystemInfo.OtherIdentifyingInfo | where {$_.IdentifierType.Key -eq "ServiceTag"}
     Write-Host $vhost.Name ---- $tag.identifierValue
 }

Однако, оказалось, что серийники выводятся всего к нескольким серверам. У остальных же , это поле пустое. Я перерыл много форумов и даже нашел обходное решение, путем опроса Web интерфейса ESXi серверов, когда случайно накнулся на решение проблемы с изначальным скриптом. Я не могу сказать «почему» и в чем именно проблема, но решение рабочее. Необходимо отключить и подключить сервера, не удаляя их из vCenter’а. Чучуть поправив скрип, это можно сделать автоматически. Виртуальные машины выключать не надо.

 

}

$vCenter = "localhost"
Connect-VIServer $vCenter 
$vhosts = Get-VMHost
foreach ($vhost in $vhosts) {
    if ($vhost.ExtensionData.Hardware.SystemInfo.OtherIdentifyingInfo -eq $null) {
       Set-VMHost -VMHost $vhost.Name -State Disconnected
       Set-VMHost -VMHost $vhost.Name -State Connected
       }
}

Следующий запуск верхнего скрипта, покажет все серийники.

PS: Скрипт опроса серверов напрямую лежит тут