Comandos esenciales de Hyper-V PowerShell: Qué son y cómo usarlos

Administrar entornos Hyper-V puede ser una tarea difícil. Por tanto, necesita una potente herramienta de gestión para configurar y controlar su infraestructura virtual desde una consola central. Además de la interfaz gráfica de usuario, Hyper-V proporciona una interfaz de línea de comandos mediante PowerShell para la gestión de Hyper-V.

En esta entrada de blog, describimos cómo funciona PowerShell, qué comandos de Hyper-V PowerShell pueden mejorar el rendimiento de las máquinas virtuales (VM) y cómo esta herramienta CLI puede simplificar considerablemente el proceso de gestión de Hyper-V.

NAKIVO for Hyper-V Backup

NAKIVO for Hyper-V Backup

Agentless, application-aware backups for Hyper-V. Anti-ransomware protection, instant VM boot from backup, other virtual/physical platform support and more.

¿Qué es PowerShell?

PowerShell es un marco de automatización de tareas y gestión de la configuración desarrollado por Microsoft, que incluye un shell de línea de comandos y un lenguaje de scripting asociado basado en .NET Framework y .NET Core.

Los comandos PowerShell, también conocidos como cmdlets, se pueden utilizar para automatizar diversas tareas mediante la organización de varios cmdlets en un único script PowerShell. Microsoft ha desarrollado más de cien comandos básicos de PowerShell que pueden utilizarse para realizar tareas complejas y básicas.

¿Qué puede hacer PowerShell?

PowerShell puede ayudar a los administradores de Hyper-V a automatizar rápidamente las tareas que gestionan los sistemas operativos (Linux, macOS y Windows) y los procesos asociados. A diferencia de las herramientas GUI, PowerShell permite gestionar todo el sistema utilizando únicamente la línea de comandos.

Además, puede guardar los comandos Hyper-V PowerShell necesarios en un archivo de texto (con la extensión .ps1 ) y, a continuación, ejecutar este script para realizar determinadas tareas. Además, puede programar secuencias de comandos PowerShell para que se ejecuten a una hora determinada mediante el Programador de tareas.

Cómo abrir PowerShell

Hay un par de formas de ejecutar PowerShell en Hyper-V. Una forma sencilla de acceder a PowerShell es conectarse directamente a un servidor Hyper-V e iniciarlo desde allí. Para conectarse remotamente a un host Hyper-V, necesitamos asegurarnos de que Escritorio Remoto está habilitado. Una vez habilitado el Escritorio Remoto, podemos utilizar la utilidad Escritorio Remoto y conectarnos remotamente al servidor como lo haríamos con cualquier GUI (interfaz gráfica de usuario) de Windows Server.

Abrir PowerShell desde la GUI

Para abrir PowerShell en un sistema operativo basado en GUI, siga estos pasos:

  1. Haga clic en Inicio y escriba PowerShell en la barra de búsqueda.
  2. Haga clic con el botón derecho en el icono de PowerShell y seleccione Ejecutar como administrador para abrir PowerShell en modo elevado.

Cómo ejecutar PowerShell en Windows

Abrir PowerShell desde la línea de comandos

Para ejecutar PowerShell si está ejecutando Windows Server Core o Hyper-V Server, siga estos pasos:

  1. Escriba PowerShell en el símbolo del sistema y pulse Intro.
  2. Debería iniciarse automáticamente una sesión de Windows PowerShell en la ventana del símbolo del sistema. A continuación, se añade un prefijo PS al símbolo del sistema para indicar que se ha iniciado una sesión de Windows PowerShell.
  3. Una vez que esté en PowerShell, puede utilizar comandos PowerShell específicos de Hyper-V, que cubrimos a continuación en este post.

Cómo ejecutar PowerShell en el símbolo del sistema de Windows

Ajustes remotos

Para comprobar los ajustes del escritorio remoto en Windows Server Core o Hyper-V Server, puede iniciar la utilidad sconfig si aún no se ha iniciado y configurarla mediante la opción 7. Además, una vez conectado remotamente al host Hyper-V, puede utilizar la opción 15 para Salir a la línea de comandos.

Enabling Remote desktop to run PowerShell commands on a Hyper-V host

