Move-SCVirtualMachine

Verschiebt einen virtuellen Computer, der in der VMM-Bibliothek gespeichert oder auf einem Host bereitgestellt wird, an einen neuen Speicherort auf einem Host.

Syntax

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>]

Beschreibung

Das Cmdlet Move-SCVirtualMachine verschiebt einen virtuellen Computer, der in der VMM-Bibliothek (Virtual Machine Manager) gespeichert oder auf einem Host bereitgestellt wird, an einen neuen Speicherort auf einem Host.

In System Center 2019 und höher können Sie die neuen Migrationsfunktionen nutzen, die in Windows Server 2016 enthalten sind. Diese Funktionen umfassen die Livemigration virtueller Computer zwischen zwei eigenständigen Computern sowie die Livemigration zwischen eigenständigen Computern und einem Clusterknoten. Darüber hinaus werden mehrere gleichzeitige Livemigrationen unterstützt. Weitere Informationen zum Migrieren virtueller Computer in System Center finden Sie unter Migrieren von Virtual Machines und Speicher in VMMhttps://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx (https://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx) in der TechNet-Bibliothek.

Wenn Sie einen auf einem Host mit Windows Server 2008 R2 bereitgestellten virtuellen Computer auf einen Host verschieben, auf dem Windows Server 2016 ausgeführt wird, können Sie den virtuellen Computer nicht wieder auf einen Host mit Windows Server 2008 R2 verschieben.

VMM enthält Speichermigrationsfeatures, mit denen Sie eine oder mehrere virtuelle Festplatten eines ausgeführten virtuellen Computers an einen anderen Speicherort verschieben können. Sie können das aktuelle Cmdlet und das Cmdlet Move-SCVirtualHardDisk verwenden, um Windows-basierte virtuelle Festplattendateien (.vhd) und VMware-basierte virtuelle Festplattendateien (VMDK) an einen Speicherort auf einem anderen Host zu verschieben. Sie können auch das Cmdlet Move-SCVirtualHardDisk verwenden, um eine VHD-Datei oder eine VMDK-Datei von einem Speicherort an einen anderen auf demselben Host zu verschieben.

Um einen virtuellen Computer von einem Host zu verschieben und in der Bibliothek zu speichern, müssen Sie das Cmdlet Save-SCVirtualMachine verwenden.

VMM kann eine der folgenden Übertragungsmethoden verwenden, die in der Reihenfolge aufgeführt sind, in der VMM versucht, sie zu verwenden:

  • Hyper-V-Livemigration. Wenn ein virtueller Computer ausgeführt und auf einem Hyper-V-Host bereitgestellt wird, der ein Knoten eines Windows Server 2008 R2- oder Windows Server 2016-Hostclusters ist, verwendet VMM standardmäßig die Hyper-V-Livemigration, um den virtuellen Computer ohne Dienstunterbrechung auf einen anderen Knoten im Cluster zu verschieben. Durch das Verschieben eines ausgeführten virtuellen Computers wird er nicht vom Netzwerk getrennt. Der virtuelle Computer behält sein Hochverfügbarkeitsattribut bei. Sie müssen keinen Pfad angeben. Sie können die Livemigration mehrerer virtueller Computer gleichzeitig starten.
  • Windows Server 2008-Clustermigration. System Center unterstützt weiterhin die Windows 2008-Clustermigration, die manchmal als Schnelle Migration bezeichnet wird. Die Clustermigration verschiebt einen ausgeführten virtuellen Computer auf einem Hyper-V-Knoten eines Hostclusters. Außerdem können Sie einen virtuellen Computer verschieben, der sich in einem beendeten oder gespeicherten Zustand befindet und auf einem anderen Knoten im Cluster bereitgestellt wird. Sie können die Clustermigration verwenden, um einen virtuellen Computer in einen beendeten oder gespeicherten Zustand zu verschieben, wenn der virtuelle Computer auf einem der folgenden Knoten bereitgestellt wird:

----Knoten in einem Windows Server 2008-Cluster ----A-Knoten in einem Windows Server 2008 R2-Cluster

Sie müssen keinen Pfad angeben. Die Windows Server 2008-Clustermigration versetzt den virtuellen Computer während der Migration in einen gespeicherten Zustand. Dieser Vorgang verursacht einen vorübergehenden Verlust des Diensts für alle Benutzer dieses virtuellen Computers.

  • VMware-Livemigration. Wenn ein auf einem VMware ESX-Host bereitgestellter virtueller Computer freigegebenen Speicher verwendet, kann VMM das VMware-Livemigrationsfeature verwenden, um den virtuellen Computer auf einen neuen Host zu verschieben. Dieses Feature wird als VMware VMotion bezeichnet. Sie müssen keinen Pfad angeben. Das aktuelle Cmdlet kann VMware VMotion verwenden, um einen virtuellen Computer nur dann von einem ESX-Host auf einen anderen zu verschieben, wenn sich beide ESX-Hosts im selben Rechenzentrumscontainer auf dem vCenter Server befinden.
  • Citrix XenServer XenMotion. Wenn ein auf einem Citrix XenServer-Host bereitgestellter virtueller Computer freigegebenen Speicher verwendet und Teil desselben Ressourcenpools ist, kann VMM das XenServer-Livemigrationsfeature verwenden, um den virtuellen Computer auf einen anderen XenServer-Host zu verschieben. Das Livemigrationsfeature heißt Citrix XenMotion.
  • SAN-Migration (Fibre Channel, iSCSI oder NPIV). Wenn sich der virtuelle Computer auf einem Host befindet, der mit einem SAN verbunden ist, und der virtuelle Computer auf einer SAN-LUN, kann VMM diesen virtuellen Computer auf einen anderen Host verschieben, wenn dieser Host Zugriff auf dasselbe SAN hat. Bei einer SAN-Übertragung werden die Ziel-LUNs vom Quellhost zum Zielhost umgeleitet. Bei dieser Migration werden keine Dateien verschoben. Eine SAN-Übertragung ist viel schneller als das Verschieben von Vm-Dateien von einem Host auf einen anderen über ein lokales Netzwerk (LAN). VMM unterstützt die SAN-Migration virtueller Computer in und aus einem Cluster. Sie müssen einen Pfad angeben. Eine NPIV-SAN-Übertragung kann in VMM verwendet werden, wenn ein Hostbusadapter (HBA) mit NPIV-Unterstützung verfügbar ist.
  • Netzwerkmigration. Wenn keine schnellere Methode verfügbar ist, verwendet VMM eine Netzwerkübertragung, um die Vm-Dateien von einem Host auf einen anderen über das LAN zu verschieben, das die beiden Hosts verbindet. Sie können diesen Übertragungstyp auch dann verwenden, wenn der SAN-Übertragungstyp verfügbar ist. Sie müssen einen Pfad angeben.

Wenn mehrere Übertragungstypen verfügbar sind, verwendet dieses Cmdlet automatisch den schnellsten verfügbaren Übertragungstyp, um einen virtuellen Computer zu verschieben. Wenn eine Methode für den virtuellen Computer, den Sie verschieben möchten, nicht geeignet oder verfügbar ist, versucht VMM, die nächste Methode in der Liste zu verwenden. Wenn Sie die Verwendung einer Netzwerkübertragung erzwingen möchten, geben Sie den UseLAN-Parameter an.

Beispiele

Beispiel 1: Verschieben eines virtuellen Computers aus der Bibliothek auf einen Host

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"

Der erste Befehlsbefehl ruft das VM-Objekt mit dem Namen VM01 ab und speichert dieses Objekt dann in der variablen $VM. In diesem Beispiel wird der virtuelle Computer in der VMM-Bibliothek auf dem Bibliotheksserver libServer01 gespeichert. In diesem Beispiel wird davon ausgegangen, dass derzeit nur ein virtueller Computer mit dem Namen VM01 auf LibServer01 gespeichert ist.

Der zweite Befehl ruft das Hostobjekt mit dem Namen VMHost01 ab und speichert dieses Objekt dann in der variablen $VMHost.

Mit dem letzten Befehl wird der virtuelle Computer von seinem aktuellen Speicherort in der Bibliothek an den Speicherort D:\VirtualMachinePath auf dem Host verschoben, der in $VMHost gespeichert ist. Der Befehl verwendet automatisch den schnellsten verfügbaren Übertragungstyp. Nach Abschluss des Befehls werden Informationen zum verschobenen virtuellen Computer zurückgegeben.

Beispiel 2: asynchrones Verschieben eines virtuellen Computers aus der Bibliothek auf einen Host

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

Die ersten beiden Befehle in diesem Beispiel sind mit den Befehlen im ersten Beispiel identisch, mit Ausnahme des Namens des Vm-Hosts.

