可以禁用 Hyper-V VM 的 PXE 启动吗?

alx*_*x9r 10 virtualization hyper-v boot pxe-boot windows-server-2012-r2

Hyper-V 虚拟机能够进行 PXE 引导。显然,PXE 启动会引起一些安全问题。问题是,与典型的物理机固件不同,没有明显的方法可以完全禁用 PXE 引导。

Hyper-V 管理器在以下位置显示每个 VM 的网络适配器Settings=>Firmware=>Boot Order

在此处输入图片说明

您可以将网络适配器移至引导顺序的底部,但不能将其从该屏幕中完全移除。因此,如果由于某种原因,Hyper-V 无法从任何其他驱动器启动,VM 仍会尝试 PXE 启动并显示以下屏幕:

在此处输入图片说明

我已经Settings=>Network Adapter寻找了一种禁用 PXE 启动的方法,但无济于事。

所以我的问题是:

  1. 如何在 Hyper-V VM 中禁用 PXE 启动?
  2. 如果您无法禁用 PXE 启动,是否有充分的理由?

我使用的是 Windows Server 2012 R2

alx*_*x9r 10

使用 Powershell 从引导顺序中删除网络引导设备

您可以使用 PowerShellNetwork BootType从 VM 启动顺序中去除 s。

提取当前引导顺序

使用 Powershell,您可以使用此命令提取当前引导顺序:

$old_boot_order = Get-VMFirmware -VMName testvm -ComputerName MyHyperVHost `
                  | Select-Object -ExpandProperty BootOrder
Run Code Online (Sandbox Code Playgroud)

如果您检查,$old_boot_order您应该会看到testvm. 像这样的东西:

在此处输入图片说明

剥离网络引导设备

您可以Network BootType使用以下命令从引导列表中剥离引导设备:

$new_boot_order = $old_boot_order | Where-Object { $_.BootType -ne "Network" }
Run Code Online (Sandbox Code Playgroud)

检查$new_boot_order应该看起来像这样,没有更多的Network引导设备:

在此处输入图片说明

设置新的引导顺序

要为 VM 设置新的引导顺序,请使用以下命令:

Set-VMFirmware -VMName testvm -ComputerName MyHyperVHost -BootOrder $new_boot_order
Run Code Online (Sandbox Code Playgroud)

确认新的引导顺序

Get-VMFirmware再次使用第一个命令确认你做了什么:

Get-VMFirmware -VMName testvm -ComputerName MyHyperVHost `
| Select-Object -ExpandProperty BootOrder
Run Code Online (Sandbox Code Playgroud)

注意:如果您同时使用 PowerShell 和 Hyper-V 管理器来更改引导顺序,PowerShell 可能会报告错误(过时)的引导顺序。另请参阅此 technet 线程