Move-SCVirtualMachine

VMM ライブラリに格納されている仮想マシンまたはホストに展開されている仮想マシンを、ホスト上の新しい場所に移動します。

構文

Move-SCVirtualMachine
    [-VM] <VM>
    [-VMHost <Host>]
    [-ReplicationGroup <ReplicationGroup>]
    [-BlockLiveMigrationIfHostBusy]
    [-UseDiffDiskOptimization]
    [-StartVMOnTarget]
    [-DiscardSavedState]
    [-UseLAN]
    [-UseCluster]
    [-HighlyAvailable <Boolean>]
    [-Path <String>]
    [-JobGroup <Guid>]
    [-RunAsynchronously]
    [-PROTipID <Guid>]
    [-JobVariable <String>]
    [-OnBehalfOfUser <String>]
    [-OnBehalfOfUserRole <UserRole>]
    [<CommonParameters>]

説明

Move-SCVirtualMachine コマンドレットは、仮想マシン マネージャー (VMM) ライブラリに格納されているか、ホストに展開されている仮想マシンをホスト上の新しい場所に移動します。

System Center 2019 以降では、Windows Server 2016に含まれる新しい移行機能を利用できます。 これらの機能には、2 台のスタンドアロン コンピューター間の仮想マシンのライブ マイグレーションと、スタンドアロン コンピューターとクラスター ノード間のライブ マイグレーションが含まれます。 さらに、複数の同時ライブ マイグレーションがサポートされています。 System Center で仮想マシンを移行する方法の詳細については、TechNet ライブラリの「VMMhttps://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx でのVirtual Machinesと記憶域の移行 (https://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx)」を参照してください。

Windows Server 2008 R2 を実行しているホストにデプロイされている仮想マシンを、Windows Server 2016を実行しているホストに移動した場合、仮想マシンを Windows Server 2008 R2 を実行しているホストに戻すことはできません。

VMM には、実行中の仮想マシンの 1 つ以上の仮想ハード ディスクを別の場所に移動できる記憶域移行機能が含まれています。 現在のコマンドレットと Move-SCVirtualHardDisk コマンドレットを使用して、Windows ベースの仮想ハード ディスク (.vhd) ファイルと VMware ベースの仮想ハード ディスク (.vmdk) ファイルを別のホスト上の場所に移動できます。 Move-SCVirtualHardDisk コマンドレットを使用して、.vhd ファイルまたは .vmdk ファイルを同じホスト上のある場所から別の場所に移動することもできます。

ホストから仮想マシンを移動してライブラリに格納するには、Save-SCVirtualMachine コマンドレットを使用する必要があります。

VMM では、次のいずれかの転送方法を使用できます。この方法は、VMM が使用を試みる順序で示されています。

  • Hyper-V ライブ マイグレーション。 仮想マシンが実行されていて、Windows Server 2008 R2 またはホスト クラスターのノードである Hyper-V ホスト Windows Server 2016に展開されている場合、既定では、VMM は Hyper-V ライブ マイグレーションを使用して、サービスを中断することなく、クラスター内の別のノードに仮想マシンを移動します。 実行中の仮想マシンを移動しても、ネットワークから切断されることはありません。 仮想マシンは高可用性属性を保持します。 パスを指定する必要はありません。 複数の仮想マシンのライブ マイグレーションを同時に開始できます。
  • Windows Server 2008 クラスターの移行。 System Center では引き続き Windows 2008 クラスター移行がサポートされています。これはクイック移行と呼ばれることもあります。 クラスター移行は、実行中の仮想マシンをホスト クラスターの Hyper-V ノードに移動します。 また、停止状態または保存済み状態で、クラスター内の別のノードにデプロイされている仮想マシンを移動することもできます。 クラスター移行を使用すると、仮想マシンが次のいずれかのノードにデプロイされている場合に、停止状態または保存済み状態の仮想マシンを移動できます。

----Windows Server 2008 クラスターのノード----Windows Server 2008 R2 クラスターの A ノード