Der dritte Befehl verschiebt den virtuellen Computer von seinem aktuellen Speicherort nach D:\VirtualMachinePath auf VMHost02. Der Befehl gibt den RunAsynchronly-Parameter an, um die Steuerung sofort an die Befehlsshell zurückzugeben. Der Befehl gibt den JobVariable-Parameter an, um den Fortschritt des Auftrags nachzuverfolgen. Der Befehl speichert einen Datensatz des Auftragsfortschritts in der variablen $MoveVMJob. Für den JobVariable-Parameter geben Sie nicht das Dollarzeichen ($) an, um die Variable zu erstellen.

Der letzte Befehl zeigt den Inhalt von $MoveVMJob an, der eine Beschreibung des Verschiebungsauftrags, seiner status, des Fortschritts und anderer Informationen enthält.

Beispiel 3: Verschieben eines virtuellen Computers aus der Bibliothek auf einen Host durch Erzwingen einer LAN-Übertragung

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

Der erste Befehl ruft das VM-Objekt mit dem Namen VM03 auf dem Bibliotheksserver LibServer01 ab und speichert dieses Objekt dann in der $VM Variablen.

Der zweite Befehl ruft das Hostobjekt mit dem Namen VMHost03 ab und speichert dieses Objekt dann in der variablen $VMHost.

Mit dem letzten Befehl wird der virtuelle Computer VM03 von seinem aktuellen Speicherort in der Bibliothek in D:\VirtualMachinePath auf VMHost03 verschoben. Der Befehl gibt den UseLAN-Parameter an, um anzugeben, dass die Übertragung eine Netzwerkübertragung verwendet, auch wenn schnellere Übertragungsmechanismen verfügbar sind.

Beispiel 4: Verschieben eines virtuellen Computers zwischen Hosts mithilfe von 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]"

Der erste Befehl ruft das VM-Objekt mit dem Namen VM04 auf ESXHost01 ab und speichert dieses Objekt dann in der variablen $VM.

Der zweite Befehl ruft das ESX-Hostobjekt mit dem Namen ESXHost02 ab und speichert dieses Objekt dann in der $VMHost Variablen.

Der letzte Befehl verwendet VMware VMotion, um den virtuellen Computer von seinem aktuellen ESX-Host auf den anderen ESX-Host zu verschieben.

HINWEIS: Das Cmdlet Move-SCVirtualMachine kann das VMware VMotion-Feature verwenden, um einen virtuellen Computer von einem ESX-Host auf einen anderen zu verschieben, wenn sich beide ESX-Server im selben Datacenter-Container auf dem vCenter Server befinden.

Beispiel 5: Verschieben eines hoch verfügbaren virtuellen Computers zwischen Knoten in einem Hostcluster mithilfe der Hyper-V-Livemigration

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\"

Der erste Befehl ruft das Objekt des virtuellen Computers mit dem Namen HAVM05 auf VMHVHostNode05A ab und speichert dieses Objekt dann in der variablen $VM. In diesem Beispiel ist HAVM05 ein hoch verfügbarer virtueller Computer. VMHVHostNode05A und VMHVHostNode05B sind Knoten in einem Hyper-V-Hostcluster.

Mit dem zweiten Befehl wird das Hostobjekt VMHVHostNode05B abgerufen und anschließend in der variablen $VMHost gespeichert.

Der letzte Befehl verwendet die Livemigration, um den virtuellen Computer von VMHVHostNode05A zu VMHVHostNode05B zu verschieben.

Beispiel 6: Verschieben eines ausgeführten virtuellen Computers auf einem Hyper-V-Host an einen neuen Speicherort auf demselben Host

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

Der erste Befehl speichert die Zeichenfolge E:\VHDs in $MoveVhdPath. Dies ist der Pfad, in dem die virtuelle Festplatte des virtuellen Computers verschoben werden soll.

Der zweite Befehl ruft das VM-Objekt mit dem Namen VM06 ab und speichert dieses Objekt dann als $VM Variable.

Der dritte Befehl ruft das Hostobjekt mit dem Namen VMHost06 ab und speichert dieses Objekt dann in der variablen $VMHost. In diesem Beispiel ist VMHost06 ein Hyper-V-Host.

Der vierte Befehl speichert die Zeichenfolge E:\VirtualMachinePath in der variablen $HostPath. Dies ist der Pfad, dessen VM06 verschoben werden soll.