Una vez allí, se encuentra en un entorno cmd.exe normal, no en PowerShell. Para iniciar un entorno PowerShell, basta con escribir powershell en la línea de comandos.

Running PowerShell commands

PowerShell remoto

Utilizando PowerShell, también puede interactuar remotamente con Hyper-V. En otras palabras, puede ejecutar remotamente comandos PowerShell en el host Hyper-V sin establecer una conexión de Escritorio Remoto.

Desde la estación de trabajo de administración en la que tenemos cargadas las herramientas de gestión de Hyper-V, podemos ejecutar nuestros commandlets de Hyper-V. En primer lugar, debemos instalar las herramientas de Hyper-V, incluidos estos comandos (cmdlets).

Install-WindowsFeature RSAT-Hyper-V-Tools

Una vez que tenemos las herramientas cargadas, podemos ejecutar los mismos tipos de comandos utilizando el parámetro -computername apuntando a nuestro host Hyper-V como en la siguiente captura de pantalla. Pasamos el nombre de nuestro host al comando get-vm de PowerShell.

Running PowerShell Hyper-V commands remotely

12 comandos esenciales de Hyper-V PowerShell

Hay una serie de comandos eficaces de Hyper-V PowerShell que pueden hacer que el proceso de gestión de Hyper-V sea fácil y sencillo. Veamos cómo se pueden utilizar los diferentes comandos PowerShell de Hyper-V.

Get-Command

Comencemos con un comando Hyper-V PowerShell que es útil para los usuarios que son nuevos en PowerShell y no saben qué cmdlets se deben utilizar y cómo. Al ejecutar el cmdlet Get-Command, puede ver la lista completa de todos los cmdlets (comandos de Windows PowerShell), funciones y alias disponibles instalados en el equipo.

The Get-VM PowerShell cmdlet

Sin embargo, si desea limitar su búsqueda y obtener la lista de comandos de Hyper-V PowerShell que coincidan con criterios específicos, puede utilizar el cmdlet Get-Command *-VM para encontrar la lista de comandos que le permiten controlar y configurar las máquinas virtuales.

Using the Get-Command PowerShell cmdlet

Cambiando el parámetro VM a VHD, puede obtener la lista completa de cmdlets utilizados para gestionar discos duros virtuales. Así, puede probar varios parámetros de búsqueda para obtener los resultados que necesita.

Using the Get-Command cmdlet to display commands to work with VHD

Obtenga ayuda

Una vez que haya decidido qué comando PowerShell de Hyper-V desea utilizar, puede obtener más información sobre ese cmdlet. Para ello, puede utilizar el cmdlet Get-Help. Por ejemplo, para obtener más información sobre el cmdlet Get-VM, escriba lo siguiente:

Get-Help Get-VM

Uso de los comandos Get-Help y Get-VM Hyper-V PowerShell

Obtener-VM

El comando Get-VM PowerShell le permite ver todas las máquinas virtuales disponibles en uno o más hosts Hyper-V. Para ver todas las máquinas virtuales en el host Hyper-V local, debe ejecutar el cmdlet Get-VM PowerShell.

PowerShell Get-VM details

En la pantalla de PowerShell, puede ver la lista de máquinas virtuales disponibles, incluido su nombre, estado, uso de CPU, memoria asignada, tiempo de actividad, estado y versión.

Inicio-VM

Este cmdlet PowerShell de inicio de VM en particular le ayuda a iniciar una VM. Para ello, ejecute el siguiente comando PowerShell de Hyper-V:

Start-VM -Name 'Windows Server 2016'

Como resultado, la VM denominada Windows Server 2016 se inicia en su host Hyper-V local. Comprobemos si la máquina virtual se ha iniciado ejecutando el cmdlet Get-VM.

How to use the start VM PowerShell cmdlet

Además, puede utilizar una versión modificada del cmdlet Start-VM PowerShell para iniciar máquinas virtuales sólo si sus nombres empiezan por Hyper-V:

Start-VM -Name Hyper-V*

PowerShell start VM

Como puede ver, la VM llamada Hyper-V Server Desktop se ha iniciado correctamente. Sin embargo, otra VM(Hyper-V Server 2012) ya se encuentra en estado de ejecución y PowerShell se lo notifica.

Stop-VM

