Получение серийных номеров серверов ESXi с помощью PowerCLI
С помощью 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: Скрипт опроса серверов напрямую лежит тут