= Hyper-V Get Host for VM = **Summary**: How to get the host for a particular VM in Hyper-V 2. \\ **Date**: Around 2020 \\ **Refactor**: 1 March 2025: Checked links and formatting. \\ {{tag>hyperv powershell}} Use the following script to schedule a daily report to get the host for a particulat VM. The email functionality is imported from a default functions script as explained in [[adcontrols]]. Note that the script uses the SCCM Hyper-V commandlets, which are available after you install the [[https://docs.microsoft.com/en-us/system-center/vmm/install?view=sc-vmm-1807 |Virtual Machine Manager (VMM) management server]] == The Script == # Script Variables $scriptname = [System.IO.Path]::GetFilenameWithoutExtension($MyInvocation.MyCommand.Path.ToString()) $scriptlocation = Split-Path $myinvocation.mycommand.path # Start transcript for full logging capabilities start-transcript -path "$scriptlocation\logtranscript.txt" # Date & Time Variables $timestamp = Get-Date -format "yyyyMMdd-HH.mm" $readdate = Get-Date -format "d MMM yyyy" $weekdate = Get-Date -uformat %V $monthdate = Get-Date -format "MMMM-yyyy" # Reporting Variables ### Email Variables $mailserver = "smtp1" $toemail = "s.hooft_getshifting.com" $ccmail = "s.hooft_getshifting.com" $fromemail = "$scriptname_getshifting.com" # Management Domain Variables $shiftuser = 'shift\sjoerd' $shiftpass = Get-Content "$scriptlocation\..\ICTscripts\shiftcreds.txt" | ConvertTo-SecureString $shiftcreds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $shiftuser,$shiftpass # Hyper-V Variables $vmmserver = "vmm.shift.com" $mqvm = "mqserver" $gb = 1073741824 ### Start Functions ### # Import functions from global function file . "$scriptlocation\..\ICTscripts\Functions.ps1" # Connect to SCCM Virtual Machine Manager Get-SCVMMServer $vmmserver -Credential $shiftcreds # Get Host and hardware info where MQ VM is running $mqhost = Get-VMHost | where {$_.VMs -contains "$mqvm"} | select name,CPUManufacturer,CPUArchitecture,CPUModel,PhysicalCPUCount,CoresPerCPU,CPUSpeed,@{N="TotalMemoryInGB";E={[Math]::Round(($_.TotalMemory/$gb) ,2)}} $mqhost $hostname = $mqhost.name $hostcpuman = $mqhost.CPUManufacturer $hostcpumodel = $mqhost.cpumodel $hostpcpu = $mqhost.PhysicalCPUCount $hostcores = $mqhost.CoresPerCPU $hostspeed = $mqhost.CPUSpeed $hostram = $mqhost.TotalMemoryInGB # Setup email $info = "Dear $toemail ,
" $info += "
" $info += "The server $mqvm is running on host $hostname
" $info += "$hostname has $hostpcpu $hostcpuman $hostcpumodel processors with each $hostcores cores with a speed of $hostspeed Mhz
" $info += "$hostname has $hostram GB memory
" # Set the subject and combine the email body collecting all information $subject = "MQ License Check for $readdate" # Send email Send-Email $subject $info # Stop Logging stop-transcript