Partager via


Move-SCVirtualMachine

Déplace une machine virtuelle stockée dans la bibliothèque VMM ou déployée sur un hôte vers un nouvel emplacement sur un hôte.

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

Description

L’applet de commande Move-SCVirtualMachine déplace une machine virtuelle stockée dans la bibliothèque VMM (Virtual Machine Manager) ou déployée sur un hôte vers un nouvel emplacement sur un hôte.

Dans System Center 2019, vous pouvez tirer parti des nouvelles fonctionnalités de migration incluses dans Windows Server 2016. Ces fonctionnalités incluent la migration dynamique de machines virtuelles entre deux ordinateurs autonomes et la migration dynamique entre les ordinateurs autonomes et un nœud de cluster. En outre, plusieurs migrations dynamiques simultanées sont prises en charge. Pour plus d’informations sur la migration des machines virtuelles dans System Center 2019, consultez Migration Machines Virtuelles et stockage dans VMMhttps://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx (https://technet.microsoft.com/en-us/library/mt710321(v=sc.16).aspx) dans la bibliothèque TechNet.

Si vous déplacez une machine virtuelle déployée sur un hôte exécutant Windows Server 2008 R2 vers un hôte exécutant Windows Server 2016, vous ne pouvez pas le déplacer vers un hôte exécutant Windows Server 2008 R2.

VMM inclut des fonctionnalités de migration de stockage qui vous permettent de déplacer un ou plusieurs disques durs virtuels d’une machine virtuelle en cours d’exécution vers un autre emplacement. Vous pouvez utiliser l’applet de commande actuelle et l’applet de commande Move-SCVirtualHardDisk pour déplacer des fichiers de disque dur virtuel Windows (.vhd) et des fichiers de disque dur virtuel VMware (.vmdk) vers un emplacement sur un autre hôte. Vous pouvez également utiliser l’applet de commande Move-SCVirtualHardDisk pour déplacer un fichier .vhd ou un fichier .vmdk d’un emplacement à un autre sur le même hôte.

Pour déplacer une machine virtuelle à partir d’un hôte et la stocker dans la bibliothèque, vous devez utiliser l’applet de commande Save-SCVirtualMachine.

VMM peut utiliser l’une des méthodes de transfert suivantes, répertoriées dans l’ordre dans lequel VMM tente de les utiliser :

  • Migration dynamique Hyper-V. Si une machine virtuelle est en cours d’exécution et est déployée sur un hôte Hyper-V qui est un nœud d’un cluster hôte Windows Server 2008 R2 ou Windows Server 2016, par défaut, VMM utilise la migration dynamique Hyper-V pour déplacer la machine virtuelle vers un autre nœud du cluster sans interruption de service. Le déplacement d’une machine virtuelle en cours d’exécution ne la déconnecte pas du réseau. La machine virtuelle conserve son attribut de haute disponibilité. Vous n’avez pas besoin de spécifier de chemin d’accès. Vous pouvez démarrer la migration dynamique de plusieurs machines virtuelles en même temps.
  • Migration de cluster Windows Server 2008. System Center continue de prendre en charge la migration de cluster Windows 2008, parfois appelée Migration rapide. La migration de cluster déplace une machine virtuelle en cours d’exécution sur un nœud Hyper-V d’un cluster hôte. Il vous permet également de déplacer une machine virtuelle dans un état arrêté ou enregistré, et déployée sur un autre nœud du cluster. Vous pouvez utiliser la migration de cluster pour déplacer une machine virtuelle dans un état arrêté ou enregistré si la machine virtuelle est déployée sur l’un des nœuds suivants :

nœud ----A dans un cluster Windows Server 2008 ----A dans un cluster Windows Server 2008 R2

Vous n’avez pas besoin de spécifier de chemin d’accès. La migration de cluster Windows Server 2008 place la machine virtuelle dans un état enregistré pendant la migration. Cette opération entraîne une perte temporaire de service pour tous les utilisateurs de cette machine virtuelle.

  • Migration dynamique VMware. Si une machine virtuelle déployée sur un hôte VMware ESX utilise un stockage partagé, VMM peut utiliser la fonctionnalité de migration dynamique VMware pour déplacer la machine virtuelle vers un nouvel hôte. Cette fonctionnalité est appelée VMware VMotion. Vous n’avez pas besoin de spécifier de chemin d’accès. L’applet de commande actuelle peut utiliser VMware VMotion pour déplacer une machine virtuelle d’un hôte ESX vers un autre uniquement si les deux hôtes ESX se trouvent dans le même conteneur de centre de données sur le serveur vCenter.
  • Citrix XenServer XenMotion. Si une machine virtuelle déployée sur un hôte Citrix XenServer utilise un stockage partagé et fait partie du même pool de ressources, VMM peut utiliser la fonctionnalité de migration dynamique XenServer pour déplacer la machine virtuelle vers un autre hôte XenServer. La fonctionnalité de migration dynamique est appelée Citrix XenMotion.
  • Migration SAN (Fibre Channel, iSCSI ou NPIV). Si la machine virtuelle se trouve sur un hôte connecté à un réseau SAN et que la machine virtuelle se trouve sur un numéro d’unité logique SAN, VMM peut déplacer cette machine virtuelle vers un autre hôte si cet hôte a accès au même SAN. Dans un transfert SAN, les numéros d’unité logique cibles sont redirigés de l’hôte source vers l’hôte de destination. Cette migration ne déplace pas les fichiers. Un transfert SAN est beaucoup plus rapide que le déplacement de fichiers de machine virtuelle d’un hôte vers un autre via un réseau local (LAN). VMM prend en charge la migration SAN de machines virtuelles vers et hors d’un cluster. Vous devez spécifier un chemin d’accès. VMM peut utiliser un transfert SAN NPIV si une carte bus hôte (HBA) prenant en charge NPIV est disponible.
  • Migration réseau. Si aucune méthode plus rapide n’est disponible, VMM utilise un transfert réseau pour déplacer les fichiers de machine virtuelle d’un hôte à un autre via le réseau local qui connecte les deux hôtes. Vous pouvez décider d’utiliser ce type de transfert même si le type de transfert SAN est disponible. Vous devez spécifier un chemin d’accès.

