[HOW-TO] Hyper-V | Administración Básica de Hyper-V 3 mediante PowerShell en Windows Server 2012

Hyper-V es la plataforma de virtualización de Microsoft. Su administración puede hacerse mediante la consola de administración “Hyper-V Manager” existente en Windows Server. Sin embargo, también existe la posibilidad de administrar casi todas sus funcionalidades mediante PowerShell.

Durante la instalación del rol, podemos optar por instalar las herramientas de administración, entre las cuales está la extensión para PowerShell. Mediate esta extensión, podemos crear equipos modificarlos y manejar aspectos de configuración varios en Hyper-V.

Este artículo está creado bajo la plataforma Windows Server 2012, es decir la versión 3 de Hyper-V. Esta versión tiene la particularidad que posee una versión “in-the-box” de los command lets de Hyper-V para PowerShell, algo que no sucedía en versiones anteriores.

 

[toc]

 

Introducción

Objetivo

El presente documento tiene como objetivo dar una visión general sobre la administración de Hyper-V a través de PowerShell, y demostrar cómo las organizaciones se pueden ver beneficiadas con la agil administración mediante línea de comandos en Windows Server 2012.

 

Audiencia

Este documento está dirigido a Consultores, Profesionales IT y personas que desarrollan tareas de Consultoría, Administración y Soporte o que simplemente están interesados en aprender nuevas cosas.

Comentarios y Corrección de Errores

Hemos realizado nuestro mejor esfuerzo para no cometer errores, pero al fin y al cabo somos seres humanos. Si deseás reportar algún error o darnos feedback de qué te pareció esta publicación, por favor no dejes de comunicarte con nosotros a través de correo electrónico a la siguiente dirección: info@tectimes.net.

 

Alcance

Entender cuál es el alcance de la publicación nos ayuda a tener una expectativa real de lo que encontraremos en la misma, de modo tal que quién lo lee no espere ni más ni menos de lo que encontrará. Vamos a describir el escenario de trabajo, tecnologías alcanzadas, la bitácora y el objetivo técnico.

 

Objetivo Técnico

El objetivo técnico de esta publicación es:

  • Ejemplificar la creación, edición y eliminación de una máquina virtual mediante PowerShell.
  • Ejemplificar la administración de algunas opciones generales de Hyper-V mediante PowerShell.

 

Daremos como cumplido el objetivo técnico cuando procuremos:

  • Tener una Visión General de PowerShell para Hyper-V.
  • Poder realizar el ABM de Equipo Virtual con PowerShell.
  • Poder realizar Snapshots de VMs con PowerShell.

 

Tecnologías Alcanzadas

Esta publicación puede aplicarse a:

  • Hyper-V en Windows Server 2012.
  • Windows Server 2012 Standard
  • Windows Server 2012 Datacenter.
  • Windows Server 2012 R2 Standard.
  • Windows Server 2012 R2 Datacenter.

 

Escenario de Trabajo

Tenemos, para este artículo, un equipo con Windows Server 2012 Datacenter y Hyper-V 3 instalado. El equipo tiene las siguientes características:

  • 16 GB de memoria RAM.
  • 1 placa de red física.
  • Storage local en el disco “E”.

 

Desarrollo

Visión General de PowerShell para Hyper-V

En Windows Server 2012, Hyper-V 3 tiene módulos para PowerShell, los cuales incluyen más de 160 cmdlets (command-lets) que permiten administrar y automatizar tareas varias. En las “Referencias y Links” de este artículo, se encontrará un link de Microsoft a un listado con todos los cmdlets disponibles para Hyper-V en Windows Server 2012.

La importancia de poder contar con estos cmdlets recide en que podemos automatizar muchas tareas mediante líneas de comandos. Si bien a veces preferimos una administración gráfica de la plataforma, es sumamente importante conocer y utilizar, como administradores de una plataforma de virtualización, éstas posibilidades del Shell.

