PowerShell + Hyper-V

私はすでにGUIを介してすることはできません...



これが、Hyper-Vから仮想マシンを数回連続してエクスポートしなければならなかった友人との会話の始まりです。 通常、これはHyper-Vマネージャー(HVM)を使用します。HVMは、Windows Server 2008 R2の下でHyper-Vの役割と共にインストールされます。 このプログラムのインターフェイスが私に否定的な感情を引き起こさないことを認めなければなりません。 マイクロソフトがサーバーに提供するすべての管理プログラムの中で、これは私にとって最も便利で理解しやすいようです(たとえば、IISマネージャーと比較すると、2003年のサーバーでIIS 6を使用していたユーザーに戸惑いや怒りを引き起こします)。 ただし、t時間内にN個の仮想マシンをエクスポートまたはインポートする必要がある場合は、Hyper-Vマネージャーを使用してマウスボタンを壊し、Hyper-Vをひどく嫌うことができます。 ここで、PowerShellが役立ちます。



インポートモジュールHyperV


...そして、デフォルトでは、もちろん、PowerShellにはそのようなモジュールはありません。 Microsoftは、Hyper-Vを管理するためのコマンドレットを誰も作成しないことを決定しました(これは非常に奇妙な考えです)。 一方、この世界には、自分自身や他のユーザーのために自分の人生を単純化することができる、そして喜んでいる人々がたくさんいます。 そのため、Hyper-V用のPowerShell管理ライブラリが誕生しました。

最初に行うことは、このモジュールとドキュメントをダウンロードして、試してみることです。 (どちらもhttp://pshyperv.codeplex.com/releasesで入手できます)

次に、このモジュールをインストールする必要があります。 プロセスは複雑ではありません(インストールファイルの実行はそれ自体を提供します)。

これで作業できます。 PowerShellを起動し、モジュール(サブタイトルで記述されているもの)をインポートします。

そして、HVMを介して使用できるすべての機能にアクセスできます。以下にその一部を示します。



仮想マシンの接続

New-VMConnectSession



仮想マシンの状態を操作する

Get-VMState、Set-VMState、Convert-VmState、

Ping-VM、Test-VMHeartBeat、Shutdown-VM、Start-VM、Stop-VM、Suspend-VM

Get-VMKVP、Add-KVP、Remove-KVP、Get-VMJPEG



バックアップ、仮想マシンのエクスポート、スナップショットの作成が可能

VMのエクスポート、VMのインポート、VMスナップショットの取得、VMスナップショットの選択、VMスナップショットの適用、VMスナップショットの削除、VMスナップショットの削除、VMスナップショットの名前変更、VMスナップショットの更新、VMスナップショットツリーの取得、VmBackupScriptの取得



virtの追加と削除。 マシン、そのプロパティの設定

New-VM、Remove-VM、Set-VM、Get-VMCPUCount、Set-VMCPUCount、Get-VMMemory、Set-VMMemory、Set-VMSerialPort



ディスクコントローラー管理

Get-VMDiskController

Add-VMSCSIController、Remove-VMSCSIcontroller

Get-VMDriveByController、Add-VMDRIVE、Remove-VMdrive

Get-VMDiskByDrive、Add-VMDISK、Set-VMDisk、Get-VMDisk

Get-VMFloppyDisk、Add-VMFloppyDisk

Add-VMNewHardDisk



ネットワークインターフェイス管理

Get-VMNic、List-VMNic、Choose-VMNIC、Add-VMNIC、Remove-VMNIC、Set-VMNICAddress、Set-VMNICConnection、Get-VMNicport、

Get-VMnicSwitch、Choose-VMSwitch、New-VMSwitchPort、Get-VMByMACaddress、Choose-VMExternalEthernet、

New-VMExternalSwitch、New-VMInternalSwitch、New-VmPrivateSwitch



VHDファイルを操作する

Get-VHDDefaultPath、Get-VHDInfo、New-VHD、Compact-VHD、Test-VHD、Convert-VHD、Merge-VHD、Mount-VHD、Unmount-VHD



上記のコマンドはすべて自明です。

たとえば、仮想マシンの状態を取得するには、次のように入力します。

List-VMState .





結果として:

画像

私の例では、仮想マシンは1つしかありません=>パラメータを指定しませんでしたが、多くのパラメータがある場合は、後でコンソール出力をたどりたくない場合は、おそらくその名前を明示的に指定する必要があります。

たとえば、仮想マシンに使用されるネットワークインターフェースについて学ぶには、次のように入力するだけです。

Get-VMNic





取得:

画像

さて、私の友人が必要としていたのは、スケジュールに従ってバックグラウンドでエクスポートできることでした。 これを行うには、コマンドレットを作成して、スケジューラに挿入します。 たとえば、私にとって、このコマンドレットは仮想マシンを停止し、エクスポートし、再起動して、エラーまたは成功メッセージを送信します。 その後、制御がアーカイブされ、バックアップがリモートFTPに送信される別のスクリプトに転送されます。

エクスポート: export-vm -vm MyVM1 -path D:\backups\VM -copystate -wait -force





-copystateパラメーターは、すべてをコピーする必要があることを示します(仮想ディスクを含む=>出力のエクスポートサイズは非常に大きくなる可能性があります)



結論の代わりに


ご覧のとおり、PowerShellから仮想マシンを管理することは非常に便利でストレスフリーです。 必要なコマンドのパラメーターを読み取り、独自のスクリプトを作成するだけで十分です。



PS 「アメリカを発見した」というふりをするのではなく、この有用なモジュールに関する情報が誰かが役に立つと思うと決めました。 Hyper-VのPowerShell管理ライブラリを使用できる最も単純なオプションのみを説明しました。 誰かがHyper-Vでの作業を最適化するためのより便利なツールを知っている、または書いているなら、私はそれらについて知ってうれしいだけです。




All Articles