Trabajar con Hyper-V y Windows PowerShell

Ahora que ya ha visto los conceptos básicos de implementación de Hyper-V, la creación de máquinas virtuales y la administración de dichas máquinas virtuales, es hora de explorar cómo automatizar muchas de estas actividades con PowerShell.

Devolver una lista de comandos de Hyper-V

  1. Haga clic en el botón de inicio de Windows y escriba PowerShell.
  2. Ejecute el siguiente comando para mostrar una lista de comandos de PowerShell que permite búsqueda, que están disponibles con el módulo de PowerShell de Hyper-V.
Get-Command -Module hyper-v | Out-GridView

Obtendrá algo parecido a esto:

Screenshot of the Out Grid View showing the Command Type, Name, Version, and Source fields.

  1. Para obtener más información sobre un comando de PowerShell determinado, use Get-Help. Por ejemplo, al ejecutar el comando siguiente, se devuelve información sobre el comando Get-VM de Hyper-V.
Get-Help Get-VM

El resultado muestra cómo estructurar el comando, cuáles son los parámetros obligatorios y opcionales y los alias que puede utilizar.

Screenshot of the Administrator Windows Power Shell screen, showing the output of how to structure commands.

Devolver una lista de máquinas virtuales

Use el comando Get-VM para devolver una lista de máquinas virtuales.

  1. En PowerShell, ejecute el siguiente comando:
Get-VM

Se muestra algo parecido a esto:

Screenshot of the Administrator Windows Power Shell screen showing the output after entering Get V M.

  1. Para devolver una lista que solo incluya las máquinas virtuales encendidas, agregue un filtro al comando Get-VM. Se puede agregar un filtro mediante el comando Where-Object. Para más información sobre el filtrado, consulte la documentación de Uso de Where-Object.
Get-VM | where {$_.State -eq 'Running'}
  1. Para enumerar todas las máquinas virtuales que se encuentran en un estado apagado, ejecute el siguiente comando. Este comando es una copia del comando del paso 2 con el filtro cambiado de "Running" a "Off".
Get-VM | where {$_.State -eq 'Off'}

Iniciar y apagar las máquinas virtuales

  1. Para iniciar una máquina virtual determinada, ejecute el comando siguiente con el nombre de la máquina virtual:
Start-VM -Name <virtual machine name>
  1. Para iniciar todas las máquinas virtuales actualmente apagadas, obtenga una lista de esas máquinas y canalice la lista al comando Start-VM:
Get-VM | where {$_.State -eq 'Off'} | Start-VM
  1. Para cerrar todas las máquinas virtuales en ejecución, ejecute lo siguiente:
Get-VM | where {$_.State -eq 'Running'} | Stop-VM

Creación de un punto de comprobación de la máquina virtual

Para crear un punto de control con PowerShell, seleccione la máquina virtual con el comando Get-VM y canalícela al comando Checkpoint-VM. Finalmente, asigne un nombre al punto de control con -SnapshotName. El comando completo tendrá el siguiente aspecto:

Get-VM -Name <VM Name> | Checkpoint-VM -SnapshotName <name for snapshot>

Creación de una máquina virtual

En el ejemplo siguiente se muestra cómo crear una nueva máquina virtual en el Entorno de scripting integrado de PowerShell (ISE). Esto es un ejemplo sencillo que podría ampliarse para incluir características adicionales de PowerShell e implementaciones de máquinas virtuales más avanzadas.

  1. Para abrir PowerShell ISE, haga clic en Inicio y escriba PowerShell ISE.
  2. Ejecute el código siguiente para crear una máquina virtual. Vea la documentación sobre New-VM para obtener información detallada sobre el comando New-VM.
 $VMName = "VMNAME"

 $VM = @{
     Name = $VMName
     MemoryStartupBytes = 2147483648
     Generation = 2
     NewVHDPath = "C:\Virtual Machines\$VMName\$VMName.vhdx"
     NewVHDSizeBytes = 53687091200
     BootDevice = "VHD"
     Path = "C:\Virtual Machines\$VMName"
     SwitchName = (Get-VMSwitch).Name
 }

 New-VM @VM

Resumen y referencias

En este documento se han mostrado algunos pasos sencillos para explorar el módulo de PowerShell de Hyper-V, así como algunos escenarios de ejemplo. Para obtener más información sobre el módulo de PowerShell de Hyper-V, consulte la referencia de cmdlets de Hyper-V en Windows PowerShell.