# findVmHostByGuestName.ps1
$vmName='TESTVM'
function findVmHostByGuestName($vmName){
try{
Import-Module Hyper-V
Import-Module FailoverClusters
$allHyperVHosts={(Get-ClusterNode | Where { $_.State -eq "Up" }).Name | %{$_.ToLower()}}.Invoke()
$allVms=foreach ($hyperVHost in $allHyperVHosts){invoke-command -computername $hyperVHost -scriptblock{write-host "Getting VM List on $env:computername";Get-VM |select Name,Path}|select-object * -ExcludeProperty RunspaceId,PSShowComputerName}
$matchedHost=$allVms|?{$_.Name -like "*$vmName*"}
if($matchedHost){
return $matchedHost
}else{
write-host "'$vmName' is not found in cluster '$((get-cluster).Name)'"
return $null
}
}catch{
write-warning $_
return $false
}
}
findVmHostByGuestName $vmName
Categories: