Freigeben über


Move-SCVirtualMachine

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

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 ist oder auf einem Host an einen neuen Speicherort auf einem Host bereitgestellt wird.

In System Center 2019 können Sie neue Migrationsfunktionen nutzen, die in Windows Server 2016 enthalten sind. Diese Funktionen umfassen die Livemigration virtueller Computer zwischen zwei eigenständigen Computern und 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 2019 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 virtuellen Computer verschieben, der auf einem Host mit Windows Server 2008 R2 auf einen Host mit Windows Server 2016 ausgeführt wird, können Sie den virtuellen Computer nicht zurück zu einem 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 Move-SCVirtualHardDisk-Cmdlet verwenden, um Windows-basierte virtuelle Festplattendateien (VHD)-Dateien und VMware-basierte virtuelle Festplattendateien (VMDK) an einen Speicherort auf einem anderen Host zu verschieben. Sie können auch das Move-SCVirtualHardDisk-Cmdlet verwenden, um eine VHD-Datei oder eine VMDK-Datei von einem Speicherort in 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 wird 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 hyper-V-Livemigration, um den virtuellen Computer ohne Unterbrechung des Diensts in einen anderen Knoten im Cluster zu verschieben. Beim Verschieben eines ausgeführten virtuellen Computers wird die Verbindung nicht vom Netzwerk getrennt. Der virtuelle Computer behält sein Attribut für hohe Verfügbarkeit 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 Schnellmigration 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 angehaltenen oder gespeicherten Zustand befindet und auf einem anderen Knoten im Cluster bereitgestellt wird. Sie können die Clustermigration verwenden, um einen virtuellen Computer in einem beendeten oder gespeicherten Zustand zu verschieben, wenn der virtuelle Computer auf einem der folgenden Knoten bereitgestellt wird:

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

Sie müssen keinen Pfad angeben. Windows Server 2008 Clustermigration platziert den virtuellen Computer während der Migration in einen gespeicherten Zustand. Dieser Vorgang verursacht einen temporären Dienstverlust für alle Benutzer dieses virtuellen Computers.

  • VMware Livemigration. Wenn ein virtueller Computer, der auf einem VMware ESX-Host bereitgestellt wird, freigegebenen Speicher verwendet, kann VMM das VMware-Livemigrationsfeature verwenden, um den virtuellen Computer in 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 von einem ESX-Host in einen anderen zu verschieben, nur wenn beide ESX-Hosts im gleichen Datacenter-Container auf dem vCenter Server enthalten sind.
  • Citrix XenServer XenMotion. Wenn ein virtueller Computer, der auf einem Citrix XenServer-Host bereitgestellt wird, 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 wird Citrix XenMotion genannt.
  • SAN-Migration (Fibre Channel, iSCSI oder NPIV). Wenn sich der virtuelle Computer auf einem Host befindet, der mit einem SAN verbunden ist und sich der virtuelle Computer auf einem SAN LUN befindet, 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 an den Zielhost umgeleitet. Diese Migration verschebt keine Dateien. Eine SAN-Übertragung ist viel schneller als das Verschieben virtueller Computerdateien von einem Host in 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 Dateien des virtuellen Computers von einem Host in ein anderes ü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 mehr als ein Übertragungstyp verfügbar ist, verwendet dieses Cmdlet automatisch den schnellsten verfügbaren Übertragungstyp, um einen virtuellen Computer zu verschieben. Wenn eine Methode nicht geeignet oder für den virtuellen Computer verfügbar ist, den Sie verschieben möchten, 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 in 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 Befehl ruft das virtuelle Computerobjekt mit dem Namen VM01 ab und speichert dieses Objekt dann in der $VM Variablen. In diesem Beispiel wird der virtuelle Computer, der in der VMM-Bibliothek auf dem Bibliotheksserver namens LibServer01 gespeichert ist, 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 namens VMHost01 ab und speichert dieses Objekt dann in der $VMHost Variablen.

