Con la llegada de Windows Server 2016 y Windows 10, Microsoft ha introducido una nueva característica interesante, muy interesante para cualquiera que quiera realizar tareas remotas con máquinas virtuales. PowerShell Direct permite a los administradores de TI ejecutar sesiones de PowerShell dentro de una máquina virtual desde Hyper-V en modo directo, sin redes o similar. Esto significa que también puede invocar un script si la red no está disponible; o si los hosts están separados del servidor / clientes o no hay manera de abrir una sesión remota de PowerShell debido a las políticas de seguridad. Por esta razón, PowerShell Direct es “bueno conocerlo”.
Requisitos
Para usar PowerShell Direct es necesario verificar estos requisitos:
- La máquina virtual debe ejecutar Windows 10 o Windows Server 2016
- La máquina virtual debe ejecutarse en el mismo host que desea usar para abrir la sesión
- La Máquina Virtual debe tener al menos un perfil de usuario válido configurado
- La sesión debe abrirse como administrador local del host Hyper-V
- Es necesario insertar credenciales válidas para Máquina Virtual
Crear una sesión remota
Para abrir una nueva sesión remota, use el comando Enter-PSSession -VMName yourvm – como se muestra en la figura 1.
Figure 1 – Nueva sesión PS
Una vez que esté dentro de la sesión, podremos trabajar en la máquina virtual y ejecutar los cmdlets de PowerShell de la misma forma local, esto significa que puede usar los módulos. Como se muestra en la figura 2, podemos usar los comandos de la ventana acoplable sin problemas, aunque la función no está presente en el host de Hyper-V.
Figure 2 – Comandos remotos
NB: tenga en cuenta que todas las conexiones basadas en Enter-PSSession son temporales y esto significa que si cierra la ventana, será necesario volver a ingresar las credenciales.
Run Complex Commands
La conexión clásica se puede usar para ejecutar tareas fáciles y simples, mientras que si necesita ejecutar scripts avanzados, es posible que use el comando Invoke. Este cmdlet es perfecto para ejecutar un script complejo almacenado en un repositorio (local o remotamente). Es posible usar dos tipos de formas:
- Commando: Invoke-Command -VMName nomevm -ScriptBlock { Get-Service }
- Script: Invoke-Command -VMName nomevm -FilePath “C:\hyperv-folder\script.ps1”
Figure 3 – Comando Invoke
Copiar archivos
No solo comandos o scripts, sino también una forma de transferir archivos del host a la máquina virtual. Esto se puede lograr con el cmdlet “Copy-Item”, pero es necesario abrir una sesión persistente para evitar interrupciones en caso de que cierre la ventana; el objetivo es utilizar la misma sesión cada vez que no vuelva a insertar las credenciales. Esto es un ejemplo:
$VM = New-PSSession -VMName nomevm -Credential (Get-Credential)
Copy-Item -ToSession $VM -Path C:\hyperv-folder\app.exe -Destination C:\guest-vm\
Figure 4 – Copia de archivo
El rendimiento detrás de esta tarea es muy interesante porque gracias a los VMBus, podemos saltar todos los controladores y las capas para permitir la comunicación. El resultado es un proceso de copia de alta velocidad, pero no olvide considerar qué tipo de archivo desea transferir y también el rendimiento de la máquina virtual (un archivo .vhdx ubicado en un SSD es mucho más rápido que un archivo ubicado en un HDD).
Conclusión
PowerShell Direct permite a los administradores de TI ejecutar y automatizar las tareas de administración sin el requisito de interactuar con el sistema operativo a través de la GUI.
PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://www.iperiusbackup.com/contact.aspx
**********************************************************************************
PLEASE NOTE: if you need technical support or have any sales or technical question, don't use comments. Instead open a TICKET here: https://www.iperiusbackup.com/contact.aspx
*****************************************