パスを指定する必要はありません。 Windows Server 2008 クラスター移行では、移行中に仮想マシンが保存された状態になります。 この操作により、その仮想マシンのすべてのユーザーにサービスが一時的に失われます。

  • VMware ライブ マイグレーション。 VMware ESX ホストにデプロイされた仮想マシンで共有ストレージが使用されている場合、VMM は VMware ライブ マイグレーション機能を使用して、仮想マシンを新しいホストに移動できます。 この機能は VMware VMotion と呼ばれます。 パスを指定する必要はありません。 現在のコマンドレットでは、VMware VMotion を使用して仮想マシンを ESX ホスト間で移動できるのは、両方の ESX ホストが vCenter Server 上の同じ Datacenter コンテナー内にある場合のみです。
  • Citrix XenServer XenMotion。 Citrix XenServer ホストにデプロイされた仮想マシンが共有ストレージを使用し、同じリソース プールの一部である場合、VMM は XenServer ライブ マイグレーション機能を使用して、仮想マシンを別の XenServer ホストに移動できます。 ライブ マイグレーション機能は Citrix XenMotion と呼ばれます。
  • SAN 移行 (ファイバー チャネル、iSCSI、または NPIV)。 仮想マシンが SAN に接続されているホスト上にあり、仮想マシンが SAN LUN 上にある場合、そのホストが同じ SAN にアクセスできる場合、VMM はその仮想マシンを別のホストに移動できます。 SAN 転送では、ターゲット LUN はソース ホストから宛先ホストにリダイレクトされます。 この移行では、ファイルは移動されません。 SAN 転送は、仮想マシン ファイルをローカル エリア ネットワーク (LAN) 経由でホスト間で移動するよりもはるかに高速です。 VMM では、クラスターとの間での仮想マシンの SAN 移行がサポートされています。 パスを指定する必要があります。 NPIV でのホスト バス アダプタ (HBA) がサポートされる場合、VMM では NPIV SAN 転送を使用できます。
  • ネットワーク移行。 高速な方法がない場合、VMM はネットワーク転送を使用して、2 つのホストを接続する LAN 経由で仮想マシン ファイルをホスト間で移動します。 SAN 転送タイプが使用可能な場合でも、この転送タイプを使用することができます。 パスを指定する必要があります。

複数の転送の種類が使用可能な場合、このコマンドレットは、使用可能な最速の転送の種類を自動的に使用して仮想マシンを移動します。 移動する仮想マシンに対してメソッドが適切でない場合、または使用できない場合、VMM は一覧の次のメソッドの使用を試みます。 ネットワーク転送を強制的に使用する場合は、 UseLAN パラメーターを指定します。

例 1: 仮想マシンをライブラリからホストに移動する

PS C:\> $VM = Get-SCVirtualMachine | Where-Object { $_.Name -Eq "VM01" -And $_.LibraryServer -Eq "LibServer01.Contoso.com" }
PS C:\> $VMHost = Get-SCVMHost -ComputerName "VMHost01.Contoso.com"
PS C:\> Move-SCVirtualMachine -VMHost $VMHost -VM $VM -Path "D:\VirtualMachinePath"

最初のコマンド コマンドは、VM01 という名前の仮想マシン オブジェクトを取得し、そのオブジェクトを $VM 変数に格納します。 この例では、LibServer01 という名前のライブラリ サーバー上の VMM ライブラリに格納されている仮想マシン。 この例では、現在、VM01 という名前の仮想マシンが 1 つだけ LibServer01 に格納されていることを前提としています。

2 番目のコマンドは、VMHost01 という名前のホスト オブジェクトを取得し、そのオブジェクトを $VMHost 変数に格納します。

最後のコマンドは、仮想マシンをライブラリ内の現在の場所から、$VMHostに格納されているホスト上の D:\VirtualMachinePath の場所に移動します。 このコマンドは、使用可能な転送方法のうちで最も迅速な方法を自動的に使用します。 コマンドが完了すると、移動された仮想マシンに関する情報が返されます。

例 2: 仮想マシンをライブラリからホストに非同期的に移動する

PS C:\> $VM = Get-SCVirtualMachine | Where-Object { $_.Name -Eq "VM01" -And $_.LibraryServer -Eq "LibServer01.Contoso.com" }
PS C:\> $VMHost = Get-SCVMHost -ComputerName "VMHost02.Contoso.com"
PS C:\> Move-SCVirtualMachine -VMHost $VMHost -VM $VM -Path "D:\VirtualMachinePath" -RunAsynchronously -JobVariable "MoveVMJob"
PS C:\> $MoveVMJob

この例の最初の 2 つのコマンドは、仮想マシン ホストの名前を除き、最初の例のコマンドと同じです。

3 番目のコマンドは、仮想マシンを現在の場所から VMHost02 の D:\VirtualMachinePath に移動します。 コマンドは、コマンド シェルにコントロールをすぐに返すように RunAsynchronously パラメーターを指定します。 コマンドは、ジョブの進行状況を追跡する JobVariable パラメーターを指定します。 コマンドは、ジョブの進行状況のレコードを $MoveVMJob 変数に格納します。 JobVariable パラメーターの場合、変数を作成するドル記号 ($) は指定しません。

