I looked around the internets (or BinGled so to speak) and didn't see anyone who was simply listing the Hyper-V virtual machines running on a host. (Some folks were doing it for Citrix for VMware, but not Hyper-V.)
So I wrote a simple script that will display it on the screen, along with writing it to a file (as we plan on running this script every 24 hours or so, waiting for a crash).
#################################################################################### #################################################################################### <#.Synopsis List all VMs running in the cluster, along with what host it is running on and writes them to a location of your choosing. .Description List all VMs running in the cluster, along with what host it is running on and writes them to a location of your choosing. .Parameter filetowrite Path and file name to write the output to. .Parameter clustergroupname Cluster name itself, Fully qualified recommended .Example .\List-Vms -filetowrite c:\temp\vmlist.txt -clustergroupname YOURCLUSTERNAMEHERE-FQDN .Notes Author: Bryan Loveless bryan.loveless@gmail.com Requires -Version 4.0 Version: 1.0 Updated: 22.June.2015 LEGAL: PUBLIC DOMAIN. SCRIPT PROVIDED "AS IS" WITH NO WARRANTIES OR GUARANTEES OF ANY KIND, INCLUDING BUT NOT LIMITED TO MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. ALL RISKS OF DAMAGE REMAINS WITH THE USER, EVEN IF THE AUTHOR, SUPPLIER OR DISTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF ANY SUCH DAMAGE. IF YOUR STATE DOES NOT PERMIT THE COMPLETE LIMITATION OF LIABILITY, THEN DELETE THIS FILE SINCE YOU ARE NOW PROHIBITED TO HAVE IT. #> Function List-VMs { [CmdletBinding()] Param ( [Parameter( Position=1, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, #ValidateNotNullOrEmpty(), Mandatory=$true, HelpMessage="Filepath and name?" ) ] [string]$filetowrite = ("c:\temp\VMlist.txt"), [Parameter( Position=2, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, #ValidateNotNullOrEmpty(), Mandatory=$true, HelpMessage="What is the name of the cluster?" ) ] [string]$clustergroupname = ("YOURCLUSERNAMEHERE-FQDN") ) get-date | out-file $filetowrite -Append $OutArray = @() $clusterNodes = Get-ClusterNode -cluster $clustergroupname; ForEach($item in $clusterNodes) { write-host "RUNNING ON " ($item.name).ToString() ":" -foregroundcolor GREEN $item | out-file $filetowrite -Append $vms = Get-VM -ComputerName $item.Name ForEach($vm in $vms) { write-host $vm.Name $vm.State "CPU used:" $vm.cpuusage "%" "Uptime:" $vm.uptime $vm.Status $vm | Format-table name, state, cpuusage, memoryassigned, uptime, status | out-file $filetowrite -Append } } } #now to run it List-VMs -filetowrite c:\temp\vmlist.txt -clustergroupname YOURCLUSTERNAMEHERE-FQDN # FIN