When needing to manipulate a virtual machine – either kill it if it’s unresponsive, or do other management tasks such as working with virtual disks or snapshots and even fixing specific issues with NTFS file permissions – it may be useful to know the virtual machine ID or GUID. In this brief article, we’ll show you where to find the process ID and GUID.
If you look at the folder where the VM is located, you’ll find an .XML file that contains the configuration information for the VM. This file name uses a long GUID string, which in fact is identical to the VM’s GUID.

This is a good script written by Michael Michael from Microsoft. It will give you a list of all VMs in a hyper-v system as well as their respective BIOS GUIDs.
How to get the BIOS GUID from a Hyper-V VM – Virtual Machine Management – Site Home – TechNet Blogs
http://blogs.technet.com/b/m2/archive/2008/07/04/how-to-get-the-bios-guid-from-a-hyper-v-vm.aspx?ppud=4&wa=wsignin1.0
Next, a good resource to know, the PowerShell management Library for Hyper-V, a project to provide a PowerShell management library for Hyper-V. It does pretty much what it says, with 80 functions in the library, including those to help you get VM ID PowerShell insights.
.
PowerShell Management Library for Hyper-V
http://pshyperv.codeplex.com
After importing the management library, run a command such as this one:
get-vm | ft ElementName,name
Another easy to use method is by querying the WMI repository.
Copy the following command and enter it in a PowerShell window with elevated credentials:
Get-WmiObject -Namespace rootvirtualization -class msvm_computersystem | select elementname, operationalstatus, processid, name| ft -auto
For example:
After finding either the Process ID or the GUID, here is how you can kill a hung VM without affecting the other VMs on the host.
Knowing a VM’s ID or GUID can be useful whenever you need kill a hung VM or do other management tasks to a specific VM, especially if there are multiple VM’s running on one machine. I hope this brief article has shown you some useful ways of obtaining a VM’s ID and GUID using get VM ID PowerShell commands.
To get VM ID PowerShell in a clustered environment, use the Get-ClusterResource cmdlet combined with Get-VM. The command ‘Get-ClusterResource | Where-Object {$_.ResourceType -eq “Virtual Machine”} | Get-VM’ will retrieve VM IDs across all nodes in the cluster.
Yes, you can get VM ID PowerShell output in CSV format using the Export-CSV cmdlet. Use ‘Get-VM | Select-Object ID, Name, State | Export-CSV -Path “C:\VMIDs.csv”‘ to create a detailed report of all VM IDs.
To retrieve VM ID PowerShell data for snapshots, use ‘Get-VMSnapshot -VMName “YourVMName” | Select-Object VMId, SnapshotType, CreationTime’. This provides snapshot-specific VM IDs and related information.
Yes, use ‘Get-VM | Where-Object {$_.State -eq ‘Off’} | Select-Object Id, Name’ to get VM ID PowerShell information for all stopped virtual machines on your host.
Use Invoke-Command with Get-VM across multiple hosts: ‘Invoke-Command -ComputerName (Get-Content hosts.txt) -ScriptBlock {Get-VM | Select-Object ID, Name, ComputerName}’ to retrieve VM IDs from multiple hosts at once.