A partir de Windows Server 2012, existe la novedad que el módulo de Hyper-V para PowerShell está “in-the-box”, o sea que no requiere de descargas adicionales como suponía Windows Server 2008! Sin embargo, este módulo debe ser habilitado: no sólo el de Hyper-V, sino la de las herramientas de administración incluyendo PowerShell. En los “Artículos Relacionados” encontrarás un link al “TUTORIAL – Instalación de Hyper-V en Windows Server 2012” donde se explica en detalle como instalar estas herramientas.

 

Cómo empezar

Para comenzar, debemos abrir “Windows PowerShell”:

 

Ilustración 1 – Windows PowerShell para Administrar Hyper-V en Windows Server 2012.
Ilustración 1 – Windows PowerShell para Administrar Hyper-V en Windows Server 2012.

 

Esto nos abrirá la consola PowerShell de Windows:

 

Ilustración 2 – Windows PowerShell para Administrar Hyper-V en Windows Server 2012.
Ilustración 2 – Windows PowerShell para Administrar Hyper-V en Windows Server 2012.

 

En primera instancia, no debemos agregar o importar ningún módulo especial para comenzar a hacer uso de los cmdlets de Hyper-V. Sin embargo, algo que podemos hacer es actualizar la ayuda del módulo “Hyper-V” en PowerShell mediante el siguiente comando:

 

Update-Help –Module Hyper-V
Ilustración 3 – Windows PowerShell para Administrar Hyper-V en Windows Server 2012. Actualización de la ayuda.
Ilustración 3 – Windows PowerShell para Administrar Hyper-V en Windows Server 2012. Actualización de la ayuda.

 

Una vez hecho esto tenemos la última ayuda disponible para Hyper-V desde PowerShell

 

ABM de Equipo Virtual con PowerShell

Vamos a comenzar ejemplificando el alta, la modificación y eliminación de un equipo virtual en Hyper-V mediante el módulo de Hyper-v para PowerShell de Windows Server 2012.

 

Alta de Equipo

El comando que nos permite dar de alta equipos es “new-vm”. Podemos consultar la ayuda de este comando mediante:

 

Get-Help New-VM
Ilustración 4 – Windows PowerShell para Administrar Hyper-V en Windows Server 2012. Acceso a ayuda de commandos.
Ilustración 4 – Windows PowerShell para Administrar Hyper-V en Windows Server 2012. Acceso a ayuda de commandos.

 

Nótese que la posibilidad de pedir ayuda es aplicable para todos los comandos que veremos en este artículo, siempre respetando la siguiente sintaxis:

 

Get-Help [nombre del comando]

Vamos a poner manos a la obra: vamos a crear un equipo llamado “Equipo1” con las siguientes características:

  • Se llamará “Equipo1”
  • Tendrá 1 GB de memoria asignada.
  • Se instalará en el Path “E:\Virtuales\”

 

El comando a ejecutar será el siguiente:

 

New-VM -Name "Equipo1" -Memory 1gb -Path "E:\Virtuales"
Ilustración 5 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Equipo Virtual mediante New-VM.
Ilustración 5 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Equipo Virtual mediante New-VM.

 

Podemos comprobar mediante nuestra consola “Hyper-V Manager” que el equipo se ha creado:

 

Ilustración 6 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Equipo Virtual mediante New-VM.
Ilustración 6 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Equipo Virtual mediante New-VM.

 

Ahora bien, también podemos comprobar, mediante interfaz gráfica, que no tiene disco asignado para el sistema operativo:

 

Ilustración 7 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Equipo Virtual mediante New-VM.
Ilustración 7 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Equipo Virtual mediante New-VM.

 

Tampoco tiene una placa de red disponible:

 

Ilustración 8 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Equipo Virtual mediante New-VM.
Ilustración 8 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Equipo Virtual mediante New-VM.

 

¿Podemos hacer algo mejor? Si, por supuesto! Podemos completar aún más el comando anteriormente ejecutado para crear un equipo virtual con disco. Vamos a crear un segundo equipo con las siguientes características:

  • Se llamará “Equipo2”
  • Tendrá 1 GB de memoria asignada.
  • Se instalará en el Path “E:\Virtuales\”.
  • Tendrá un disco de 50 GB llamado “Equipo2.vhdx”.
  • Utilizará el Virtual Switch existente llamado “Realtek PCIe GBE Family Controller – Virtual Switch”

 