Lorsque plusieurs types de transfert sont disponibles, cette applet de commande utilise automatiquement le type de transfert le plus rapide disponible pour déplacer une machine virtuelle. Si une méthode n’est pas appropriée ou disponible pour la machine virtuelle que vous souhaitez déplacer, VMM tente d’utiliser la méthode suivante dans la liste. Si vous souhaitez forcer l’utilisation d’un transfert réseau, spécifiez le paramètre UseLAN .

Exemples

Exemple 1 : Déplacer une machine virtuelle de la bibliothèque vers un hôte

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"

La première commande obtient l’objet de machine virtuelle nommé VM01, puis stocke cet objet dans la variable $VM. Dans cet exemple, la machine virtuelle stockée dans la bibliothèque VMM sur le serveur de bibliothèque nommé LibServer01. Cet exemple suppose qu’une seule machine virtuelle nommée VM01 est actuellement stockée sur LibServer01.

La deuxième commande obtient l’objet hôte nommé VMHost01, puis stocke cet objet dans la variable $VMHost.

La dernière commande déplace la machine virtuelle de son emplacement actuel dans la bibliothèque vers l’emplacement D:\VirtualMachinePath sur l’hôte stocké dans $VMHost. La commande utilise automatiquement le type de transfert disponible le plus rapide. Une fois la commande terminée, elle retourne des informations sur la machine virtuelle déplacée.

Exemple 2 : Déplacer une machine virtuelle de la bibliothèque vers un hôte de manière asynchrone

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

Les deux premières commandes de cet exemple sont identiques aux commandes du premier exemple, à l’exception du nom de l’hôte de machine virtuelle.

La troisième commande déplace la machine virtuelle de son emplacement actuel vers D:\VirtualMachinePath sur VMHost02. La commande spécifie le paramètre RunAsynchronously pour retourner immédiatement le contrôle à l’interpréteur de commandes. La commande spécifie le paramètre JobVariable pour suivre la progression du travail. La commande stocke un enregistrement de la progression du travail dans la variable $MoveVMJob. Pour le paramètre JobVariable , vous ne spécifiez pas le signe dollar ($) pour créer la variable.

La dernière commande affiche le contenu de $MoveVMJob, qui inclut une description du travail de déplacement, son état, sa progression et d’autres informations.

Exemple 3 : Déplacer une machine virtuelle de la bibliothèque vers un hôte en forçant un transfert 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

La première commande obtient l’objet de machine virtuelle nommé VM03 sur le serveur de bibliothèque LibServer01, puis stocke cet objet dans la variable $VM.

La deuxième commande obtient l’objet hôte nommé VMHost03, puis stocke cet objet dans la variable $VMHost.

La dernière commande déplace la machine virtuelle VM03 de son emplacement actuel dans la bibliothèque vers D:\VirtualMachinePath sur VMHost03. La commande spécifie le paramètre UseLAN pour spécifier que le transfert utilise un transfert réseau, même si des mécanismes de transfert plus rapides sont disponibles.

Exemple 4 : Déplacer une machine virtuelle entre des hôtes à l’aide de 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]"

La première commande obtient l’objet de machine virtuelle nommé VM04 sur ESXHost01, puis stocke cet objet dans la variable $VM.

La deuxième commande obtient l’objet hôte ESX nommé ESXHost02, puis stocke cet objet dans la variable $VMHost.

La commande finale utilise VMware VMotion pour déplacer la machine virtuelle de son hôte ESX actuel vers l’autre hôte ESX.

REMARQUE : L’applet de commande Move-SCVirtualMachine peut utiliser la fonctionnalité VMware VMotion pour déplacer une machine virtuelle d’un hôte ESX vers un autre uniquement si les deux serveurs ESX se trouvent dans le même conteneur de centre de données sur le serveur vCenter.

Exemple 5 : Déplacer une machine virtuelle hautement disponible entre les nœuds d’un cluster hôte à l’aide de la migration dynamique 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\"

