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じゃにゃい場合とかはお察しである。