PowerShell Direct enables system administrators to run PowerShell commands inside a virtual machine (VM) from the host operating system without having to deal with common networking issues.
PowerShell Direct will run PowerShell commands remotely in the guest OS of a virtual machine (VM) with zero configuration and without needing to worry about security policies, firewall configurations and the host networking configuration. As a result, PowerShell Direct will work even in the absence of guest VM networking or if PowerShell remoting is disabled on the guest VM.
Microsoft developed PowerShell Direct to make it easier for Hyper-V administrations to automate and script virtual machine management and configuration. Server admins can run PowerShell Direct either as an interactive session or by executing a set of PowerShell cmdlets.
Using PowerShell Direct and Current Limitations
PowerShell Direct utilizes the PowerShell Remoting Protocol (MS-PSRP) to facilitate VM management and configuration. To create a PowerShell Direct session on a VM, the following conditions need to be met:
- The virtual machine must be running locally on the host and booted
- The admin must be logged into the host computer as a Hyper-V administrator
- The admin must supply valid user credentials for the virtual machine
- The host operating system must be running Windows 10, Windows Server 2016Technical Preview or later versions of the operating systems
- The virtual machine must run Windows 10, Windows Server 2016 Technical Preview or later versions of the operating systems
The Get-VM cmdlet can be used to ensure the credentials used have the Hyper-V administrator roles and also to get a list of which virtual machines are running locally on the host and booted.
In terms of limitations, PowerShell Direct is currently supported only on Windows Server 2016 and Windows 10, so virtual machines on Windows Server 2012 R2 and earlier operating systems won’t be able to accept PowerShell Direct commands. Also, PowerShell Direct can only send commands to the local VMs of a Hyper-V host.