Hyper-V 通过Shell 克隆虚拟机,复制 VM 并自动重命名

在 Hyper-V 中直接复制虚拟机配置或磁盘,容易导致名称冲突、ID 冲突,甚至误修改原虚拟机。本文提供一种官方推荐的安全方法:通过 Export → Import(Copy + GenerateNewId) 实现完整克隆,并自动重命名新虚拟机。

这是1对1的克隆,如果在克隆,输入新的newwm名称,在执行如下代码操作即可。

📋 使用前准备

  1. 管理员身份运行 PowerShell
  2. 确保源虚拟机已关闭(建议)
  3. 修改脚本中的变量:
$oldVM = "原虚拟机名称"
$newVM = "新虚拟机名称"
$base  = "克隆存储目录"

一键修改代码如下:

$oldVM = "WIN11H24"
$newVM = "WIN11H26"
$base  = "D:\Hyper-V\ClonedVM"

# 导出
$stamp = Get-Date -Format "yyyyMMdd_HHmmss"
$exportRoot = Join-Path $base ("_export_" + $stamp)
Export-VM -Name $oldVM -Path $exportRoot

# 找 vmcx
$vmcx = Get-ChildItem $exportRoot -Recurse -Filter *.vmcx | Select -First 1

# 新 VM 目录
$newRoot = Join-Path $base $newVM
$vmPath   = Join-Path $newRoot "VM"
$vhdPath  = Join-Path $newRoot "VHD"
$snapPath = Join-Path $newRoot "Snapshots"
New-Item -ItemType Directory -Force -Path $vmPath,$vhdPath,$snapPath | Out-Null

# 导入(此时会生成一个名为 WIN11H26 的克隆)
Import-VM -Path $vmcx.FullName -Copy -GenerateNewId `
  -VirtualMachinePath $vmPath `
  -VhdDestinationPath $vhdPath `
  -SnapshotFilePath $snapPath | Out-Null

# ⭐ 只从目标路径找新 VM(绝不会找到原机)
$newImported = Get-VM | Where-Object { $_.Path -like ($vmPath + "*") }

# ⭐ 按对象改名(安全)
Rename-VM -VM $newImported -NewName $newVM

# 清理导出
Remove-Item -Recurse -Force $exportRoot

"OK:原机未改变,新机=$newVM"

原创文章,作者:开心电脑网,如若转载,请注明出处。

(0)
上一篇 2026年2月23日
下一篇 2019年3月12日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注