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

Gestionar entornos Hyper-V puede ser una tarea desafiante. Por lo tanto, necesitas una herramienta de gestión potente para configurar y controlar tu 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 utilizando PowerShell para la gestión de Hyper-V.

En esta publicación de blog, describimos cómo funciona PowerShell, qué comandos de PowerShell de Hyper-V 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.

¿Qué es PowerShell?

PowerShell es un marco de automatización de tareas y gestión de configuraciones desarrollado por Microsoft, que incluye un shell de línea de comandos y un lenguaje de script asociado construido sobre el .NET Framework y .NET Core.

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

¿Qué puede hacer PowerShell?

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

Además, puedes guardar los comandos de PowerShell de Hyper-V necesarios en un archivo de texto (con la extensión .ps1) y luego ejecutar este script para realizar ciertas tareas. Además, puedes programar scripts de PowerShell para que se ejecuten en un momento determinado utilizando el Programador de tareas.

Cómo abrir PowerShell

Hay un par de formas en las que podemos ejecutar PowerShell en Hyper-V. Una forma sencilla de acceder a PowerShell es conectarse directamente a un servidor de Hyper-V y ejecutarlo desde allí. Para conectarse de forma remota a un host de Hyper-V, necesitamos asegurarnos de que el Escritorio Remoto esté habilitado. Una vez habilitado el Escritorio Remoto, podemos utilizar la utilidad de Escritorio Remoto y conectarnos de forma remota al servidor como lo haríamos con cualquier 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. Debe hacer clic en Iniciar y escribir 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.

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 presione Enter.
  2. A Windows PowerShell session should start automatically in the Command Prompt window. A PS prefix is then added to the command prompt to indicate that you have started a Windows PowerShell session.
  3. Una vez que esté en PowerShell, puede utilizar comandos específicos de PowerShell para Hyper-V, que cubrimos a continuación en esta publicación.

Configuración Remota

Para verificar la configuración del escritorio remoto en Windows Server Core o Hyper-V Server, puede iniciar la utilidad sconfig si aún no está iniciada y configurarla utilizando la opción 7. Además, una vez conectado de forma remota al host de Hyper-V, puede utilizar la opción 15 para Salir al Símbolo del sistema.

Una vez allí, estás en un entorno regular de cmd.exe – no en PowerShell. Para iniciar un entorno de PowerShell, simplemente escribe powershell en la línea de comandos.

PowerShell Remoto

Usando PowerShell, también puedes interactuar de forma remota con Hyper-V. En otras palabras, puedes ejecutar comandos de PowerShell de forma remota en el host de 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 administración de Hyper-V, podemos ejecutar nuestros cmdlets de Hyper-V. Primero, necesitamos instalar las herramientas de Hyper-V, incluyendo estos cmdlets (cmdlets).

Install-WindowsFeature RSAT-Hyper-V-Tools

Una vez que tengamos las herramientas cargadas, podemos ejecutar los mismos tipos de comandos utilizando el parámetro -computername apuntando a nuestro host de Hyper-V como se muestra en la captura de pantalla a continuación. Pasamos el nombre de nuestro host al cmdlet get-vm de PowerShell.

12 Comandos Esenciales de PowerShell para Hyper-V

Existen varios comandos efectivos de PowerShell para Hyper-V que pueden facilitar el proceso de administración de Hyper-V fácil y simple. Veamos cómo puedes utilizar diferentes comandos de PowerShell para Hyper-V.

Get-Command

Empecemos con un comando de PowerShell para Hyper-V que es útil para usuarios que son nuevos en PowerShell y no saben qué cmdlets deberían ser utilizados y cómo. Al ejecutar el cmdlet Get-Command, puedes ver la lista completa de todos los cmdlets disponibles (comandos de Windows PowerShell), funciones y alias instalados en la computadora.

Sin embargo, si deseas reducir tu búsqueda y obtener la lista de comandos de PowerShell de Hyper-V que cumplan con criterios específicos, puedes usar el cmdlet Get-Command *-VM para encontrar la lista de comandos que te permiten controlar y configurar máquinas virtuales.

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

Get-Help

