Очередная функция Get-VMHostFirmwareVersion моего PowerCLI модуля для управления виртуальной инфраструктурой VMware Vi-Module.psm1 поможет вам узнать версию и дату выпуска Firmware ваших серверов ESXi.
Для большей гибкости и удобства в использовании, функция написана в виде PowerShell-фильтра. Фильтр - это особый вид функции, которая обрабатывает каждый объект, переданный ей в pipeline (Objects | Filter).
Get-VMHostFirmwareVersion может получать любое количество серверов ESXi. Причём это могут быть как просто имена хостов, так и их объекты, возвращаемые командлетами Get-VMHost и Get-View (это к вопросу о гибкости).
Например, для одного ESXi хоста, это может выглядеть следующим образом:
Если ваш хост, допустим IBM/Lenovo, то вы можете получить что-то в этом роде:
G0E183BUS-1.83 [12/30/2015]
Это обычный String (набор символов), состоящий из версии BIOS и даты релиза, заключённой в квадратные скобки.
К вопросу об удобстве. Настоящее преимущество фильтров перед функциями в том, что с их помощью очень удобно добавлять новые свойства к уже существующим объектам. В PowerShell этот приём называется «calculated properties».
Например, вы можете сделать выборку хостов (Get-VMHost), выбрать только интересующие вас свойства (select Name, Version, Manufacturer, Model) и добавить своё и назвать его, допустим BIOS или Firmware (@{N=’BIOS’; E={$_ | Get-VMHostFirmwareVersion}}).
Об удобстве и гибкости мы поговорили, осталось обсудить производительность.
Следующее сравнение показывает, что, как и в большинстве случаев, Get-View более эффективна, чем Get-VMHost.
На 55 хостов разница составила 13 секунд, а это более 20%! Get-VMHost, конечно, привычней и удобней, но, если важна скорость, то выбор за Get-View.
Не забудьте просмотреть примеры, которыми снабжена функция: