Hyper-V 一键克隆虚拟机并重命名和一键删除的方法

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

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

📋 使用前准备

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

新增虚拟机,一键代码如下:【回车 输出结果】

$oldVM = "WIN11H24"
$newVM = "WIN11H28"
$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"

📋 使用前准备

  1. 管理员身份运行 PowerShell
  2. 确保源虚拟机已关闭(建议)
  3. 修改脚本中的变量:
$vmName = "虚拟机名称"

删除虚拟机,一键代码如下:【回车 输出结果】

# 指定要删除的虚拟机名称
$vmName = "WIN11H28"

# 定义虚拟机文件夹路径
$vmFolderPath = "D:\Hyper-V\ClonedVM\$vmName"

# 检查虚拟机文件夹是否存在
if (Test-Path -Path $vmFolderPath) {
    # 获取虚拟机对象
    $vm = Get-VM -Name $vmName

    # 如果虚拟机存在
    if ($vm) {
        # 如果虚拟机正在运行,强制停止虚拟机
        if ($vm.State -eq 'Running') {
            Stop-VM -VM $vmName -Force
        }

        # 从 Hyper-V 中删除虚拟机(仅注销虚拟机,不删除文件)
        Remove-VM -Name $vmName -Force

        # 删除虚拟机文件夹及其所有内容
        Remove-Item -Path $vmFolderPath -Recurse -Force

        # 输出成功消息
        "虚拟机 $vmName 和相关文件夹已成功删除。"
    } else {
        # 如果虚拟机不存在,输出提示信息
        "未找到虚拟机 $vmName。"
    }
} else {
    # 如果虚拟机文件夹不存在,输出提示信息
    "未找到文件夹路径 $vmFolderPath。"
}

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

(0)
上一篇 2026年2月23日
下一篇 2020年6月1日

相关推荐

发表回复

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