Una vez que hayas decidido qué comando de PowerShell de Hyper-V deseas usar, puedes obtener más información sobre ese cmdlet. Para este propósito, puedes utilizar el cmdlet Get-Help. Por ejemplo, para obtener más información sobre el cmdlet Get-VM, escribe lo siguiente:

Get-Help Get-VM

Get-VM

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

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

Start-VM

Este cmdlet de PowerShell particular start VM te ayuda a iniciar una máquina virtual. Para este propósito, ejecuta el siguiente comando de PowerShell de Hyper-V:

Start-VM -Name 'Windows Server 2016'

Como resultado, la máquina virtual llamada Windows Server 2016 se inicia en tu host de Hyper-V local. Verifiquemos si la máquina virtual ha iniciado realmente ejecutando el cmdlet Get-VM.

Además, puedes usar una versión modificada del cmdlet Start-VM para iniciar VMs solo si sus nombres comienzan con Hyper-V:

Start-VM -Name Hyper-V*

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

El cmdlet Stop-VM

te permite apagar o apagar una VM. Para este propósito, puedes ejecutar el siguiente cmdlet:

Stop-VM -Name 'Windows Server 2016'

Como puedes ver, la VM seleccionada se ha apagado correctamente a través del sistema operativo invitado.

Otro ejemplo es que puedes apagar las VMs cuyos nombres comienzan con Hyper-V:

Stop-VM -Name Hyper-V* -TurnOff

Si encuentras que tu VM no responde, puedes forzar su apagado. Para hacer esto, ejecuta el siguiente cmdlet de PowerShell:

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

Ten en cuenta que el apagado forzado es similar a desconectar la alimentación de una máquina física, lo que puede resultar en la pérdida de datos de aplicaciones no guardados. En este caso, se recomienda guardar la VM para evitar posibles pérdidas de datos. Para este propósito, necesitas ejecutar el cmdlet Save-VM, que es equivalente a hibernar una computadora física:

Save-VM -Name 'Windows Server 2016'

Si deseas guardar las VMs cuyos nombres comienzan con Hyper-V, ejecuta el siguiente comando de PowerShell de Hyper-V:

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

Checkpoint-VM

El cmdlet Checkpoint-VM te ayuda a crear un punto de control de VM de Hyper-V (también conocido como instantánea de Hyper-V). Ejecute el siguiente cmdlet para crear un punto de control llamado 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, use el siguiente comando de PowerShell de Hyper-V:

Get-VMSnapshot -VMName 'Windows Server 2016'

Por otro lado, si desea eliminar ciertas instantáneas de Hyper-V, puede usar el cmdlet Remove-VMSnapshot. Por ejemplo, si queremos eliminar todas las instantáneas de VM cuyos nombres comienzan con Testing, deberíamos ejecutar el siguiente cmdlet:

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

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

Test-VHD

Este comando de PowerShell de Hyper-V está destinado a verificar que el archivo de disco duro virtual realmente existe y se puede usar para implementació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á la siguiente salida en su pantalla:

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

Measure-VM

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

Measure-VM -VMName 'Windows Server 2016'

Tenga en cuenta que el cmdlet Measure-VM puede informar los datos requeridos solo después de habilitar el seguimiento de recursos en una VM. Para habilitar el seguimiento de recursos, utilice el siguiente cmdlet de PowerShell de Hyper-V:

Enable-VMResourceMetering -VMName 'Windows Server 2016'

Get-VMNetworkAdapter

Otro cmdlet de PowerShell útil es Get-VMNetworkAdapter, que le permite identificar los adaptadores de red virtual de la VM seleccionada. Por ejemplo, si desea encontrar adaptadores de red de todas las VMs, así como del sistema operativo de administración, debe ejecutar el siguiente cmdlet de PowerShell de Hyper-V:

Get-VMNetworkAdapter –All

Si todo está correcto, debería ver la siguiente información en su consola de PowerShell:

Usando comandos de PowerShell de Hyper-V, puedes realizar varias tareas simples y complejas con tus adaptadores de red de Hyper-V. Echa un vistazo a nuestra guía sobre los cmdlets que pueden ayudarte a administrar y configurar adaptadores de red virtuales en tu entorno de Hyper-V.

Update-VMVersion

PowerShell tiene un cmdlet que te permite actualizar la versión de la máquina virtual seleccionada:

Update-VMVersion -Name 'TestVM'