La première commande obtient l’objet de machine virtuelle nommé HAVM05 sur VMHVHostNode05A, puis stocke cet objet dans la variable $VM. Dans cet exemple, HAVM05 est une machine virtuelle hautement disponible. VMHVHostNode05A et VMHVHostNode05B sont des nœuds dans un cluster hôte Hyper-V.

La deuxième commande obtient l’objet hôte nommé VMHVHostNode05B, puis stocke cet objet dans la variable $VMHost.

La commande finale utilise la migration dynamique pour déplacer la machine virtuelle de VMHVHostNode05A vers VMHVHostNode05B.

Exemple 6 : Déplacer une machine virtuelle en cours d’exécution sur un hôte Hyper-V vers un nouvel emplacement sur le même hôte

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

La première commande stocke la chaîne E:\VHD dans $MoveVhdPath. Il s’agit du chemin d’accès auquel déplacer le disque dur virtuel de la machine virtuelle.

La deuxième commande obtient l’objet de machine virtuelle nommé VM06, puis stocke cet objet la variable $VM.

La troisième commande obtient l’objet hôte nommé VMHost06, puis stocke cet objet dans la variable $VMHost. Dans cet exemple, VMHost06 est un hôte Hyper-V.

La quatrième commande stocke la chaîne E:\VirtualMachinePath dans la variable $HostPath. Il s’agit du chemin d’accès auquel déplacer VM06.

La cinquième commande crée une chaîne GUID et la stocke dans la variable $JobGroupID. Ce GUID est un ID de groupe de travaux qui fait office d’identificateur regroupant en un seul groupe de travaux les commandes suivantes qui incluent cet identificateur.

La sixième commande définit le chemin du disque dur virtuel de la valeur stockée dans $MoveVhdPath et connecte le disque dur virtuel à Bus 1 et LUN 1 sur le contrôleur IDE virtuel sur la machine virtuelle. Cette commande spécifie le paramètre JobGroup de sorte qu’il ne s’exécute pas réellement tant que Move-SCVirtualMachine n’a pas déclenché l’exécution de toutes les commandes dans la liste des groupes de travaux.

La dernière commande déplace VM06 vers E:\VirtualMachinePath sur le même hôte. L’applet de commande s’exécute Move-SCVirtualHardDisk dans le cadre de $JobGroupID. La commande déplace le disque dur virtuel de la machine virtuelle vers E:\VHD.

Paramètres

-BlockLiveMigrationIfHostBusy

Indique que l’applet de commande bloque la nouvelle tentative d’une migration dynamique Hyper-V si la migration a échoué, car l’hôte source ou l’hôte de destination participe déjà à une autre migration dynamique.

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

-DiscardSavedState

Indique que cette applet de commande supprime l’état enregistré associé à une machine virtuelle ou un service.

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

-HighlyAvailable

Spécifie s’il faut placer une machine virtuelle sur un hôte Hyper-V qui fait partie d’un cluster hôte.

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

-JobGroup

Spécifie un identificateur pour une série de commandes qui s’exécute en tant que jeu juste avant la commande finale qui inclut le même identificateur de groupe de travaux.

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

-JobVariable

Spécifie le nom d’une variable pour la progression du travail.

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

-OnBehalfOfUser

Spécifie un nom d'utilisateur. Cette applet de commande fonctionne pour le compte de l’utilisateur que ce paramètre spécifie.

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

-OnBehalfOfUserRole

Spécifie un rôle d’utilisateur. Pour obtenir un rôle d’utilisateur, utilisez l’applet de commande Get-SCUserRole . Cette applet de commande fonctionne pour le compte du rôle d’utilisateur spécifié par ce paramètre.

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

-Path

Spécifie le chemin d’accès de la machine virtuelle déplacée.

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

-PROTipID

Spécifie l’ID du conseil d’optimisation des performances et des ressources qui a déclenché cette action. Ce paramètre vous permet d’auditer les conseils PRO.

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

-ReplicationGroup

Spécifie un groupe de réplication.

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

-RunAsynchronously

Indique que le travail s’exécute de manière asynchrone afin que le contrôle retourne immédiatement à l’interpréteur de commandes.

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

-StartVMOnTarget

Spécifie qu’une machine virtuelle démarre dès que cette applet de commande la déplace vers son hôte de destination.

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

-UseCluster

Indique que cette applet de commande utilise la migration de cluster pour le transfert d’une machine virtuelle dans un état enregistré vers un hôte, même si le cluster prend en charge la migration dynamique Hyper-V.

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

-UseDiffDiskOptimization

Indique que l’applet de commande utilise l’optimisation du disque de différenciation.

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

-UseLAN

Indique que cette applet de commande utilise le transfert via le réseau local, même si un mécanisme de transfert plus rapide est disponible.

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

-VM

Spécifie un objet ordinateur virtuel.

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

-VMHost

Spécifie un objet ordinateur hôte d’ordinateur virtuel. VMM prend en charge les hôtes Hyper-V, les hôtes VMware ESX et les hôtes Citrix XenServer.

Pour plus d’informations sur chaque type d’hôte, consultez l’applet de commande Add-SCVMHost .

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

Sorties

VirtualMachine

Cette applet de commande retourne un objet VirtualMachine .