最後のコマンドは、移動ジョブの説明、その状態、進行状況、およびその他の情報を含む、$MoveVMJobの内容を表示します。

例 3: LAN 転送を強制して仮想マシンをライブラリからホストに移動する

PS C:\> $VM = Get-SCVirtualMachine | Where-Object { $_.Name -Eq "VM03" -And $_.LibraryServer -Eq "LibServer01.Contoso.com" }
PS C:\> $VMHost = Get-SCVMHost -ComputerName "VMHost03.Contoso.com"
PS C:\> Move-SCVirtualMachine -VMHost $VMHost -VM $VM -Path "D:\VirtualMachinePath" -UseLAN

最初のコマンドは、ライブラリ サーバー LibServer01 上の VM03 という名前の仮想マシン オブジェクトを取得し、そのオブジェクトを $VM 変数に格納します。

2 番目のコマンドは、VMHost03 という名前のホスト オブジェクトを取得し、そのオブジェクトを $VMHost 変数に格納します。

最後のコマンドは、仮想マシン VM03 をライブラリ内の現在の場所から VMHost03 の D:\VirtualMachinePath に移動します。 コマンドは、高速転送メカニズムが使用可能な場合でも、転送でネットワーク転送を使用するように指定する UseLAN パラメーターを指定します。

例 4: VMware VMotion を使用してホスト間で仮想マシンを移動する

PS C:\> $VM = Get-SCVirtualMachine -Name "VM04" | Where-Object {$_.VMHost.Name -Eq "ESXHost01"}
PS C:\> $VMHost = Get-SCVMHost | Where-Object {$_.Name -Eq "ESXHost02"}
PS C:\> Move-SCVirtualMachine -VM $VM -VMHost $VMHost -Path "[Storage2]"

最初のコマンドは、ESXHost01 上の VM04 という名前の仮想マシン オブジェクトを取得し、そのオブジェクトを $VM 変数に格納します。

2 番目のコマンドは、ESXHost02 という名前の ESX ホスト オブジェクトを取得し、そのオブジェクトを $VMHost 変数に格納します。

最後のコマンドでは、VMware VMotion を使用して、仮想マシンを現在の ESX ホストから他の ESX ホストに移動します。

注: Move-SCVirtualMachine コマンドレットは、VMware VMotion 機能を使用して、仮想マシンを ESX ホスト間で移動できるのは、両方の ESX サーバーが vCenter Server 上の同じ Datacenter コンテナー内にある場合のみです。

例 5: Hyper-V ライブ マイグレーションを使用して、ホスト クラスター内のノード間で高可用性仮想マシンを移動する

PS C:\> $VM = Get-SCVirtualMachine -Name "HAVM05" | Where-Object {$_.VMHost.Name -Eq "VMHVHostNode05A.Contoso.com"}
PS C:\> $VMHost = Get-SCVMHost | Where-Object {$_.Name -Eq "VMHVHostNode05B.Contoso.com"}
PS C:\> Move-SCVirtualMachine -VM $VM -VMHost $VMHost -Path "D:\VMs\"

最初のコマンドは、VMHVHostNode05A 上の HAVM05 という名前の仮想マシン オブジェクトを取得し、そのオブジェクトを $VM 変数に格納します。 この例では、HAVM05 は高可用性仮想マシンです。 VMHVHostNode05A と VMHVHostNode05B は、Hyper-V ホスト クラスター内のノードです。

2 番目のコマンドは、VMHVHostNode05B という名前のホスト オブジェクトを取得し、そのオブジェクトを $VMHost 変数に格納します。

最後のコマンドでは、ライブ マイグレーションを使用して、仮想マシンを VMHVHostNode05A から VMHVHostNode05B に移動します。

例 6: Hyper-V ホスト上の実行中の仮想マシンを同じホスト上の新しい場所に移動する

PS C:\> $MoveVhdPath = "E:\VHDs"
PS C:\> $VM = Get-SCVirtualMachine "VM06"
PS C:\> $VMHost = Get-SCVMHost "VMHost06"
PS C:\> $HostPath = "E:\VirtualMachinePath"
PS C:\> $JobGroupID = [System.Guid]::NewGuid().ToString()
PS C:\> Move-SCVirtualHardDisk -IDE -Bus 1 -Lun 1 -Path $MoveVhdPath -JobGroup $JobGroupID
PS C:\> Move-SCVirtualMachine -VM $VM -VMHost $VMHost -Path $HostPath -JobGroup $JobGroupID

