I don't use this that often, but sometimes I just want to know which VMs are running on each of my VMware ESXi hosts. I find it easier to fire off the script than to open up vCenter if I want to know which host a VM is running on, and what other VMs are running on that host.
#-------------------------------- BEGIN SCRIPT --------------------------------
#Get Credentials
$credential = get-credential stemalyc@kalamazoocity.org
#Add the VMware Snapin
add-pssnapin Vmware.VimAutomation.Core
#Connect to the vCenter Server
connect-viserver -server cityvc.kalamazoocity.org -credential $credential
#Get all the hosts
$VMHosts = (Get-VMHost | select Name | sort name)
#Get all the VMs
$VMs = (Get-VM | select name, vmhost)
#Find the number of hosts, which will be our counter maximum later on
$HostQty = (($VMhosts | measure).count)
#Initialize the counter to zero
$i = 0
#While the counter is less than or equal to the host counter
While ($i -le $HostQty){
#List the VMs on the host. I use $i here to reference the exact host in the $VMHosts array.
$Listing = ($VMs | where {$_.vmhost -like ($VMHosts[$i].name)} | sort name)
#Output the list to the screen with Format-Table (ft)
$Listing | ft
#Blank out the list variable so it can be reused
$Listing = $null
#Increment the counter
$i++
} #End While
#Create a pause at the end of the script
$Pause = Read-Host "Press Enter to Continue"
#-------------------------------- END SCRIPT --------------------------------
No comments:
Post a Comment