El comando sería el siguiente:

 

New-VM -Name "Equipo2" -Memory 1gb -Path "E:\Virtuales" -SwitchName "Realtek PCIe GBE Family Controller - Virtual Switch" -NewVHDPath "E:\Virtuales\Equipo2\Equipo2.vhdx" -NewVHDSizeBytes 50gb

Una vez ejecutado tenemos el siguiente resultado:

 

Ilustración 9 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Equipo Virtual mediante New-VM.
Ilustración 9 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Equipo Virtual mediante New-VM.

 

Podemos comprobar, mediante interfaz gráfica, que el disco se ha creado y la placa de red se ha asignado:

 

Ilustración 10 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Equipo Virtual mediante New-VM. Corroboración de creación.
Ilustración 10 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Equipo Virtual mediante New-VM. Corroboración de creación.

 

Modificación de Equipo

Supongamos que queremos modificar un equipo virtual. Por ejemplo, en nuestro caso, queremos agregarle un disco y asignarle la placa de red al “Equipo1” recientemente creado. Para poder realizar esta acción, vamos a hacer uso de algunos CMDLets:

  • New-VHD
  • Add-VMHardDiskDrive
  • Add-VMNetworkAdapter
  • ConnectVMNetworkAdapter

 

New-VHD

Con este CMDLet le vamos a crear un disco de 50 GB con el nombre Equipo1.vhdx. La sintaxis es la siguiente:

 

New-VHD -Path "E:\Virtuales\Equipo1\Equipo1.vhdx" -SizeBytes 50gb

El resultado es el siguiente:

 

Ilustración 11 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Virtual Disk para Equipo Virtual.
Ilustración 11 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Virtual Disk para Equipo Virtual.

 

Podemos corroborar como el disco se ha creado en la ubicación seleccionada:

 

Ilustración 12 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Virtual Disk para Equipo Virtual.
Ilustración 12 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Virtual Disk para Equipo Virtual.

 

Ahora vamos a asignarlo al equipo virtual “Equipo1” mediante el CMDLet Add-VMHardDiskDrive.

 

Add-VMHardDiskDrive

Vamos a agregar el disco recientemente creado al equipo “Equipo1”. El disco está en la ubicación “E:\Virtuales\Equipo1\Equipo1.vhdx”. El comando sería:

 

Add-VMHardDiskDrive -VMName "Equipo1" -Path "E:\Virtuales\Equipo1\Equipo1.vhdx"

El resultado esperado es el siguiente:

 

Ilustración 13 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Agregado de Virtual Disk para Equipo Virtual mediante Add-VMHardDiskDrive.
Ilustración 13 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Agregado de Virtual Disk para Equipo Virtual mediante Add-VMHardDiskDrive.

 

Y vamos a corroborar como el Equipo1 ahora tiene disco:

 

Ilustración 14 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Agregado de Virtual Disk para Equipo Virtual mediante Add-VMHardDiskDrive. Corroboración de opciones.
Ilustración 14 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Agregado de Virtual Disk para Equipo Virtual mediante Add-VMHardDiskDrive. Corroboración de opciones.

 

Add-VMNetworkAdapter

Nuestro Hyper-V ya tiene un Virtual Swtich, suponiendo que hemos seguido los pasos de instalación del rol indicados en el tutorial relacionado al final de este artículo que se llama “TUTORIAL – Instalación de Hyper-V en Windows Server 2012”. Si no es así, debemos revisarlo para continuar.

El nombre del adaptador virtual, en nuestro caso, es: “Realtek PCIe GBE Family Controller – Virtual Switch”.

 

Ilustración 15 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Agregado de VirtualSwitch a Equipo Virtual.
Ilustración 15 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Agregado de VirtualSwitch a Equipo Virtual.

 

Vamos a utilizar este adaptador para agregarlo a nuestro equipo “Equipo1” a través del siguiente comando:

 

Add-VMNetworkAdapter -VMName "Equipo1" -Name "Realtek PCIe GBE Family Controller - Virtual Switch"

El resultado es el siguiente:

 

Ilustración 16 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Agregado de VirtualSwitch a Equipo Virtual.
Ilustración 16 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Agregado de VirtualSwitch a Equipo Virtual.

 

Connect-VMNetworkAdapter

Muy bien, ahora vamos a conectar (poner on-line) el Switch Virtual al equipo “Equipo1”. Esto lo haremos mediante el siguiente comando:

 

Connect-VMNetworkAdapter -VMName "Equipo1" -SwitchName "Realtek PCIe GBE Family Controller - Virtual Switch"

El resultado esperado es:

 

Ilustración 17 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Conexión de VirtualSwitch a Equipo Virtual.
Ilustración 17 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Conexión de VirtualSwitch a Equipo Virtual.

 

Y podemos verificar, mediante las propiedades del Equipo Virtual, la conexión del Virtual Switch:

 

Ilustración 18 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Conexión de VirtualSwitch a Equipo Virtual.
Ilustración 18 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Conexión de VirtualSwitch a Equipo Virtual.

 

Encendido y Apagado de Equipos

Ya tenemos los equipos configurados, ahora vamos a encenderlos. Para encenderlos, podemos utilizar el comando:

 

Start-VM -VMName "Equipo1"
Ilustración 19 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Encendido de Equipo Virtual.
Ilustración 19 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Encendido de Equipo Virtual.

 

Y podemos corroborar el estado del equipo:

 

Ilustración 20 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Encendido de Equipo Virtual.
Ilustración 20 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Encendido de Equipo Virtual.

 

También podemos apagar el equipo (ojo, esto fuerza el apagado!) mediante el siguiente comando:

 

Stop-VM -VMName "Equipo1"

El resultado es el siguiente:

 

Ilustración 21 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Apagado de Equipo Virtual.
Ilustración 21 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Apagado de Equipo Virtual.

 

Si verificamos el estado del equipo, el mismo estará apagado:

 

Ilustración 22 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Apagado de Equipo Virtual.
Ilustración 22 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Apagado de Equipo Virtual.

 

Listado de Equipos

Para obtener un listado de los equipos y su estado, podemos hacer uso del siguiente CMDLet:

 

Get-VM

El resultado es el siguiente:

 

Ilustración 23 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Listado de Equipos Virtuales.
Ilustración 23 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Listado de Equipos Virtuales.

 

Eliminación de Equipo

Así como creamos equipos, también podemos eliminarlo a través del siguiente CMDLet:

 

Remove-VM -VMName "Equipo1"

 

El resultado será el siguiente:

 

Ilustración 24 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Eliminación de Equipo Virtual.
Ilustración 24 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Eliminación de Equipo Virtual.

 

Y nuestro equipo ya no estará en el sistema:

 

Ilustración 25 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Eliminación de Equipo Virtual.
Ilustración 25 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Eliminación de Equipo Virtual.

 

Sin embargo, el VHDX del equipo no se borrará:

 

Ilustración 26 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Eliminación de Equipo Virtual.
Ilustración 26 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Eliminación de Equipo Virtual.

 

Snapshots de VMs con PowerShell

Un Snapshot es una “foto” que se puede hacer del equipo virtual, para luego volver a él o para resguardar el equipo antes de hacer un cambio que pueda llegar a ser crítico. Cuando creamos un snapshot, él se crea un disco diferencial (AVHD) que guarda solo los nuevos cambios desde dicho snapshot razón por la cual la creación de esta foto es sumamente rápida. Un Snapshot, en resumen, captura el estado, datos y configuración de hardware de un equipo virtual.

El módulo de Hyper-V para PowerShell nos permite trabajar con Snapshot, pudiendo:

  • Crearlos.
  • Listarlos.
  • Utilizarlos.
  • Eliminarlos.

 

Veremos, rápidamente, como se realizan estas operaciones.

 

Creación de un Snapshot con PowerShell para Hyper-V

Para crear un snapshot utilizaremos el CMDLet “Checkpoint-VM”. Vamos a crear, por ejemplo, un snapshot (foto) del Equipo2 con el nombre “Antes de ejecutar updates” con la siguiente sintaxis:

 

