ものぐさ日記(仮)

特にテーマはありません。仕事のこと、趣味のこと、思いついたこと、だらだら綴っていきます。

【PowerShell】全VMエクスポート

 40の手習いということで、慣れない PowerShell で全VMをエクスポートするスクリプトを書いた。環境に合わせて、$export_base_dir を変えるだけである程度汎用的に使用できると思う。もう少し効率的に書ける気もする。


# 初期設定
$export_base_dir = "E:\VMEXP"

# 処理実行
foreach($vm in Get-VM | Select Name)
{
    $export_dir = $export_base_dir + "\" + $vm.Name
	
	# エクスポートフォルダ削除
	if(Test-Path $export_dir)
	{
		write-host $vm.Name "エクスポートフォルダ削除"
		Remove-Item $export_dir -Recurs
	}

	# VM停止
	write-host $vm.Name "停止"
	Stop-VM -Name $vm.Name

	$vm_state = Get-VM | Select State
	if($vm_state.State -eq "Off")
	{
		# VMエクスポート
		write-host $vm.Name "エクスポート"
		export-VM -Name $vm.Name -Path $export_base_dir

		# VM開始
		write-host $vm.Name "開始"
		Start-VM -Name $vm.Name
	}
	else
	{
		write-host $vm.Name "は停止しておりません。エクスポートできません"
	}
};