Módulo de PowerShell de Hyper-V: Haciendo más cosas

Si estás utilizando la plataforma de virtualización Hyper-V de Microsoft para ejecutar máquinas virtuales, probablemente estés familiarizado con el uso de Hyper-V Manager. ¿Pero sabías que puedes hacer más en menos tiempo con el módulo Hyper-V PowerShell?

En este tutorial, aprenderás cómo gestionar las máquinas virtuales de Hyper-V con PowerShell, incluyendo la creación, eliminación, ¡y también te sumergirás en instantáneas de máquinas virtuales!

Prerrequisitos

Para este tutorial, necesitarás lo siguiente:

  • A Windows client to connect to a remote Hyper-V host. This tutorial uses Windows 10 Pro.
  • A Hyper-V host with PowerShell Remoting enabled. The tutorial’s Hyper-V host is named HYPER and is in a workgroup but an Active-Directory joined client and host will work as well.
  • A user account on the Hyper-V host in the local administrators group or in the Hyper-V Administrators group. This tutorial will use an account called localadmin.

Conexión a un Host de Hyper-V Remoto

Para trabajar con Hyper-V en PowerShell, debes poder comunicarte con el host de Hyper-V de alguna manera. Puedes hacerlo localmente ejecutando los cmdlets de PowerShell de Hyper-V proporcionando el nombre del host de Hyper-V, o puedes usar PowerShell Remoting para conectarte al host de Hyper-V en sí.

En este tutorial, realizarás una conexión persistente al host de Hyper-V y ejecutarás los comandos directamente en el host de Hyper-V.

1. Abre PowerShell en tu ordenador local.

2. Ejecute el cmdlet Enter-PSSession proporcionando el nombre de host de su host remoto Hyper-V para el parámetro ComputerName. Esta acción crea una sesión interactiva y le permite ejecutar comandos de forma interactiva en el host remoto Hyper-V.

Enter-PSSession -ComputerName HYPER -Credential (Get-Credential)

Si su cliente y el host Hyper-V son miembros del mismo dominio de Active Directory, no tiene que usar el parámetro Credential.

3. A continuación, se le solicitará un nombre de usuario y una contraseña para conectarse al host Hyper-V. Este nombre de usuario y contraseña serán de un usuario administrativo local en el host remoto. Una vez conectado, debería ver que su indicador de PowerShell ha cambiado para mostrar el nombre de host del host Hyper-V.

¡Ahora está listo para comenzar a ejecutar comandos!

Creación de máquinas virtuales Hyper-V con PowerShell

Suponiendo que ahora esté conectado a su host Hyper-V mediante PowerShell Remoting, comencemos a ejecutar comandos creando una máquina virtual Hyper-V.

Creación de una VM simple

Mientras esté en su sesión de PSRemoting conectada al host remoto Hyper-V:

Ejecute el cmdlet New-VM para crear una nueva VM. Al crear una VM con el cmdlet New-VM, tiene muchas opciones diferentes para elegir cómo crearla.

1. En este ejemplo a continuación, el tutorial está creando una VM con:

  • A name of MyVM (HYPER)
  • 512MB de RAM (MemoryStartupBytes)
New-VM -Name "HYPER" -MemoryStartupBytes 512MB
New VM named “HYPER”

Creación de una VM basada en otros atributos de VM

A veces necesitas crear una VM con atributos similares a otra VM. Puedes hacerlo asignando varios atributos de la VM a variables y luego usar esas variables al crear la nueva VM. Como ejemplo:

1. Ejecuta Get-VM para consultar los atributos de una VM existente y asigna la salida a una variable como se muestra a continuación.

$VMold = Get-VM "HYPER_old"

2. Ejecuta el cmdlet Get-VMMemory proporcionando el nombre de la VM para recopilar los atributos (en este caso, la memoria) y asigna el valor de la memoria a una variable.

$memory = (Get-VMMemory -VMName $VMold.name).Startup

3. A continuación, crea una nueva VM con el cmdlet New-VM proporcionando el Nombre, la generación de VM (Generación) usando la propiedad Generación de la otra VM, y la cantidad de memoria obtenida de la otra VM.

New-VM -Name "newVM" -Generation $VMold.Generation -MemoryStartupBytes $memory
New VM created from Old existing VM

Listado de VMs existentes con PowerShell

Ahora que tienes al menos dos VMs creadas en el host de Hyper-V, veamos cómo enumerar las VMs creadas. Para hacerlo:

1. Ejecuta el cmdlet Get-VM por sí solo. Cuando lo ejecutas sin parámetros, Get-VM consulta al host de Hyper-V para todas las VMs existentes. Get-VM

