Configurar PowerShell de máquina virtual Hyper-V

13

¿Cómo puedo reconfigurar las máquinas virtuales Hyper-V?

Quiero poder cambiar el archivo de configuración de VM, los puntos de verificación y las ubicaciones de los discos duros virtuales con Powershell.

Mi Google-FU solo me apunta a moverme, tengo alrededor de ~ 100 máquinas virtuales para cambiar, puedo mover los archivos, no me importa un poco de tiempo de inactividad, cuando recorro el asistente para cada máquina virtual, me lleva de 5 a 15 minutos por cada VM y esos son los más pequeños, necesito poder hacer los 100 en 2 horas.

Si necesito aclarar por favor hágamelo saber.

== Donde estoy atascado ==

Sí, he visto ese enlace y he visto la mayoría de los comandos, sin embargo, ninguno hace lo que estoy buscando.

Todos los archivos juntos son aproximadamente 14 TB

Las ~ 100 máquinas virtuales se agrupan entre 7 hosts. El almacenamiento compartido es un disco giratorio de EMC y quiero moverlos a 3Par ssd.

Ahora, lo que pude hacer con éxito fue apagar las máquinas virtuales, mover los archivos, eliminar todas las máquinas virtuales y recrearlas a través de POWERShell, que cuando le dije a mi CTO que esa era la única forma en que él podía cagar gatitos.

Lo que quiero poder no es MOVER las máquinas virtuales, simplemente RECONFIGURARLAS,

En otras obras se podrá cambiar:

ingrese la descripción de la imagen aquí

A:

ingrese la descripción de la imagen aquí

Quiero poder hacer esto usando powershell, también necesito poder hacer lo mismo para los puntos de control, los archivos de configuración y todos los demás componentes de VM de Hyper-V.

Puedo tolerar aproximadamente 2 horas de tiempo de inactividad, hacer el MOVIMIENTO a través del asistente para todas las máquinas virtuales no solo desgastará mi mouse sino que tomará aproximadamente 6 horas.

También he estado investigando esto y probando diferentes estrategias durante un par de semanas.

==== Una oportunidad más ====

No estoy buscando "Mover", todo lo que quiero hacer es cambiar la configuración desde dentro de Hyper-V, el movimiento llevará mucho tiempo, es mucho más rápido para mí copiar los archivos a través de la red y simplemente actualizar las rutas en Hyper-V, puedo apagar las máquinas.

Estoy pensando que no se puede hacer?

Anthony Fornito
fuente
¿Qué tipo de investigación has hecho hasta ahora? La documentación en el módulo hyper-v me parece bastante buena. ¿Dónde te quedas atascado?
Zoredache
@ Zoredache mira la actualización.
Anthony Fornito
1
Si están agrupados, solo necesita mover el almacenamiento, utilizando la opción de mover almacenamiento. Está en la GUI y no debería provocar ningún tiempo de inactividad. blogs.msdn.microsoft.com/clustering/2012/04/26/…
Drifter104
Im thinking it cannot be done?Creo que se puede hacer, pero sería un guión largo y complicado. Casi todo sobre una VM se puede manipular completamente a través de powershell. Sospecho que estás haciendo tu vida mucho más difícil al no permitir que las herramientas administren el movimiento de los archivos por ti.
Zoredache
@Zoredache en un mundo perfecto donde tenía 6 horas, sí, estaría bien usar las herramientas, sin embargo tengo 2
Anthony Fornito

Respuestas:

8

No estoy seguro de que esto haga lo que necesita, pero hay un ejemplo de fragmento de PowerShell que he usado en el pasado para migrar máquinas virtuales, incluido todo el almacenamiento a un nuevo destino

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
}

Mueva el almacenamiento de VM a una nueva ruta

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

Si ha copiado una VM y todos sus archivos en una nueva ubicación y desea que Hyper-V comience a usar la nueva ubicación, entonces debería poder hacer algo como eso.

Remove-VM oldvmname
Import-VM -Register -Path 'path to VM config file'
Zoredache
fuente
Gracias por el código, pero todavía mueve la actualización de la máquina virtual
Anthony Fornito, el
Viste la opción de mover solo el almacenamiento, ¿verdad?
Zoredache
Sí, pero no estoy buscando 'MOVER' el almacenamiento, he copiado el archivo vhdx a la nueva ubicación, también puedo usar el comando Set-VMHardDiskDrive que funciona para cambiar el directorio de almacenamiento cuando la VM está apagada, lo cual también está bien, pero no puedo encontrar cómo 'CAMBIAR' el puntero para el archivo de configuración de VM.
Anthony Fornito
Si realmente ha copiado todos los archivos y está seguro, elimine la eliminación y vuelva a importar la VM. Respuesta actualizada con un ejemplo.
Zoredache