You can use the vSphere Replication SDK for PowerShell to replicate a VM from a source to a target datastore on the local vCenter Server system.
This example shows how to replicate a single VM from a source to a target datastore on the same vCenter Server system.
Prerequisites
Verify that the vSphere Replication appliance is deployed on the vCenter Server system.
Verify that you are connected to the vCenter Server system. This example uses the $vr1 connection variable from Connect to a Local vSphere Replication Server.
You must have the required privileges to configure replications and manage datastores on the vCenter Server system.
Procedure
- Get the local VM that you want to replicate.
$pairing = $vr1.ConnectedPairings["<local_vc_address_or_fqdn>"].Pairing
$replicatedVm = Invoke-VrGetLocalVms -PairingId $pairing.PairingId `
-VcenterId $pairing.LocalVcServer.Id `
-FilterProperty "Name" `
-Filter "<my_vm_name>" `
-Server $vr1
- Get the VM hard disks that you want to replicate.
$replicatedHdds = Invoke-VrGetLocalVmDisks -PairingId $pairing.PairingId `
-VcenterId $pairing.LocalVcServer.Id `
-VmId $replicatedVm.List[0].Id `
-Server $vr1
- Get the target datastore for the replication.
$targetDatastore = Invoke-VrGetVrCapableTargetDatastores -PairingId $pairing.PairingId `
-VcenterId $pairing.PairingId.RemoteVcServer.Id `
-FilterProperty "Name" `
-Filter "<target_datastore_name>" `
-Server $vr1
- Create the configuration for disks replication.
$replicationVmDisks = @()
$replicatedHdds.List | ForEach-Object {
$replicationVmDisks += Initialize-VrConfigureReplicationVmDisk -VmDisk $_ `
-EnabledForReplication:$true `
-DestinationDatastoreId $targetDatastore.List[0].Id `
-DestinationDiskFormat 'SAMEASSOURCE'
- Create the replication spec.
$replicationSpec = Initialize-VrConfigureReplicationSpec `
-Rpo 60 -NetworkCompressionEnabled:$true `
-MpitEnabled:$true -AutoReplicateNewDisks:$true `
-LwdEncryptionEnabled:$false `
-Disks $replicationVmDisks `
-MpitInstances 1 `
-MpitDays 1 `
-TargetVcId $pairing.RemoteVcServer.Id `
-VmId $replicatedVm.List[0].Id
- Invoke the ConfigureReplication operation.
$task = Invoke-VrConfigureReplication -PairingId $pairing.PairingId `
-ConfigureReplicationSpec $replicationSpec -Server $vr1
vSphere Replication starts replicating the virtual machine files to the target datastore.
- Monitor the task progress.
$t = Invoke-VrGetTaskInfo -TaskId $task.List[0].Id -Server $vr1
$t
Eventually, the task status changes to SUCCESS
.
- (Optional) Get the replication on the target datastore.
$rep1 = Invoke-VrGetAllReplications -PairingId $pairing.PairingId `
-FilterProperty "Name" -Filter <my_vm_name> -Server $vr1
- Sync your virtual machine to the configured replication on the target datastore.
Invoke-VrSyncReplication -PairingId $pairing.PairingId `
-ReplicationId $rep1.List[0].Id -Server $vr1