Hyper-V generation 2 VM conversion utility (Convert-VMGeneration)
[URL] http://code.msdn.microsoft.com/windowsdesktop/Convert-VMGeneration-81ddafa2
ですが、日本語環境だとこんなエラーが出ます。→ MCP の憂鬱さんのサイト
エラーが出ているのは元の仮想マシンの統合サービス (時刻の同期とか...) の設定を、変換後の仮想マシンの設定に移行するところ。次のようなコマンドレットが実行されちゃってエラー (エラーの理由は上のメッセージのとおり) になるんで、VSS 以外は設定が引き継がれません。
Enable/Disable-VMIntegrationService -Name "時刻の同期" -VM ...
Enable/Disable-VMIntegrationService -Name "ハートビート" -VM ...
Enable/Disable-VMIntegrationService -Name "キー値ペア交換" -VM ...
Enable/Disable-VMIntegrationService -Name "シャットダウン" -VM ...
Enable/Disable-VMIntegrationService -Name "ゲスト サービス インターフェイス " -VM ...
変換は完了するので、統合サービスの設定を既定のまま変えてなければこのエラーは無視していいですし、手動で設定を移行すれば、それはそれで問題なしです。
エラーの理由を踏まえて、ちょちょちょいと Convert-VMGeneration.ps1 を修正すると、こんな感じで日本語環境でも問題なく動くようになります。
日本語環境に対応させるために変更したコードはこちら。美しくないですが。
------------------------------------------------------------------------------
#Integration Services
#Write-Info " - Integration Services..."
#$ICs = Get-VMIntegrationService $SourceVM
#ForEach ($IC in $ICS) {
# if ($IC.Enabled) {
# Write-Verbose ("Enabling IC " + ($IC.Name))
# Enable-VMIntegrationService -Name $IC.Name -VM $NewVM
# } else {
# Write-Verbose ("Disabling IC " + ($IC.Name))
# Disable-VMIntegrationService -Name $IC.Name -VM $NewVM
# }
#}
# My Patch
Write-Info " - Integration Services..."
$ICs = Get-VMIntegrationService $SourceVM
ForEach ($IC in $ICS) {
switch($IC.Name){
"時刻の同期" {
if ($IC.Enabled) {
Write-Verbose ("Enabling IC " + ($IC.Name))
Enable-VMIntegrationService -Name "Time Synchronization" -VM $NewVM
} else {
Write-Verbose ("Disabling IC " + ($IC.Name))
Disable-VMIntegrationService -Name "Time Synchronization" -VM $NewVM
}
}
"ハートビート" {
if ($IC.Enabled) {
Write-Verbose ("Enabling IC " + ($IC.Name))
Enable-VMIntegrationService -Name "Heartbeat" -VM $NewVM
} else {
Write-Verbose ("Disabling IC " + ($IC.Name))
Disable-VMIntegrationService -Name "Heartbeat" -VM $NewVM
}
}
"キー値ペア交換" {
if ($IC.Enabled) {
Write-Verbose ("Enabling IC " + ($IC.Name))
Enable-VMIntegrationService -Name "Key-Value Pair Exchange" -VM $NewVM
} else {
Write-Verbose ("Disabling IC " + ($IC.Name))
Disable-VMIntegrationService -Name "Key-Value Pair Exchange" -VM $NewVM
}
}
"シャットダウン" {
if ($IC.Enabled) {
Write-Verbose ("Enabling IC " + ($IC.Name))
Enable-VMIntegrationService -Name "Shutdown" -VM $NewVM
} else {
Write-Verbose ("Disabling IC " + ($IC.Name))
Disable-VMIntegrationService -Name "Shutdown" -VM $NewVM
}
}
"ゲスト サービス インターフェイス" {
if ($IC.Enabled) {
Write-Verbose ("Enabling IC " + ($IC.Name))
Enable-VMIntegrationService -Name "Guest Service Interface" -VM $NewVM
} else {
Write-Verbose ("Disabling IC " + ($IC.Name))
Disable-VMIntegrationService -Name "Guest Service Interface" -VM $NewVM
}
}
default {
if ($IC.Enabled) {
Write-Verbose ("Enabling IC " + ($IC.Name))
Enable-VMIntegrationService -Name $IC.Name -VM $NewVM
} else {
Write-Verbose ("Disabling IC " + ($IC.Name))
Disable-VMIntegrationService -Name $IC.Name -VM $NewVM
}
}
}
}
# My Patch
------------------------------------------------------------------------------
美しさを求めるなら → http://winscript.jp/powershell/files/Convert-VMGeneration-patch.txt (by 『Windows PowerShell ポケットリファレンス』の牟田口大介さん)
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。