Der letzte Befehl verschiebt den virtuellen Computer von seinem aktuellen Speicherort in der Bibliothek an den Speicherort D:\VirtualMachinePath auf dem in $VMHost gespeicherten Host. Der Befehl verwendet automatisch den schnellsten verfügbaren Übertragungstyp. Nach Abschluss des Befehls werden Informationen über den verschobenen virtuellen Computer zurückgegeben.

Beispiel 2: Asynchrones Verschieben eines virtuellen Computers aus der Bibliothek in 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 identisch mit den Befehlen im ersten Beispiel, mit Ausnahme des Namens des virtuellen Computerhosts.

Der dritte Befehl verschiebt den virtuellen Computer von seinem aktuellen Speicherort auf 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 Parameter JobVariable geben Sie das Dollarzeichen ($) nicht an, um die Variable zu erstellen.

Der letzte Befehl zeigt den Inhalt von $MoveVMJob an, der eine Beschreibung des Bewegungsauftrags, seinen Status, seinen Status und andere Informationen enthält.

Beispiel 3: Verschieben eines virtuellen Computers aus der Bibliothek in 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 virtuelle Computerobjekt namens VM03 auf 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 $VMHost Variablen.

Der letzte Befehl verschiebt den virtuellen Computer VM03 von seinem aktuellen Speicherort in der Bibliothek auf D:\VirtualMachinePath auf VMHost03. 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 virtuelle Computerobjekt mit dem Namen VM04 auf ESXHost01 ab und speichert dieses Objekt dann in der $VM Variablen.

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

Der letzte Befehl verwendet VMware VMotion, um den virtuellen Computer vom aktuellen ESX-Host in den anderen ESX-Host zu verschieben.

HINWEIS: Das Cmdlet Move-SCVirtualMachine kann das VMware VMotion-Feature verwenden, um einen virtuellen Computer nur von einem ESX-Host in einen anderen zu verschieben, wenn sich beide ESX-Server im gleichen 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 virtuelle Computerobjekt mit dem Namen HAVM05 auf VMHVHostNode05A ab und speichert dieses Objekt dann in der $VM Variablen. In diesem Beispiel ist HAVM05 ein hoch verfügbarer virtueller Computer. VMHVHostNode05A und VMHVHostNode05B sind Knoten in einem Hyper-V-Hostcluster.

Der zweite Befehl ruft das Hostobjekt namens VMHVHostNode05B ab und speichert dieses Objekt dann in der $VMHost Variablen.

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, mit dem die virtuelle Festplatte des virtuellen Computers verschoben werden soll.

Der zweite Befehl ruft das virtuelle Computerobjekt mit dem Namen VM06 ab und speichert dieses Objekt dann die $VM Variable.

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

Der vierte Befehl speichert die Zeichenfolge E:\VirtualMachinePath in der $HostPath Variablen. Dies ist der Pfad zum Verschieben von VM06.

Der fünfte Befehl erstellt eine neue GUID-Zeichenfolge und speichert sie in der variablen $JobGroupID. 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 virtuellen Festplattenpfad des in $MoveVhdPath gespeicherten Werts fest 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 von Befehlen in der Auftragsgruppenliste auslöst.

Der letzte Befehl verschiebt VM06 auf E:\VirtualMachinePath auf demselben Host. Das Cmdlet führt Move-SCVirtualHardDisk als Teil von $JobGroupID aus. Der Befehl verschiebt die virtuelle Festplatte des virtuellen Computers auf E:\VHDs.

Parameter

-BlockLiveMigrationIfHostBusy

Gibt an, dass das Cmdlet eine Hyper-V-Livemigration blockiert, wenn die Migration fehlgeschlagen ist, da 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 direkt vor dem letzten Befehl ausgeführt werden, 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 Variable für den Auftragsfortschritt 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 Auftrag 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 der Leistungs- und Ressourcenoptimierungs-Tipp (PRO-Tipp) an, die 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 an die Befehlsshell zurückgibt.

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 dieses Cmdlet ihn in den Zielhost verschiebt.

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 verwendet, der sich in einem gespeicherten Zustand befindet, auch wenn der Cluster 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 verschiedene 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 jedem Hosttyp finden Sie im Add-SCVMHost-Cmdlet .

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.