Después de ejecutar el comando de PowerShell de Hyper-V, la máquina virtual llamada TestVM se puede actualizar a la versión actual de la máquina virtual.

Get-Process

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

Esta tabla incluye información sobre:

  • el número de identificadores 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 el proceso está utilizando
  • la cantidad de tiempo del procesador que se ha asignado a todos los procesadores
  • el ID del proceso
  • el nombre del proceso

Para acotar la búsqueda y encontrar un proceso específico, debes escribir el nombre o ID del proceso. Por ejemplo, si deseas saber cómo está funcionando actualmente Microsoft Word, debes 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), incluido su ID de proceso. Usando el ID de proceso, puedes ejecutar el siguiente cmdlet para obtener los datos necesarios:

Get-Process -ID 8892

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

Get-Process WINWORD | Format-List *

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

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

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

Start-Process -FilePath "notepad.exe"

Cuando se abre PowerShell en “modo normal”, pero se necesita ejecutar PowerShell con derechos administrativos para obtener acceso a permisos elevados, ejecute el siguiente comando de PowerShell de Hyper-V:

Start-Process -FilePath "powershell" -Verb RunAs

Por otro lado, si uno de los procesos en ejecución deja de responder, puede ejecutar el cmdlet Stop-Process para detener el programa fallido:

Stop-Process -Name "notepad"

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

Cada instancia de Notepad tiene su propio ID de proceso. Si desea detener una instancia específica de Notepad, debe usar el parámetro ID en el cmdlet Stop-Process. Para este propósito, primero debe ejecutar el cmdlet Get-Process, encontrar los procesos activos requeridos y determinar el ID de proceso que desea detener.

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

Stop-Process -ID 5052

Como resultado, solo se detiene el proceso de Notepad seleccionado.

Estos comandos de PowerShell le permiten detectar un proceso que consume recursos no deseados y reduce el rendimiento de Hyper-V para finalizar este proceso.

Where-Object

Este comando de PowerShell de Hyper-V te permite filtrar objetos de la canalización y encontrar los datos exactos que necesitas. En este caso, necesitas crear un script de PowerShell en el que especifiques qué objetos pueden pasar por la canalización. Usando varios criterios de búsqueda, puedes encontrar cualquier objeto en el ordenador local.

Por ejemplo, si deseas localizar los procesos que se han detenido, utiliza este cmdlet:

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

Otro ejemplo de uso del cmdlet Where-Object es cuando quieres encontrar un cmdlet específico. El siguiente comando de PowerShell de Hyper-V puede ayudarte a encontrar todos los cmdlets que comienzan con Wait:

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

El siguiente cmdlet Where-Object puede ayudarte a encontrar un proceso específico basado solo en su nombre. Ejecutando el siguiente comando, puedes obtener una lista de todos los procesos cuyos nombres empiezan con sys:

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

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

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

Comandos de PowerShell para crear una nueva VM

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

  1. Creando una VM:

    nueva-vm -Nombre "WSTEST" -MemoryStartupBytes 2GB -Generación 2 -NuevoVHDPath "D:\hyper-v\discos duros virtuales\WSTEST.vhdx" -NuevoVHDSizeBytes 60000000000 -NombreSwitch "ExternalSwitch"

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

    Agregar-vmscsicontroller -nombrevm WSTEST

    Agregar-vmdvddrive -nombrevm WSTEST -controllernumber 1 -controllerlocation 0 -ruta D:\ISO\mi.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:

    nuevo-vhd -path "d:\hyper-v\discos duros virtuales.wstest.vhdx" -sizebytes 60GB -fixed

    agregar-unidadde disco durovm -nombre WSTEST -ruta "d:\hyper-v\discos duros virtuales\wstest.vhdx"

Conclusión

PowerShell puede parecer intimidante al principio, pero una vez que aprendas a trabajar con él, rápidamente podrás descubrir cómo usar los comandos de PowerShell de Hyper-V y optimizar la administración en tu entorno de Hyper-V. Solo ten en cuenta que sea lo que sea que uses para administrar tus VM, necesitas estar creando copias de seguridad para evitar pérdida de datos y tiempo de inactividad.

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

Source:
https://www.nakivo.com/blog/essential-hyper-v-powershell-commands/