You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过PowerShell配置VM ISO引导失败问题排查求助

问题描述

我执行了以下操作:先将ISO文件挂载到虚拟机(VM)的CD驱动器,再修改VM的启动顺序,但重启VM后并未进入ISO的引导流程。

挂载ISO到CD驱动器的代码

$CloneVM = Get-VM -Name "999_SW999OSTest_Clone"
$IsoPath = "[STG5_DISTR_HPERF_DARY_NPROD_LUN-01_DEV_3333] Patches/SW_DVD9_Win_Server_STD_CORE_2019_1809.2_64Bit_English_DC_STD_MLF_X22-18452.ISO"

$CDDrive = Get-CDDrive -VM $CloneVM
$CDDrive | Set-CDDrive -ISOPath $IsoPath -Confirm:$false -StartConnected:$true

修改启动顺序的代码

#Connect-VIServer -Server 12.8.1.13

$strVMName = "999_SW999OSTest_Clone"
$strBootNICDeviceName = "Network adapter 1"
$strBootHDiskDeviceName = "Hard disk 1"
$vm = Get-VM $strVMName

$intNICDeviceKey = ($vm.ExtensionData.Config.Hardware.Device | ?{$_.DeviceInfo.Label -eq $strBootNICDeviceName}).Key
$oBootableNIC = New-Object -TypeName VMware.Vim.VirtualMachineBootOptionsBootableEthernetDevice -Property @{"DeviceKey" = $intNICDeviceKey}

$intHDiskDeviceKey = ($vm.ExtensionData.Config.Hardware.Device | ?{$_.DeviceInfo.Label -eq $strBootHDiskDeviceName}).Key
$oBootableHDisk = New-Object -TypeName VMware.Vim.VirtualMachineBootOptionsBootableDiskDevice -Property @{"DeviceKey" = $intHDiskDeviceKey}
$oBootableCDRom = New-Object -Type VMware.Vim.VirtualMachineBootOptionsBootableCdromDevice

$spec = New-Object VMware.Vim.VirtualMachineConfigSpec -Property @{
    "BootOptions" = New-Object VMware.Vim.VirtualMachineBootOptions -Property @{
        BootOrder = $oBootableCDRom, $oBootableNIC, $oBootableHDisk
    }
}
$vm.ExtensionData.ReconfigVM_Task($spec)

启动顺序输出结果

BootDelay            : 0
EnterBIOSSetup       : False
EfiSecureBootEnabled : False
BootRetryEnabled     : False
BootRetryDelay       : 10000
BootOrder            : {VMware.Vim.VirtualMachineBootOptionsBootableCdromDevice, 4000, 2000}
NetworkBootProtocol  : ipv4

请问我遗漏了什么配置?


排查与修复方案

1. 补全CD驱动器的实时连接配置

你设置了-StartConnected:$true(下次启动时连接),但还需要确保当前CD驱动器处于连接状态,避免挂载失效:

$CDDrive | Set-CDDrive -Connected:$true -Confirm:$false

2. 为CD-ROM引导项关联具体设备Key

从启动顺序输出看,CD-ROM项未绑定具体设备Key,VM可能无法识别要从哪个CD驱动器引导。补充以下步骤:

# 获取CD驱动器的设备Key(标签根据实际情况调整,比如"CD/DVD drive 1")
$intCDDriveKey = ($vm.ExtensionData.Config.Hardware.Device | ?{$_.DeviceInfo.Label -eq "CD/DVD drive 1"}).Key
# 创建带设备Key的CD-ROM引导对象
$oBootableCDRom = New-Object -TypeName VMware.Vim.VirtualMachineBootOptionsBootableCdromDevice -Property @{"DeviceKey" = $intCDDriveKey}

重新生成配置并应用即可。

3. 强制单次从CD引导

添加BootOnce配置,强制虚拟机仅下次启动时遵循设置的引导顺序,避免系统自动修改引导优先级:

$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$spec.BootOptions = New-Object VMware.Vim.VirtualMachineBootOptions
$spec.BootOptions.BootOrder = $oBootableCDRom, $oBootableNIC, $oBootableHDisk
# 开启单次引导
$spec.BootOptions.BootOnce = $true
$vm.ExtensionData.ReconfigVM_Task($spec)

4. 验证ISO与引导模式兼容性

  • 若虚拟机用UEFI模式,确认ISO包含UEFI引导文件(如EFI目录);
  • 若用BIOS模式,检查ISO根目录是否有bootmgr或isolinux等BIOS引导文件;
  • 确保EfiSecureBootEnabled设置与ISO要求匹配(你的输出已设为False,若ISO需安全启动则调整为True)。

5. 检查ISO文件有效性

手动在vSphere客户端中尝试挂载该ISO,确认存储路径正确、ISO文件未损坏。


内容的提问来源于stack exchange,提问作者snehasish nandy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 07:27:52