Powershell:复制项目将 .vhdx 附加到 VM
Powershell: copy-item attach .vhdx to VM
我的目标是创建一个新的 VM,将 .vhdx
复制到一个位置,将 .vhdx
添加到新的 VM,然后从中启动。
我的问题是 .vhdx
没有附加到 VM。我不确定为什么。
我想说 Copy-Item
是错误的,因为当我 运行 那条线时它挂起,至少看起来是这样,因为它永远不会完成,我正在 SSD
开车。
$VM_NAME = "PS_TEST_VM"
$VM_RAM = 1GB
$VM_RAM_MAX = 2GB
$VM_CPUS = "4"
$VM_DEST_PATH = "C:\Users\Public\Documents\Hyper-V\Virtual hard disks"
$VM_TO_COPY = "WIN81.1.vhdx"
$VM_HOST = "MAINKITTEN"
$NETWORK_SWITCH = "DEFAULTSWITCH"
$ROOT_VHD_TPL = "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\WIN81.1.vhdx"
# CREATE
New-VM -Name $VM_NAME -Path $VM_DEST_PATH -NoVHD -Generation 2 -MemoryStartupBytes $VM_RAM -SwitchName $NETWORK_SWITCH
Set-VM -Name $VM_NAME -ProcessorCount $VM_CPUS -DynamicMemory -MemoryMinimumBytes $VM_RAM -MemoryStartupBytes $VM_RAM -MemoryMaximumBytes $VM_RAM_MAX
# COPY AND ATTACH
Copy-Item -Path "${VM_DEST_PATH}${VM_TO_COPY}" -Destination "${VM_DEST_PATH}${VM_NAME}.vhdx"
Add-VMHardDiskDrive -VMName $VM_NAME -path "${VM_DEST_PATH}${VM_NAME}.vhdx"
Start-VM $VM_NAME
echo "done"
您是否尝试过先使用 -Force
参数复制 .vhdx
,然后使用 existing VHD parameter set syntax 创建新 VM?
语法
Parameter Set: Existing VHD
New-VM [[-Name] <String> ] [[-MemoryStartupBytes] <Int64> ] -VHDPath <String> [-AsJob]
[-BootDevice <BootDevice> ] [-ComputerName <String[]> ] [-Path <String> ]
[-SwitchName <String> ] [-Confirm] [-WhatIf] [ <CommonParameters>]
代码
# COPY
Copy-Item -Path "${VM_DEST_PATH}${VM_TO_COPY}" -Destination "${VM_DEST_PATH}${VM_NAME}.vhdx" -Force
# CREATE and Attach vhdx
New-VM -Name $VM_NAME -MemoryStartupBytes $VM_RAM -VHDPath "${VM_DEST_PATH}${VM_NAME}.vhdx" -Path $VM_DEST_PATH -SwitchName $NETWORK_SWITCH -Generation 2
Set-VM -Name $VM_NAME -ProcessorCount $VM_CPUS -DynamicMemory -MemoryMinimumBytes $VM_RAM -MemoryStartupBytes $VM_RAM -MemoryMaximumBytes $VM_RAM_MAX
Start-VM $VM_NAME
我的目标是创建一个新的 VM,将 .vhdx
复制到一个位置,将 .vhdx
添加到新的 VM,然后从中启动。
我的问题是 .vhdx
没有附加到 VM。我不确定为什么。
我想说 Copy-Item
是错误的,因为当我 运行 那条线时它挂起,至少看起来是这样,因为它永远不会完成,我正在 SSD
开车。
$VM_NAME = "PS_TEST_VM"
$VM_RAM = 1GB
$VM_RAM_MAX = 2GB
$VM_CPUS = "4"
$VM_DEST_PATH = "C:\Users\Public\Documents\Hyper-V\Virtual hard disks"
$VM_TO_COPY = "WIN81.1.vhdx"
$VM_HOST = "MAINKITTEN"
$NETWORK_SWITCH = "DEFAULTSWITCH"
$ROOT_VHD_TPL = "C:\Users\Public\Documents\Hyper-V\Virtual hard disks\WIN81.1.vhdx"
# CREATE
New-VM -Name $VM_NAME -Path $VM_DEST_PATH -NoVHD -Generation 2 -MemoryStartupBytes $VM_RAM -SwitchName $NETWORK_SWITCH
Set-VM -Name $VM_NAME -ProcessorCount $VM_CPUS -DynamicMemory -MemoryMinimumBytes $VM_RAM -MemoryStartupBytes $VM_RAM -MemoryMaximumBytes $VM_RAM_MAX
# COPY AND ATTACH
Copy-Item -Path "${VM_DEST_PATH}${VM_TO_COPY}" -Destination "${VM_DEST_PATH}${VM_NAME}.vhdx"
Add-VMHardDiskDrive -VMName $VM_NAME -path "${VM_DEST_PATH}${VM_NAME}.vhdx"
Start-VM $VM_NAME
echo "done"
您是否尝试过先使用 -Force
参数复制 .vhdx
,然后使用 existing VHD parameter set syntax 创建新 VM?
语法
Parameter Set: Existing VHD
New-VM [[-Name] <String> ] [[-MemoryStartupBytes] <Int64> ] -VHDPath <String> [-AsJob]
[-BootDevice <BootDevice> ] [-ComputerName <String[]> ] [-Path <String> ]
[-SwitchName <String> ] [-Confirm] [-WhatIf] [ <CommonParameters>]
代码
# COPY
Copy-Item -Path "${VM_DEST_PATH}${VM_TO_COPY}" -Destination "${VM_DEST_PATH}${VM_NAME}.vhdx" -Force
# CREATE and Attach vhdx
New-VM -Name $VM_NAME -MemoryStartupBytes $VM_RAM -VHDPath "${VM_DEST_PATH}${VM_NAME}.vhdx" -Path $VM_DEST_PATH -SwitchName $NETWORK_SWITCH -Generation 2
Set-VM -Name $VM_NAME -ProcessorCount $VM_CPUS -DynamicMemory -MemoryMinimumBytes $VM_RAM -MemoryStartupBytes $VM_RAM -MemoryMaximumBytes $VM_RAM_MAX
Start-VM $VM_NAME