vmをCloneして、細かい情報をvm毎に付与して、各vmはそれを参照して自力で最終setupを行う、みたいにゃ事をするのに、少にゃくとも自分のvm名くらいは拾えにゃいといけにゃいが、どうやるのかという。
でホストから当該vmに情報書き込むには、
$VSManagementService = gwmi -class "Msvm_VirtualSystemManagementService" -namespace "root\virtualization\v2" -computername $HyperVServer
$VSManagementService.AddKvpItems($Vm,hoge)
みたいにゃのが使えて、
AddKvpItems, ModifyKvpItems, RemoveKvpItemsにゃんかがある。ここで追加したkey,valueはvmの
HKLM\SOFTWARE\Microsoft\Virtual Machine\External
に追加される。
一方vm側で、
HKLM\SOFTWARE\Microsoft\Virtual Machine\Guest
に書き込んだkey,valueは
$VSManagementService = gwmi -class "Msvm_VirtualSystemManagementService" -namespace "root\virtualization\v2" -computername $HyperVServer
$query = "Associators of {$Vm} Where AssocClass=Msvm_SystemDevice
ResultClass=Msvm_KvpExchangeComponent"
$Kvp = gwmi -namespace "root\virtualization\v2" -query $query -computername $HyperVServer
$Kvp.GuestIntrinsicExchangeItems
$Kvp.GuestExchangeItems
みたいに取得出来る。
ゲストがWinじゃにゃい場合とかはお察しである。
ESX上のVMをHyper-Vに移動するには、Microsoft Virtual Machine Converterみたいにゃものもあるのだが、これがまた動作条件が厳しい。大概失敗する感じにゃのでvmdkをvhdxに変換するだけの物を探してみる。
StarWind V2V Converterはシンプルにゃ変換ツールで相互に使えるのが良いところ。但しsnapshot類は認識できにゃいので予め統合しておく必要がある。
ドメイン参加してればGUIで設定すりゃ動く。
仮想スイッチ名が移動先で一致してにゃいと手動で選ぶ羽目ににゃる。
で、大概動くものの、認証系で失敗することがあるので制約付き委任を構成した方が良い。
Active Directory ユーザーとコンピューターで関連コンピュータのプロパティの委任タブで移行先コンピューターのcifsとMicrosoft Virtual System Migration Serviceを追加。各サーバ再起動すれば確実に反映される。次のPSでもよい。
function SvDelegateTo ( $TargetServer , $AddServer ) {
$TargetServerDN = (Get-ADComputer $TargetServer)
$AddServerDN = (Get-ADComputer $AddServer)
$AddServerName = $AddServerDN.Name
$AddServerDNS = $AddServerDN.DNSHostName
function Exec ( $ServiceName ) {
Set-ADObject -Identity $TargetServerDN -Add @{ "msDS-AllowedToDelegateTo" = "$ServiceName/$AddServerName", "$ServiceName/$AddServerDNS" }
}
Exec "cifs"
Exec "Microsoft Virtual System Migration Service"
}
function SetAll {
$array = $args
foreach($sv1 in $array){
foreach($sv2 in $array){
if( $sv1 -eq $sv2 ){continue}
SvDelegateTo $sv1 $sv2
}
}
}
SetAll sv1 sv2 sv3
多重実行しても上書きされるだけにゃのでサーバが増える度に全サーバ指定して実行してしまえばよいかも知れにゃい。