Configurer le PowerShell VM Hyper-V

13

Comment puis-je reconfigurer les machines virtuelles Hyper-V

Je souhaite pouvoir modifier le fichier de configuration de la machine virtuelle, les points de contrôle et les emplacements des disques durs virtuels avec Powershell.

Mon Google-FU me pointe uniquement vers le déplacement, j'ai environ 100 machines virtuelles à modifier, je peux déplacer les fichiers, cela ne me dérange pas un peu de temps d'arrêt, lorsque vous parcourez l'assistant pour chaque machine virtuelle, cela prend environ 5 à 15 minutes par VM et ce sont les plus petits, je dois pouvoir faire les 100 en 2 heures.

Si j'ai besoin de clarifier, faites-le moi savoir.

== Où je suis coincé ==

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

L'ensemble des fichiers fait environ 14 To

Les ~ 100 VM sont regroupées entre 7 hôtes. Le stockage partagé est un disque tournant EMC et je souhaite les déplacer vers 3Par ssd.

Maintenant, ce que j'ai réussi à faire, c'est d'arrêter les machines virtuelles, de déplacer les fichiers, de supprimer toutes les machines virtuelles et de les recréer VIA PowerShell, ce qui, lorsque j'ai dit à mon CTO, était peut-être le seul moyen pour lui de chier les chatons.

Ce que je veux pouvoir ne pas déplacer les VM, c'est juste les RECONFIGURER,

Dans d'autres travaux, pouvoir changer:

entrez la description de l'image ici

À:

entrez la description de l'image ici

Je veux pouvoir faire cela en utilisant powershell, j'ai également besoin de pouvoir faire la même chose pour les points de contrôle et les fichiers de configuration et tous les autres composants de la machine virtuelle Hyper-V.

Je peux tolérer environ 2 heures d'indisponibilité, faire le MOVE via l'assistant pour toutes les VMs non seulement usera ma souris mais prendra environ 6 heures.

J'ai également étudié cela et testé différentes stratégies depuis quelques semaines maintenant.

==== Un coup de plus ====

Je ne cherche pas à "déplacer" tout ce que je veux pouvoir faire est de changer les paramètres depuis le déplacement hyper-V, cela prendra beaucoup de temps, il est beaucoup plus rapide pour moi de copier les fichiers sur le réseau et de simplement mettre à jour les chemins dans Hyper-V, je peux arrêter les machines.

Je pense que cela ne peut pas être fait?

Anthony Fornito
la source
Quel genre de recherche avez-vous fait jusqu'à présent? La documentation du module hyper-v me semble assez bonne. Où êtes-vous coincé?
Zoredache
@Zoredache s'il vous plaît regardez la mise à jour.
Anthony Fornito, le
1
S'ils sont en cluster, il vous suffit de déplacer le stockage, en utilisant l'option déplacer le stockage. Il est dans l'interface graphique et ne devrait entraîner aucun temps d'arrêt. blogs.msdn.microsoft.com/clustering/2012/04/26/…
Drifter104
Im thinking it cannot be done?Je pense que cela peut être fait, mais ce serait un script long et compliqué. Presque tout sur une machine virtuelle peut être entièrement manipulé via PowerShell. Je soupçonne que vous rendez votre vie beaucoup plus difficile en ne laissant pas les outils gérer le déplacement des fichiers pour vous.
Zoredache
@Zoredache dans un monde parfait où j'avais 6 heures oui ce serait bien d'utiliser les outils, mais j'en ai 2
Anthony Fornito

Réponses:

8

Je ne suis pas vraiment sûr que cela fasse ce dont vous avez besoin, mais il existe un exemple de fragment PowerShell que j'ai utilisé dans le passé pour migrer des machines virtuelles, y compris 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 VM vers un nouveau chemin

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

Si vous avez copié une machine virtuelle et tous ses fichiers vers un nouvel emplacement et que vous souhaitez 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'
Zoredache
la source
Merci pour le code mais il déplace toujours la mise à jour de la machine virtuelle
Anthony Fornito
Vous avez vu l'option de déplacer juste le stockage, n'est-ce pas?
Zoredache
Oui, mais je ne cherche pas à `` déplacer '' le stockage, j'ai copié le fichier vhdx vers le nouvel emplacement, je peux également utiliser la commande Set-VMHardDiskDrive qui fonctionne pour changer le répertoire de stockage lorsque la machine virtuelle est éteinte, ce qui est également très bien, mais je ne peux pas savoir comment «changer» le pointeur pour le fichier de configuration de la machine virtuelle.
Anthony Fornito
Si vous avez réellement copié tous les fichiers et que vous en êtes certain, supprimez ensuite la suppression et réimportez la machine virtuelle. Réponse mise à jour avec un exemple.
Zoredache