Checkpoint-VM -Name "Equipo2" -SnapshotName "Antes de ejecutar updates"

El resultado es el siguiente:

 

Ilustración 27 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Snapshots en Equipos Virtuales.
Ilustración 27 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Snapshots en Equipos Virtuales.

 

Para verificar que el snapshot se creó, podemos verificarlo desde la consola “Hyper-V Manager”:

 

Ilustración 28 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Snapshots en Equipos Virtuales.
Ilustración 28 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Creación de Snapshots en Equipos Virtuales.

 

Listado de Snapshots

Vamos a listar los snapshots disponibles. Para ello utilizaremos el CMDLet “Get-VMSnapshot” con la siguiente sintaxis:

 

Get-VMSnapshot -VMName "Equipo2"

Veremos que existen 3 snapshots:

 

Ilustración 29 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Listado de Snapshots en Equipos Virtuales.
Ilustración 29 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Listado de Snapshots en Equipos Virtuales.

 

De esta forma podemos identificar cuáles snapshots están disponibles para utilizar.

 

Aplicar un Snapshot para rollback de un equipo

Vamos a utilizar el snapshot “Antes de configurar Software1” para volver al equipo virtual al estado que tenía en ese momento. Para esto utilizaremos el CMDLet “Restore-VMSnapshot” con la siguiente sintaxis:

 

Restore-VMSnapshot -VMName "Equipo2" -Name "Antes de configurar Software1"

 

El resultado será el siguiente:

 

Ilustración 30 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Restauración de Snapshots en Equipos Virtuales.
Ilustración 30 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Restauración de Snapshots en Equipos Virtuales.

 

De este modo, podemos comprobar que el equipo volvió al estado en que se encontraba luego de dicho snapshot:

 

Ilustración 31 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Restauración de Snapshots en Equipos Virtuales.
Ilustración 31 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Restauración de Snapshots en Equipos Virtuales.

 

Eliminación de Snapshots

Para eliminar un snapshot, debemos utilizar el CMDLet “Remove-VMSnapshot” con la siguiente sintaxis:

 

Remove-VMSnapshot -VMName "Equipo2" -Name "Antes de ejecutar updates" -IncludeAllChildSnapshots

 

El parámetro “IncludeAllChildSnapshots” nos permite eliminar todos los snapshots que estén debajo del que eliminamos. En nuestro caso vamos a eliminar el primer snapshot, razón por la cual se deberían eliminar todos los restantes:

 

Ilustración 32 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Eliminación de Snapshots en Equipos Virtuales.
Ilustración 32 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Eliminación de Snapshots en Equipos Virtuales.

 

Comprobamos que ya no existen snapshots para el Equipo2:

 

Ilustración 33 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Eliminación de Snapshots en Equipos Virtuales.
Ilustración 33 – Módulo de PowerShell para Hyper-V en Windows Server 2012. Eliminación de Snapshots en Equipos Virtuales.

 

Conclusiones

El módulo de PowerShell de Hyper-V es una potente herramienta que nos permite administrar, de punta a punta, nuestra plataforma Virtual. La utilización de PowerShell nos puede hacer ganar tiempo y automatización, dado que podemos hacer y preparar scripts que ejecuten tareas deseadas sin necesidad de utilizar el entorno gráfico.

En este artículo hemos visto solo una parte de las posibilidades de administración de Hyper-V mediante PowerShell, pero creemos que ha sido una muestra clara de su simpleza y potencialidad.

Al pie de este artículo se dejan accesos a material de Microsoft, como así también algunos artículos relacionados.

 

Referencias y Links

 

 

0 0 votes
Article Rating

Professor. Techie. Ice cream fan (dulce de leche). My favorite phrase: "Todos los días pueden no ser buenos ... pero hay algo bueno en todos los días". Currently I´m Engineering Manager at MODO (https://modo.com.ar), the payment solution that allows you to connect your money and your world to simplify everyday life. Modo is a payment solution in which you can send, order and pay from your mobile device in the safest, most practical and convenient way. I enjoy a lot of educational, technological talks and a good beer. If you want to talk, write me to pablodiloreto@hotmail.com.

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments