vmconnect is the Hyper‑V Virtual Machine Connection console tool that provides direct keyboard, video, and mouse access to guest VMs on local or remote Windows hosts.
vmconnect.exe ServerName VMName [-C count]
vmconnect.exe ServerName [VMName] -G GUID [-C count]
Options and Flags
| Flag | Type | Description |
|---|---|---|
| -C | Integer | Specify a connection ID. VMConnect stacks console windows with a small offset so all are visible. Higher numbers increase spacing. |
| -G | String (GUID) | Connect to a VM by its unique identifier (GUID) instead of by name. |
Usage Examples
Connect to a VM by name on a remote Hyper‑V server
vmconnect.exe HYPERV-SRV01 "Windows Server 2022 VM"
The VM name must match exactly as shown in Hyper‑V Manager. Use quotation marks if the name contains spaces.
Connect to a VM using its GUID (cross‑domain or name conflict)
vmconnect.exe HYPERV-SRV01 -G "A1B2C3D4-E5F6-7890-ABCD-EF1234567890"
Useful when connecting from a different AD domain or when the VM name contains non‑ASCII characters. Obtain the GUID via PowerShell: (Get-VM -Name "VMName").Id.
Stack multiple VM console windows
vmconnect.exe HYPERV-SRV01 VM1 -C 2
vmconnect.exe HYPERV-SRV01 VM2 -C 2
Each console window is offset by 2 pixels. Increase the count for more visible separation.
Troubleshooting and Common Issues
| Issue | Root Cause | Resolution |
|---|---|---|
| Virtual machine could not be found | VM name mismatch or typo; GUID is invalid. | Verify name using Get-VM -ComputerName ServerName | Format-Table Name, Id. |
| Access is denied | User not in Hyper‑V Administrators group or missing delegated permissions. | Grant permission: Grant-VMConnectAccess -VMName VM1 -UserName DOMAINUser. |
| Console opens but stays black | VM is turned off or in a saved state. | Start the VM: Start-VM -Name VM1 -ComputerName ServerName. |
| Specified server cannot perform the operation | Client OS not running Hyper‑V Management Tools. | Install RSAT: Add-WindowsCapability -Online -Name Rsat.HyperV.Tools~~~~0.0.1.0. |
Frequently Asked Questions
How do I use vmconnect from another AD domain?
Answer: Use the -G GUID flag to connect by VM GUID instead of name. This bypasses name resolution issues across domain trusts. Obtain the GUID from the Hyper‑V host via PowerShell: Get-VM -Name VMName | Select-Object -ExpandProperty Id.
If you must use a VM name, ensure proper DNS resolution and Kerberos delegation are configured.
Why use vmconnect.exe instead of MSTSC.exe for Hyper‑V VMs?
Answer: vmconnect provides direct console access similar to a physical monitor, keyboard, and mouse. It works even when the guest OS network stack is broken or the VM is in an early boot state (e.g., Safe Mode). MSTSC (RDP) relies on the guest OS networking services, which may not be available if the VM is unbooted or misconfigured.
Can I send Ctrl+Alt+Delete to a virtual machine using vmconnect?
Answer: Yes. In the VMConnect window, use the menu (Action → Ctrl+Alt+Delete) or press Ctrl+Alt+End (Windows) / Ctrl+Shift+Escape (macOS). This simulates the key combination and is necessary for logging into Windows VMs.

Command Line Expert & Software Engineer
Welcome! I’m Thomas Heinrich, a software engineer and system administrator with a deep passion for the Command Line Interface (CLI). With years of experience navigating the terminal, building backend architectures, and automating server deployments, I created this space to share practical, real-world terminal knowledge.
Whether you are a beginner taking your first steps in a Linux environment or a seasoned DevOps engineer looking to optimize your deployment scripts, you will find actionable solutions here. My goal is to help you ditch the mouse, speed up your workflow, and harness the full power of the command line.