1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27#加载PowerCLI环境
Add-PSSnapin VMware.VimAutomation.Core
C:\"Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1"
#根据提示输入vCenter连接信息的方式,可以根据实际环境,将部分变量写成固定参数
$VCServer = Read-Host "Enter vCenter Server Name"
$Username = Read-Host "Enter Username"
$Password = Read-Host "Enter Password"
$SourceVM = Read-Host "Enter Source VM Name"
$CloneVM = Read-Host "Enter Clone VM Name"
#连接vCenter Server
Connect-VIServer $VCServer -User $Username -Password $Password -Port 443
#如果源VM当前快照名称不是Linked_Clone则为该VM创建快照
if ((Get-Snapshot -VM $sourceVM).Name -ne "Linked_Clone") {
$SourceSnapshot = New-Snapshot -VM $SourceVM -Name "Linked_Clone" -Description "Snapshot for linked clones." -Memory -Quiesce
}
$sourceVMView = Get-VM $SourceVM | Get-View
$CloneFolder = $sourceVMView.parent
$CloneSpec = New-Object Vmware.Vim.VirtualMachineCloneSpec
$CloneSpec.Snapshot = $sourceVMView.Snapshot.CurrentSnapshot
$CloneSpec.Location = new-object Vmware.Vim.VirtualMachineRelocateSpec
$CloneSpec.Location.DiskMoveType = [Vmware.Vim.VirtualMachineRelocateDiskMoveOptions]::createNewChildDiskBacking
#执行VM链接克隆任务
$sourceVMView.CloneVM_Task($CloneFolder, $CloneVM, $CloneSpec)