Mit dem fünften Befehl wird eine neue GUID-Zeichenfolge erstellt und in der variablen $JobGroupID gespeichert. Bei dieser GUID handelt es sich um eine Auftragsgruppen-ID, die als Bezeichner dient, mit dem nachfolgende Befehle, die diesen Bezeichner enthalten, zu einer Auftragsgruppe zusammengefasst werden.

Der sechste Befehl legt den Pfad der virtuellen Festplatte des Werts fest, der in $MoveVhdPath gespeichert ist, und verbindet die virtuelle Festplatte mit Bus 1 und LUN 1 auf dem virtuellen IDE-Controller auf dem virtuellen Computer. Dieser Befehl gibt den JobGroup-Parameter an, sodass er erst ausgeführt wird, wenn Move-SCVirtualMachine die Ausführung aller Befehle in der Auftragsgruppenliste auslöst.

Der letzte Befehl verschiebt VM06 zu E:\VirtualMachinePath auf demselben Host. Das Cmdlet wird im Rahmen von $JobGroupID Move-SCVirtualHardDisk ausgeführt. Der Befehl verschiebt die virtuelle Festplatte des virtuellen Computers auf E:\VHDs.

Parameter

-BlockLiveMigrationIfHostBusy

Gibt an, dass das Cmdlet das Wiederholen einer Hyper-V-Livemigration blockiert, wenn bei der Migration ein Fehler aufgetreten ist, weil der Quellhost oder der Zielhost bereits an einer anderen Livemigration teilnimmt.

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

-DiscardSavedState

Gibt an, dass dieses Cmdlet den gespeicherten Zustand löscht, der einem virtuellen Computer oder Dienst zugeordnet ist.

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

-HighlyAvailable

Gibt an, ob ein virtueller Computer auf einem Hyper-V-Host platziert werden soll, der Teil eines Hostclusters ist.

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

-JobGroup

Gibt einen Bezeichner für eine Reihe von Befehlen an, die als Satz ausgeführt werden, bevor der endgültige Befehl ausgeführt wird, der denselben Auftragsgruppenbezeichner enthält.

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

-JobVariable

Gibt den Namen einer Variablen für den Auftragsstatus an.

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

-OnBehalfOfUser

Gibt einen Benutzernamen an. Dieses Cmdlet wird im Namen des Benutzers ausgeführt, den dieser Parameter angibt.

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

-OnBehalfOfUserRole

Gibt eine Benutzerrolle an. Verwenden Sie zum Abrufen einer Benutzerrolle das Cmdlet Get-SCUserRole . Dieses Cmdlet wird im Auftrag der Benutzerrolle ausgeführt, die dieser Parameter angibt.

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

-Path

Gibt den Pfad des verschobenen virtuellen Computers an.

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

-PROTipID

Gibt die ID des Tipps zur Leistungs- und Ressourcenoptimierung (PRO-Tipp) an, der diese Aktion ausgelöst hat. Mit diesem Parameter können Sie PRO-Tipps überwachen.

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

-ReplicationGroup

Gibt eine Replikationsgruppe an.

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

-RunAsynchronously

Gibt an, dass der Auftrag asynchron ausgeführt wird, sodass das Steuerelement sofort zur Befehlsshell zurückkehrt.

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

-StartVMOnTarget

Gibt an, dass ein virtueller Computer gestartet wird, sobald er von diesem Cmdlet auf den Zielhost verschoben wird.

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

-UseCluster

Gibt an, dass dieses Cmdlet die Clustermigration für die Übertragung eines virtuellen Computers, der sich im gespeicherten Zustand befindet, auf einen Host verwendet, auch wenn der Cluster die Hyper-V-Livemigration unterstützt.

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

-UseDiffDiskOptimization

Gibt an, dass das Cmdlet unterschiedliche Datenträgeroptimierung verwendet.

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

-UseLAN

Gibt an, dass dieses Cmdlet die Übertragung über das LAN verwendet, auch wenn ein schnellerer Übertragungsmechanismus verfügbar ist.

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

-VM

Gibt ein Objekt virtueller Maschinen an.

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

-VMHost

Gibt ein Hostobjekt für virtuelle Maschinen an. VMM unterstützt Hyper-V-Hosts, VMware ESX-Hosts und Citrix XenServer-Hosts.

Weitere Informationen zu den einzelnen Hosttypen finden Sie im Cmdlet Add-SCVMHost .

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

Ausgaben

VirtualMachine

Dieses Cmdlet gibt ein VirtualMachine-Objekt zurück.