Get-VM
Output of Get-VM run with no Parameters

2. Quizás solo quieras buscar una sola VM. En ese caso, utiliza el parámetro -Name. El siguiente comando está consultando a Hyper-V para la VM creada anteriormente llamada HYPER_old. Get-VM -Name HYPER_old

Get-VM -Name HYPER_old
Output of Get-VM run with the -Name Parameter

Luego, tal vez necesites encontrar todas las VMs que están en un Estado específico. No hay problema. Para hacer eso, ejecuta Get-VM, que consulta todas las VMs pero redirige la salida al cmdlet Where-Object.

En el ejemplo siguiente, el tubo ‘|’ limita la salida de Get-VM solo a aquellos objetos VM con un Estado de Ejecución. Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}

Get-VM -VMName HYPER_old | Where-Object {$_.State -eq 'Running'}
Output of Get-VM filtering out the VM with the state of Running

Inicio y detención de VMs

En este momento, es probable que la VM creada anteriormente esté detenida. Cambiemos eso iniciándola y luego aprendiendo también cómo detener VMs.

En la sesión de PowerShell del host remoto de Hyper-V:

1. Ejecute el cmdlet Start-VM proporcionándole el nombre (Nombre) de la VM creada anteriormente con el parámetro -Name

Start-VM -Name NewVM
The Start-VM command starting the VM named HYPER_old

Ahora que la VM está iniciada, deténgala usando el cmdlet Stop-VM proporcionando el nombre de la VM con el parámetro Nombre.

Stop-VM -Name HYPER_old

Tan pronto como ejecute el comando anterior, verá que la VM se apaga como se muestra en la captura de pantalla a continuación;

Stop-VM stopping the HYPER_old VM

Modificación de VMs de Hyper-V

Las VMs no siempre permanecen iguales. Tal vez necesite aumentar los recursos de CPU, o la VM se queda constantemente sin memoria. En ese caso, el cmdlet Set-VM es su amigo.

Como ejemplo de modificación de VMs existentes, en la sesión de PowerShell del host remoto de Hyper-V:

Ejecuta el cmdlet Set-VM para apagar automáticamente la VM HYPER_old que está en ejecución actualmente. Utiliza el parámetro Name para especificar la VM que deseas configurar y especifica Shutdown como el valor para el parámetro AutomaticStopAction para asegurar que la VM se apague automáticamente correctamente cuando se apague el host de Hyper-V.

Set-VM -Name HYPER_old -AutomaticStopAction Shutdown

Guardando Máquinas Virtuales de Hyper-V

En la sesión remota de PowerShell del host de Hyper-V, es posible que necesites guardar la VM que creaste para preservar el estado de la memoria de la VM para su uso posterior. Para hacer esto, utiliza el cmdlet Save-VM con el parámetro Name especificando el nombre de la VM que deseas guardar.

Ten en cuenta que la VM que deseas guardar debe estar en estado de ejecución.

Save-VM -Name HYPER_old
Save-VM cmdlet saving HYPER_old VM state.

Administración de Puntos de Control de VM de Hyper-V

Si necesitas guardar el estado existente de una VM antes de realizar cambios o revertir cambios en una VM, debes aprender acerca de los puntos de control. Los puntos de control son una manera práctica de guardar rápidamente el estado de disco y memoria de cualquier VM de Hyper-V.

Mientras estás en tu host de Hyper-V, ejecuta el cmdlet Checkpoint-VM, proporcionando el nombre de la VM para guardar y un nombre para el punto de control.

El nombre del parámetro, SnapshotName, aún hace referencia a la antigua terminología utilizada en Hyper-V 2012. Un snapshot es lo mismo que un punto de control.

Checkpoint-VM -Name HYPER_old -SnapshotName MyVMSnapshot
Using Checkpoint-VM to create a Snapshot of HYPER_old VM called MyVMSnapshot

Una vez que haya creado un punto de control, puede usar el cmdlet Get-VMSnapshot para recuperar todos los puntos de control almacenados en el host de Hyper-V. A continuación, puede ver que la VM HYPER_old tiene tres puntos de control.

Get-VMSnapshot -VMName HYPER_old
Retrieves all the Snapshots stored for HYPER_old VM

Conclusión

Si ha trabajado a través de todas las demostraciones en este tutorial, está bien encaminado para administrar las VM de Hyper-V con PowerShell. ¡Ahora debería tener el conocimiento necesario para administrar 1, 10 o incluso 100 VMs!

¿Qué tipo de tareas cree que puede automatizar ahora con PowerShell y Hyper-V?

Source:
https://adamtheautomator.com/hyper-v-powershell/