Использование PowerShell для проверки настроек BIOS или прошивки виртуальной машины

Опубликовано: 17 Апреля, 2023
Использование PowerShell для проверки настроек BIOS или прошивки виртуальной машины

Как мы все знаем, виртуальные машины разрабатываются как виртуальные аналоги физических компьютеров. Хотя иногда заманчиво думать, что виртуальная машина состоит в основном из таблицы распределения оборудования (для сопоставления памяти и т. д.) и виртуального жесткого диска, содержащего операционную систему виртуальной машины, на самом деле виртуальная машина представляет собой нечто большее, чем что. Физические компьютеры включают микропрограмму (которая когда-то называлась BIOS машины), а виртуальные машины Hyper-V включают виртуализированный эквивалент.

Прежде чем я начну

Не секрет, что компьютеры развивались с течением времени. Ноутбук, который я использую для написания этой статьи, имеет мало общего с 64-килобайтным компьютером Radio Shack Color 2, которым я пользовался еще в 1980-х годах. Тот же базовый принцип справедлив и для виртуальных машин Hyper-V.

Hyper-V позволяет создавать виртуальные машины поколения 1 и поколения 2. Эти два поколения виртуальных машин значительно отличаются друг от друга с точки зрения предоставляемого ими виртуального оборудования. Например, виртуальные машины первого поколения используют виртуальные жесткие диски IDE и позволяют виртуальным машинам взаимодействовать с физическими DVD-приводами. С другой стороны, виртуальные машины поколения 2 не поддерживают ни виртуальные жесткие диски IDE, ни физические DVD-приводы. Вместо этого виртуальные машины поколения 2 используют виртуальные жесткие диски SCSI и эмулированные приводы DVD.

Между двумя разными поколениями виртуальных машин различается не только аппаратная поддержка, но и эмуляция прошивки виртуальной машины. Виртуальные машины поколения 1 используют эмулированный BIOS, а виртуальные машины поколения 2 используют эмулированное встроенное ПО.

BIOS виртуальной машины

Эмулированный BIOS для виртуальной машины поколения 1 отображается в диспетчере Hyper-V. Как видно на рисунке, BIOS виртуальной машины управляет порядком загрузки ВМ. В этом случае виртуальная машина настроена на использование дисковода компакт-дисков в качестве начального загрузочного устройства, за которым следует виртуальный жесткий диск на основе IDE, затем устаревший сетевой адаптер и, наконец, гибкий диск.

Однако, как это часто бывает в Hyper-V, диспетчер Hyper-V не раскрывает все. Чаще всего вы обнаружите, что диспетчер Hyper-V предоставляет наиболее часто используемые параметры, в то время как другие параметры существуют скрыто и доступны только через PowerShell или, возможно, через дополнительные инструменты, такие как System Center Virtual Machine Manager.

Если бы мы хотели взглянуть на BIOS виртуальной машины через PowerShell, мы могли бы сделать это, введя командлет Get-VMBios, за которым следует имя виртуальной машины. Как и следовало ожидать, эта команда заставляет PowerShell отображать порядок загрузки виртуальной машины. Однако PowerShell также сообщает вам, настроена ли виртуальная машина для автоматического включения numlock при загрузке виртуальной машины.

Подобно тому, как диспетчер Hyper-V имеет тенденцию отображать только основные параметры, то же самое верно и для PowerShell. PowerShell изначально показывает только пару настроек, связанных с BIOS. Однако, если мы копнем немного глубже, мы увидим все доступные настройки, связанные с BIOS. Способ сделать это - использовать эту команду:

Get-VMBios <virtual machine name> | Select-Object *

Кстати, указанная выше команда работает только для виртуальных машин первого поколения. Если вы попытаетесь использовать эту команду на виртуальной машине поколения 2, вы получите сообщение об ошибке. Во всяком случае, команда выдает результат, показанный на следующем рисунке.

Мы могли бы пойти еще дальше и манипулировать информацией BIOS напрямую через PowerShell. Например, если бы я хотел автоматически включить numlock на виртуальной машине, я мог бы использовать эту команду:

Set-VMBios <virtual machine name> -EnableNumLock

Эмулированная прошивка

Как упоминалось ранее, виртуальные машины поколения 2 используют эмулированную прошивку, а не эмулированную BIOS. Как выглядит эмуляция прошивки, вы можете увидеть на скриншоте ниже. Как и в случае с BIOS виртуальной машины, диспетчер Hyper-V позволяет использовать микропрограмму для управления порядком загрузки виртуальной машины.

Поскольку виртуальные машины поколения 2 не используют эмуляцию BIOS, вы не можете использовать командлет Get-VMBios для проверки виртуальной машины поколения 2. Вместо этого вам придется использовать командлет Get-VMFirmware.

Командлет Get-VMFirmware предоставляет больше информации, чем командлет Get-VMBios. В то время как Get-VMBios в основном просто показывает порядок загрузки и состояние блокировки номера, Get-VMFirmware показывает порядок загрузки, используется ли безопасная загрузка, какой шаблон использует безопасная загрузка, порядок загрузки и предпочтительная загрузка по сети. заказ.

Как и в случае с командлетом Get-VMBios, вы также можете просмотреть дополнительную информацию о конфигурации, используя команду Get-VMFirmeare <имя виртуальной машины> | Командлет Select-Object *. Вы можете увидеть, как это выглядит на следующем рисунке.

К сожалению, вы не можете использовать командлет Set-VMFirmware для установки состояния клавиши цифровой блокировки, но вы можете использовать его для других целей. Например, вы можете использовать команду Set-VMFirmware, чтобы включить или отключить безопасную загрузку. Например, чтобы отключить безопасную загрузку для виртуальной машины, вы должны использовать эту команду:

Set-VMFirmware <virtual machine name> -EnableSecureBoot Off

Изменение низкоуровневых настроек BIOS или прошивки виртуальной машины, вероятно, не будет тем, чем вы будете заниматься каждый день. Тем не менее, администраторам Hyper-V важно понимать, что, несмотря на то, во что вас может убедить диспетчер Hyper-V, BIOS (или микропрограмма) виртуальной машины делает больше, чем просто управляет порядком загрузки виртуальной машины. Также полезно знать, как проверить настройки BIOS и прошивки и при необходимости изменить их. При этом важно помнить, что Hyper-V управляет настройками для поколений 1 и 2 отдельно, поэтому вы не сможете использовать PowerShell для применения глобальной конфигурации ко всем вашим виртуальным машинам, которые того же поколения.