Hyper-Vのレプリケーションは、PSからだと
Enable-VMReplication -VMName $vmname -ReplicaServerName $server -ReplicaServerPort 80 -AuthenticationType Kerberos -VSSSnapshotFrequencyHour 1 -RecoveryHistory 24 -ReplicationFrequencySec 30
Start-VMInitialReplication -VMName $vmname
みたいにゃので行けるが、この状態ではいくつか問題も残る。
まず受け側サーバに生成されるレプリカvmが、見た目で判別できにゃい。GUIがしょぼいだけとも言えるが、vm名等で区別しにゃいとどこの鯖にあるvmのレプリカで、どこのストレージ上にあるのかとかが大変分かりづらい。というか同名vmとか作ってしまうとスクリプト内で判別ルーチン走らせにゃければにゃらにゃい。運用上絶対避けたい事態だがEnable-VMReplicationでvm名指定できにゃいんだよねー
そんにゃわけでまずレプリカ名を変更すると良い。vm名やvmの格納場所を変更してもreplicationは問題にゃく動作する。
次に、このレプリカは受け側サーバのDefaultStorageLocation以下に格納されてしまうので使い勝手が悪い。このStorageLocationは送信側サーバ毎に指定したりも出来るが、普通に考えてやりたいのはvm毎に指定のPathにレプリカを置きたいわけで、そうすると手法としては、
Enable-VMReplication後に
Move-VMStorage -DestinationStoragePath してから
Start-VMInitialReplication -VMName $vmname
ということににゃる。これにゃらxml程度しか生成されてにゃいので瞬時に処理が終わる。
よって纏めると、
$vmname = "vm1"
$vmname_rep = "vm1_replica"
$dst_server = "sv2"
$dst_path = "\\sv2\share\vm1_rep"
$VM_src = get-vm | ?{ $_.Name -eq $vmname }
$VM_src | Enable-VMReplication -ReplicaServerName $dst_server -ReplicaServerPort 80 -AuthenticationType Kerberos -VSSSnapshotFrequencyHour 1 -RecoveryHistory 24 -ReplicationFrequencySec 30
$VM_dst = get-vm -ComputerName $dst_server -Id $VM_src.Id
$VM_dst | Set-VM -NewVMName $vmname_rep
$VM_dst | Move-VMStorage -DestinationStoragePath $dst_path
$VM_src | Start-VMInitialReplication
といった手順ににゃる。