最初のコマンドは、文字列 E:\VHD を$MoveVhdPathに格納します。 これは、仮想マシンの仮想ハード ディスクを移動するパスです。

2 番目のコマンドは、VM06 という名前の仮想マシン オブジェクトを取得し、そのオブジェクトを $VM 変数に格納します。

3 番目のコマンドは、VMHost06 という名前のホスト オブジェクトを取得し、そのオブジェクトを $VMHost 変数に格納します。 この例では、VMHost06 は Hyper-V ホストです。

4 番目のコマンドは、文字列 E:\VirtualMachinePath を $HostPath 変数に格納します。 これは VM06 を移動するパスです。

5 番目のコマンドは、新しい GUID 文字列を作成し、$JobGroupID変数に格納します。 この GUID はジョブ グループ ID で、この ID とそれ以降のコマンドを 1 つのジョブ グループにまとめる識別子の役割を果たします。

6 番目のコマンドは、$MoveVhdPathに格納されている値の仮想ハード ディスク パスを設定し、仮想ハード ディスクを仮想マシン上の仮想 IDE コントローラーの Bus 1 と LUN 1 に接続します。 このコマンドは 、ジョブ グループ リスト内のコマンドの実行を Move-SCVirtualMachine がトリガーするまで実際に実行されないように JobGroup パラメーターを指定します。

最後のコマンドは、VM06 を同じホスト上の E:\VirtualMachinePath に移動します。 コマンドレットは、$JobGroupIDの一部として Move-SCVirtualHardDisk を実行します。 コマンドは、仮想マシンの仮想ハード ディスクを E:\VHD に移動します。

パラメーター

-BlockLiveMigrationIfHostBusy

移行元ホストまたは移行先ホストが既に別のライブ マイグレーションに参加しているために移行に失敗した場合、コマンドレットが Hyper-V ライブ マイグレーションの再試行をブロックすることを示します。

Type:SwitchParameter
Aliases:BlockLMIfHostBusy
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DiscardSavedState

このコマンドレットは、仮想マシンまたはサービスに関連付けられている保存された状態を削除することを示します。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HighlyAvailable

ホスト クラスターの一部である Hyper-V ホストに仮想マシンを配置するかどうかを指定します。

Type:Boolean
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-JobGroup

同じジョブ グループ識別子を含む最後のコマンドが実行される直前に、セットとして実行される一連のコマンドの識別子を指定します。

Type:Guid
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-JobVariable

ジョブの進行状況の変数の名前を指定します。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OnBehalfOfUser

ユーザー名を指定します。 このコマンドレットは、このパラメーターが指定したユーザーの代わりに動作します。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-OnBehalfOfUserRole

ユーザー ロールを指定します。 ユーザー ロールを取得するには、 Get-SCUserRole コマンドレットを使用します。 このコマンドレットは、このパラメーターが指定するユーザー ロールの代わりに動作します。

Type:UserRole
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

移動された仮想マシンのパスを指定します。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PROTipID

このアクションをトリガーしたパフォーマンスとリソースの最適化のヒント (PRO ヒント) の ID を指定します。 このパラメーターを使用すると、PRO のヒントを監査できます。

Type:Guid
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ReplicationGroup

レプリケーション グループを指定します。

Type:ReplicationGroup
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunAsynchronously

コントロールがコマンド シェルにすぐに戻るように、ジョブが非同期的に実行されることを示します。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StartVMOnTarget

このコマンドレットを使用して仮想マシンを移行先ホストに移動するとすぐに仮想マシンを起動するように指定します。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseCluster

このコマンドレットは、クラスターが Hyper-V ライブ マイグレーションをサポートしている場合でも、保存された状態の仮想マシンをホストに転送するためにクラスター移行を使用することを示します。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseDiffDiskOptimization

コマンドレットが差分ディスクの最適化を使用することを示します。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseLAN

高速転送メカニズムが使用可能な場合でも、このコマンドレットで LAN 経由の転送が使用されることを示します。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-VM

仮想マシン オブジェクトを指定します。

Type:VM
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-VMHost

仮想マシン ホスト オブジェクトを指定します。 VMM では、Hyper-V ホスト、VMware ESX ホスト、Citrix XenServer ホストがサポートされています。

各種類のホストの詳細については、 Add-SCVMHost コマンドレットに関するページを参照してください。

Type:Host
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

出力

VirtualMachine

このコマンドレットは、 VirtualMachine オブジェクトを返します。