El cmdlet Stop-VM permite apagar o desconectar una VM. Para ello, puede ejecutar el siguiente cmdlet:

Stop-VM -Name 'Windows Server 2016'

Using Stop-VM and Get-VM PowerShell commands

Como puede ver, la VM seleccionada se ha apagado correctamente a través del SO invitado.

Otro ejemplo es que puede desactivar las máquinas virtuales cuyos nombres empiecen por Hyper-V:

Stop-VM -Name Hyper-V* -TurnOff

Using the Stop-VM and Get-VM PowerShell Hyper-V commands

Si ves que tu máquina virtual no responde, puedes forzar su apagado. Para ello, ejecute el siguiente cmdlet de PowerShell:

Stop-VM -Name 'Windows Server 2016' -Force

Tenga en cuenta que el apagado forzado es similar a cortar la alimentación de una máquina física, lo que significa que puede provocar la pérdida de datos de aplicaciones no guardados. En este caso, se recomienda guardar la máquina virtual para evitar posibles pérdidas de datos. Para ello, es necesario ejecutar el cmdlet Save-VM, que equivale a hibernar un ordenador físico:

Save-VM -Name 'Windows Server 2016'

Si desea guardar las máquinas virtuales cuyos nombres empiecen por Hyper-V, ejecute el siguiente comando de Hyper-V PowerShell:

Get-VM -Name Hyper-V* | Save-VM

Uso de los comandos PowerShell Save-VM y Get-VM para Hyper-V

Punto de control-VM

El cmdlet Checkpoint-VM le ayuda a crear un punto de control de Hyper-V VM (también conocido como instantánea de Hyper-V). Ejecute el siguiente cmdlet para crear un punto de control denominado Update1 de la VM específica(Windows Server 2016):

Checkpoint-VM -Name 'Windows Server 2016' -SnapshotName Update1

Para verificar que la VM se ha creado correctamente, utilice el siguiente comando de Hyper-V PowerShell:

Get-VMSnapshot -VMName 'Windows Server 2016'

Using the Hyper-V PowerShell commands to create a VM snapshot (checkpoint)

Por otro lado, si desea eliminar determinadas instantáneas de Hyper-V, puede utilizar el cmdlet Remove-VMSnapshot. Por ejemplo, si queremos eliminar todas las instantáneas de máquinas virtuales cuyo nombre empiece por Testing, debemos ejecutar el siguiente cmdlet:

Get-VM 'Hyper-V Server 2012' | Remove-VMSnapshot -Name Testing*

Windows PowerShell commands to delete snapshots for a Hyper-V VM

La captura de pantalla anterior muestra todo el proceso de eliminación de las instantáneas de Hyper-V seleccionadas.

Test-VHD

Este comando Hyper-V PowerShell sirve para verificar que el archivo del disco duro virtual existe realmente y puede utilizarse para la instalación de Hyper-V. Este cmdlet es el siguiente:

Test-VHD -Path C:\Testing.vhd

En el caso de que la ruta del VHD sea válida, verá el siguiente resultado en su pantalla:

An example of using the Test-VHD command

Para obtener más información sobre la gestión de discos duros virtuales mediante cmdlets de PowerShell, le recomendamos que lea nuestra entrada de blog sobre los conceptos básicos de trabajo con archivos Hyper-V VHD y VHDX.

Medida-VM

Este comando de Hyper-V PowerShell le permite recopilar datos de utilización de recursos para una máquina virtual específica. Por ejemplo, ejecute el siguiente cmdlet para obtener información sobre el uso de CPU, el uso de RAM, la capacidad de disco y el tráfico de red de la máquina virtual denominada Windows Server 2016:

Measure-VM -VMName 'Windows Server 2016'

PowerShell get VM information

Tenga en cuenta que el cmdlet Measure-VM puede informar de los datos necesarios sólo después de que se haya habilitado la medición de recursos en una máquina virtual. Para activar la medición de recursos, utilice el siguiente comando Hyper-V PowerShell:

Enable-VMResourceMetering -VMName 'Windows Server 2016'

Get-VMNetworkAdapter

Otro útil cmdlet de PowerShell es Get-VMNetworkAdapter, que permite identificar los adaptadores de red virtuales de la máquina virtual seleccionada. Por ejemplo, si desea encontrar los adaptadores de red virtuales de todas las máquinas virtuales, así como el sistema operativo de gestión, debe ejecutar el siguiente comando PowerShell Hyper-V:

Get-VMNetworkAdapter –All

Si todo es correcto, deberías ver la siguiente información en tu consola PowerShell:

PowerShell get VM information about network adapters

Utilizando los comandos de Hyper-V PowerShell, puede realizar varias tareas simples así como complejas con sus adaptadores de red Hyper-V. Consulte nuestra guía sobre los cmdlets que pueden ayudarle a gestionar y configurar adaptadores de red virtuales en su entorno Hyper-V.

Actualizar-VMVersion

PowerShell tiene un cmdlet que permite actualizar la versión de la VM seleccionada:

Update-VMVersion -Name 'TestVM'

Después de ejecutar el comando Hyper-V PowerShell, la VM llamada TestVM puede ser actualizada a la versión actual de la VM.

How to update VM Version in PowerShell

Obtener proceso

Este comando Hyper-V PowerShell puede ayudarle a ver todos los procesos actuales en su equipo local. Después de ejecutar el cmdlet Get-Process, puede obtener la siguiente información en su pantalla:

Viewing running processes on a Hyper-V host

Esta tabla incluye información sobre:

  • el número de asas que el proceso ha abierto
  • la cantidad de memoria no paginada que el proceso está utilizando
  • la cantidad de memoria paginable que el proceso está utilizando
  • el tamaño del conjunto de trabajo del proceso
  • la cantidad de memoria virtual que utiliza el proceso
  • la cantidad de tiempo de procesador que se ha asignado a todos los procesadores
  • el ID del proceso
  • el nombre del proceso

Para restringir la búsqueda y encontrar un proceso específico, debe escribir el nombre o ID del proceso. Por ejemplo, si quiere saber cómo está funcionando Microsoft Word, debe buscar en la lista de todos los procesos en ejecución y encontrar la línea con la información sobre Microsoft Word (es decir, WinWord), incluyendo su ID de proceso. Utilizando el ID del proceso, puede ejecutar el siguiente cmdlet para obtener los datos necesarios:

Get-Process -ID 8892

Viewing the ID of the running process on a Hyper-V host

Además, los datos sobre los procesos actuales de WinWord pueden presentarse en otro formato, es decir, como una lista de propiedades. Ejecute este cmdlet para obtener un resultado más detallado:

Get-Process WINWORD | Format-List *

Viewing the details about the process on a Hyper-V host in PowerShell

Después de obtener los datos del proceso, puede ejecutar los siguientes cmdlets:

  • Stop-Process permite detener uno o varios procesos en ejecución.
  • Wait-Process le permite esperar a que uno o más procesos en ejecución se detengan antes de habilitar cualquier otra entrada.
  • Start-Process permite iniciar uno o varios procesos en el ordenador local.
  • Debug-Process le permite adjuntar un depurador a uno o más procesos en ejecución en el equipo local.

Por ejemplo, si desea iniciar la aplicación Notepad desde PowerShell, debe ejecutar el siguiente cmdlet:

Start-Process -FilePath "notepad.exe"

Otro ejemplo es cuando ha abierto PowerShell en modo «normal», pero necesita ejecutar PowerShell en modo elevado para acceder a los derechos administrativos. En tal caso, ejecute el siguiente comando Hyper-V PowerShell:

Start-Process -FilePath "powershell" -Verb RunAs

How to run PowerShell commands in the elevated mode

Por otro lado, si uno de los procesos en ejecución deja de responder, puede ejecutar el cmdlet Stop-Process cmdlet para detener la aplicación que ha fallado:

Stop-Process -Name "notepad"

En este caso, se detienen todas las instancias de la aplicación Notepad en el equipo local.

Cada instancia del Bloc de notas tiene su propio ID de proceso. Si desea detener una instancia concreta del Bloc de notas, debe utilizar el parámetro ID en el cmdlet Stop-Process . Para ello, primero debe ejecutar el cmdlet Get-Process, buscar los procesos activos necesarios e identificar el ID del proceso que desea detener.

Stopping the needed process in PowerShell

Por ejemplo, puede detener el proceso específico de Notepad identificando su ID de proceso y ejecutando el siguiente comando Hyper-V PowerShell:

Stop-Process -ID 5052

Como resultado, sólo se detiene el proceso Notepad seleccionado.

Estos comandos de PowerShell le permiten detectar un proceso que está consumiendo recursos no deseados y reduciendo el rendimiento de Hyper-V con el fin de poner fin a este proceso.

Donde-Objeto

Este comando PowerShell de Hyper-V le permite filtrar objetos de canalización y encontrar los datos exactos que necesita. En este caso, debe crear un script PowerShell en el que especifique qué objetos se pueden pasar a lo largo de la canalización. Utilizando varios criterios de búsqueda, puedes encontrar cualquier objeto en el ordenador local.

Por ejemplo, si desea localizar los procesos que han dejado de ejecutarse, utilice este cmdlet:

Get-Service | Where-Object {$_.Status -eq 'Stopped'}

Otro ejemplo de uso del cmdlet Where-Object es cuando se desea encontrar un cmdlet específico. El siguiente comando de Hyper-V PowerShell puede ayudarle a encontrar todos los cmdlets que empiezan por Wait:

Get-Command | Where-Object {$_.Name -like '*wait*'}

An example of using the Where-Object cmdlet in PowerShell

El siguiente cmdlet Where-Object puede ayudarle a encontrar un proceso concreto basándose únicamente en su nombre. Ejecutando el siguiente comando, puedes obtener una lista de todos los procesos cuyos nombres empiezan por sys:

Get-Process | Where-Object {$_.ProcessName -Match "^sys.*"}

Cómo encontrar el proceso basándose sólo en su nombre

Cómo crear una máquina virtual Hyper-V con PowerShell

Una de las potentes funciones integradas de Hyper-V es permitir el uso de PowerShell para las operaciones de gestión. Entre las muchas cosas que podemos hacer con PowerShell en Hyper-V está crear máquinas virtuales. Veamos un conjunto de comandos PowerShell de Hyper-V para crear nuevas máquinas virtuales.

Comandos PowerShell para crear una nueva máquina virtual

Para crear una nueva máquina virtual de Generación 2 con un disco duro VHDX de 60 GB totalmente nuevo y conectarlo a un conmutador virtual específico (en este caso, «ExternalSwitch«), ejecute los siguientes comandos de PowerShell en su host Hyper-V.

  1. Creación de una máquina virtual:

    new-vm -Name "WSTEST" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "D:\hyper-v\virtualhard disks\WSTEST.vhdx" -NewVHDSizeBytes 60000000000 -Switchname "ExternalSwitch"

  2. Para añadir una unidad de DVD junto con una imagen ISO desde la que arrancar, podemos ejecutar comandos adicionales:

    Add-vmscsicontroller -vmname WSTEST

    Add-vmdvddrive -vmnname WSTEST -controllernumber 1 -controllerlocation 0 -path D:\ISO\my.iso

  3. Si queremos crear un disco de tamaño fijo y adjuntarlo a nuestra VM, podemos ejecutar lo siguiente para crear un VHDX de tamaño fijo y adjuntarlo a nuestra VM:

    new-vhd -path "d:\hyper-v\virtual hard disks.wstest.vhdx" -sizebytes 60GB -fixed

    add-vmharddiskdrive -vmname WSTEST -path "d:\hyper-v\virtual hard disks\wstest.vhdx"

Conclusión

PowerShell puede parecer intimidante al principio, pero una vez que aprenda a trabajar con él, podrá descubrir rápidamente cómo utilizar los comandos de Hyper-V PowerShell y agilizar la administración en su entorno Hyper-V. Tenga en cuenta que, independientemente de lo que utilice para gestionar sus máquinas virtuales, debe hacer backups para evitar la pérdida de datos y el tiempo de inactividad.

NAKIVO Backup & Replication es una solución de protección de datos fiable y potente, que puede ayudarle a proteger entornos VMware, Hyper-V, Nutanix, AWS EC2, Linux, Windows y Microsoft 365.

1 Year of Free Data Protection: NAKIVO Backup & Replication

1 Year of Free Data Protection: NAKIVO Backup & Replication

Deploy in 2 minutes and protect virtual, cloud, physical and SaaS data. Backup, replication, instant recovery options.

Artículos recomendados