PowerShell directo es una nueva característica de PowerShell en Windows Server 2016 y Windows 10 que permite crear una sesión de PowerShell local directa con cualquier máquina virtual que se ejecute en un host Hyper-V, mientras que la conexión se establece no a través de la red, sino a través del bus VM interno. Por lo tanto, un administrador de Hyper-V puede administrar cualquier VM usando PowerShell incluso si se encuentra en la red aislada o esta VM sin adaptadores vNIC.
Los principales requisitos para utilizar Powershell Direct:
- Windows Server 2016 o Windows 10 se pueden utilizar como sistema operativo host Hyper-V
- Una máquina virtual invitada debe ejecutarse en el mismo host de Hyper-V que proporciona conexión (es decir, conexión local)
- El sistema operativo de la máquina virtual invitada también debe ser Windows Server 2016 / Windows 10
- La consola de PowerShell en el host de Hyper-V debe ejecutarse con privilegios de administrador
- Para conectarse al sistema operativo invitado, debe especificar el nombre de usuario y la contraseña de la cuenta en esta máquina virtual
Anteriormente, un administrador podía ejecutar comandos en una máquina virtual Hyper-V solo a través de la red usando Invocar-Comando o Enter-PSSession. Para conectarse a una máquina virtual remota, debe especificar su nombre de red (-ComputerName).
Por ejemplo, puede obtener la lista de los procesos que se ejecutan en un servidor remoto como este:Invoke-Command -ComputerName WinSrv16-Core -ScriptBlock {Get-Process}
O cree una nueva sesión de PS interactiva con el servidor remoto:Enter-PSSession -ComputerName WinSrv16-Core
En este escenario, no se puede establecer una sesión de PS si la VM no está conectada al conmutador virtual, se ejecuta en una red aislada o protegida por firewall. Puede controlar dicha máquina virtual solo mediante la consola gráfica Hyper-V.

Para conectarse a esta máquina virtual invitada usando Powershell Direct, no necesita un nombre de red del sistema operativo invitado, sino el nombre de la máquina virtual o su VMGUID en el entorno Hyper-V. Al conectarse usando Powershell Direct, también puede usar Enter-PSSession para crear una sesión interactiva de PowerShell, o Invoke-Command para ejecutar un solo comando o un script.
- Obtenga la lista de máquinas virtuales en el host de Hyper-V:
Get-VM | Select Name - Inicie una sesión interactiva de PowerShell:
Enter-PSSession -VMName "win10 Comp PS-Direct" -Credential (Get-Credential) - Para salir de la sesión, ejecute:
Exit-PSSession

Para ejecutar un solo comando o secuencia de comandos, use Invoke-Command:
Invoke-Command -VMId <VMId> -FilePath C:psscript.ps1
Por ejemplo, si necesita copiar un archivo a una VM aislada usando Powershell Direct, puede usar los siguientes comandos:
Cree una nueva sesión PSSession1:
$PSSession1 = New-PSSession -VMId <VMId> -Credential (Get-Credential)
Copie un archivo a la máquina virtual:
Copy-Item -ToSession $PSSession1 -Path C:win10_ent_x64.iso -Destination E:ISO
Copie un archivo de la VM:
Copy-Item -FromSession $PSSession1 -Path C:vm_file.txt -Destination C:hyperv_host_share
Como puede ver, Powershell Direct es bastante conveniente y fácil de usar. Como la mayoría de las otras características nuevas de Windows Server 2016, Powershell Direct, en primer lugar, se centra en mejorar la funcionalidad del sistema desde el punto de vista de los proveedores de servicios / nube que brindan servicios de máquinas virtuales.





