ウィザードの利用、スクリプトの実行

SCVMMのウィザードは最終画面に必ず[スクリプトの表示]ボタンを含む。このボタンを押すとメモ帳が起動し、SCVMMが生成したスクリプトを確認できる。

SCVMMウィザードの最終画面

リスト1に実際の例を示す。少々読みにくいがおよその動作は分かるだろう。

リスト1: SCVMMが生成したスクリプト

# ------------------------------------------------------------------------------
# 新しいバーチャル マシン スクリプト
# ------------------------------------------------------------------------------
# 2010年5月5日 10:40:57 で Virtual Machine Manager によって生成されたスクリプト
# 
# コマンドレットの使用法の追加のヘルプについては、「get-help <コマンドレット名>」と入力してください
# ------------------------------------------------------------------------------

New-VirtualNetworkAdapter -VMMServer localhost -JobGroup cb5e99f9-7697-4b1c-84c8-9443258b1a92 -PhysicalAddressType Dynamic -VirtualNetwork "内部仮想ネットワーク" -VLanEnabled $false 

New-VirtualDVDDrive -VMMServer localhost -JobGroup cb5e99f9-7697-4b1c-84c8-9443258b1a92 -Bus 1 -LUN 0 

$CPUType = Get-CPUType -VMMServer localhost | where {$_.Name -eq "3.33 GHz Xeon MP"}

New-HardwareProfile -VMMServer localhost -Owner "CORP\Administrator" -CPUType $CPUType -Name "プロファイル3a449692-5ecd-459a-bd75-392be5180afe" -Description "VM/テンプレートの作成に使用される一時ハードウェア構成" -CPUCount 1 -MemoryMB 512 -RelativeWeight 100 -HighlyAvailable $false -NumLock $false -BootOrder "CD", "IdeHardDrive", "PxeBoot", "Floppy" -LimitCPUFunctionality $false -LimitCPUForMigration $false -JobGroup cb5e99f9-7697-4b1c-84c8-9443258b1a92 

New-VirtualDiskDrive -VMMServer localhost -IDE -Bus 0 -LUN 0 -JobGroup cb5e99f9-7697-4b1c-84c8-9443258b1a92 -Size 40960 -Dynamic -Filename "TEST-VM_disk_1" 

$VMHost = Get-VMHost -VMMServer localhost | where {$_.Name -eq "R2T61.corp.classroom.local"}
$HardwareProfile = Get-HardwareProfile -VMMServer localhost | where {$_.Name -eq "プロファイル3a449692-5ecd-459a-bd75-392be5180afe"}
$OperatingSystem = Get-OperatingSystem -VMMServer localhost | where {$_.Name -eq "64-bit edition of Windows Server 2008 Enterprise"}

New-VM -VMMServer localhost -Name "TEST-VM" -Description "" -Owner "CORP\Administrator" -VMHost $VMHost -Path "c:\vm" -HardwareProfile $HardwareProfile -JobGroup cb5e99f9-7697-4b1c-84c8-9443258b1a92 -RunAsynchronously -OperatingSystem $OperatingSystem -RunAsSystem -StartAction NeverAutoTurnOnVM -StopAction SaveVM

スクリプトの実行

SCVMMの管理ツールに含まれる[PowerShell]ボタンをクリックすると、SCVMM用のモジュールを読み込んだPowerShellが起動する。また、[スタート]メニューには[Windows PowerShell - Virtual Machine Manager]が登録され、cli.psc1ファイルを読み込んでから起動するショートカットが構成される。

cli.psc1はMicrosoft.SystemCenter.VirtualMachineManagerスナップインを読み込むだけなので、PowerShellを起動後にAdd-PSSnapinコマンドで読み込んでも結果は変わらない。

SCVMM用コマンドレットの多くは事前にSCVMMサーバーを指定するために以下のコマンドレットを実行する必要がある。

Get-VMMServer ホスト名

スクリプトの利用例

SCVMMは、PowerShell management Library for Hyper-Vよりも高機能なコマンドレットが多い。しかも、ウィザードの結果が自動的にスクリプトになるため、複雑なコマンド列でも簡単に生成できる。

たとえば、SCVMMには「SAN移行」という機能がある。複数の物理マシンが共有しているSAN上に仮想マシンを置くことで、ファイル複製ではなくSANディスクの付け替えで仮想マシンを移行する機能だ。SAN移行を使えば極めて短時間で仮想マシンの移動が完了する。具体的には以下の手順となる。

 1. 仮想マシンの状態を保存

 2. SANの移行

 3. 仮想マシンの状態を復元

この手順は、Windows Server 2008のクイックマイグレーションとほぼ同様である。しかし、クイックマイグレーションはフェールオーバークラスタを利用するため、高価なWindows Server 2008 Enterpriseが必要であるのに対して、SAN移行はStandardでも可能である。

さらに、仮想マシンの監視スクリプトを構成し、それと組み合わせれば擬似的なフェールオーバークラスタを実現できるだろう。

*   *  *

Hyper-Vの管理を行なうPowerShellコマンドレットは標準では利用できない。WMIを呼び出すスクリプトを自分で作るか、CodePlexからPowerShell management Library for Hyper-Vをダウンロードするか、SCVMMをインストールするかのいずれかの作業が必要である。

WMIは複雑であるので、あまり手軽ではない。PowerShell management Libraryは無償で使えるが機能が低い。SCVMMは有償だが機能が高い。現実にはPowerShell management LibraryかSCVMMのいずれかを使うことになるだろう。

スクリプトを使うと、さまざまな作業の自動化ができる。たとえばクイックマイグレーションに相当することまで実現できるため、うまく使えばコスト削減に貢献するだろう。

PowerShellの公式情報はこちら!

Microsoftの管理者向け技術情報サイト「TechNet」にはPowerShell関連の情報が数多く掲載されている。

記事中でも紹介したが、門をたたくときに最初にアクセスすべきは、以下のページ。

 Windows PowerShell でのスクリプティング
 http://technet.microsoft.com/ja-jp/scriptcenter/powershell.aspx

また、周辺ツールや、実際に利用できるサンプルプログラムを入手したいならこちらのページが便利だ。

 スクリプト センター
 http://technet.microsoft.com/ja-jp/scriptcenter/default.aspx

PowerShellが使いこなせればこれまで以上の効率化が図れることは間違いない。ぜひこれらも参考に使いこなせるようになってほしい。