Configurer une VM Hyper-V avec PowerShell

Comment puis-je reconfigurer les VM Hyper-V ?

Je veux pouvoir changer le fichier de configuration de la VM, les points de contrôle et les emplacements des disques durs virtuels avec PowerShell.

Mes recherches Google ne me dirigent que vers le déplacement. J’ai environ ~100 VM à modifier, je peux déplacer les fichiers, un peu de temps d’arrêt ne me dérange pas. En parcourant l’assistant pour chaque VM, cela prend environ 5 à 15 minutes par VM et ce sont les plus petites. J’ai besoin de pouvoir faire les 100 en 2 heures.

Si j’ai besoin de clarifier, n’hésitez pas à me le dire.

==Où je suis bloqué==

Oui, j’ai vu ce lien et regardé la plupart des commandes, cependant aucune ne fait ce que je recherche.

Les fichiers font au total environ 14 To.

Les ~100 VM sont réparties en cluster entre 7 hôtes. Le stockage partagé est un disque rotatif EMC et je veux les déplacer vers du SSD 3Par.

Ce que j’ai pu faire avec succès, c’est éteindre les VM, déplacer les fichiers, supprimer toutes les VM et les recréer VIA PowerShell, ce qui, quand j’ai dit à mon CTO que c’était peut-être le seul moyen, l’a presque fait avoir une attaque.

Ce que je veux pouvoir faire, c’est ne PAS DÉPLACER les VM mais les RECONFIGURER,

En d’autres termes, pouvoir changer :

VERS :

Je veux pouvoir faire cela en utilisant PowerShell. J’ai aussi besoin de pouvoir faire la même chose pour les points de contrôle, les fichiers de configuration et tous les autres composants des VM Hyper-V.

Je peux tolérer environ 2 heures de temps d’arrêt. Faire le DÉPLACEMENT via l’assistant pour toutes les VM non seulement userait ma souris mais prendrait environ 6 heures.

J’ai aussi fait des recherches et testé différentes stratégies depuis quelques semaines.

====Un dernier essai====

Je ne cherche pas à « déplacer ». Tout ce que je veux pouvoir faire, c’est changer les paramètres depuis Hyper-V. Le déplacement prendrait beaucoup trop de temps. Il est beaucoup plus rapide pour moi de copier les fichiers via le réseau et de simplement mettre à jour les chemins dans Hyper-V. Je peux éteindre les machines.

Je pense que ce n’est pas possible ?

Je ne suis pas vraiment sûr que cela fasse ce dont vous avez besoin, mais voici un exemple de fragment PowerShell que j’ai utilisé par le passé pour migrer des VM incluant tout le stockage vers une nouvelle destination :

Get-VM -Name ('ansible-test-acs',
              'ansible-test-web',
              'ansible-test-db') |
ForEach-Object {
    # move everything to d:\hyper-v\vm_name on hv-srv-01
    $MoveOptions = @{
        'Name'                   = $_.Name
        'DestinationHost'        = 'hv-srv-01'
        'IncludeStorage'         = $true
        'DestinationStoragePath' = 'D:\Hyper-V\{0}' -f $_.Name
    }
    $MoveOptions
    Move-VM @MoveOptions -WhatIf
    # Move-VM @MoveOptions
}

Déplacer le stockage d’une VM vers un nouveau chemin :

('ansible-test-web', 'ansible-test-db') |
ForEach-Object {
    Move-VMStorage $_ `
            -DestinationStoragePath "E:\Hyper-V\$_"
}

Si vous avez copié une VM et tous ses fichiers vers un nouvel emplacement et que vous voulez que Hyper-V commence à utiliser le nouvel emplacement, vous devriez pouvoir faire quelque chose comme :

Remove-VM oldvmname
Import-VM -Register -Path 'path to VM config file'