Retrieving a list of all of your hosts
Similar to the Get-VM
cmdlet, which retrieves your virtual machines, is the Get-VMHost
cmdlet, which displays your hosts. The Get-VMHost
cmdlet has the following syntax. The first parameter set is the default:
Get-VMHost [[-Name] <String[]>] [-NoRecursion] [-Datastore
<StorageResource[]>] [-State <VMHostState[]>] [-Location
<VIContainer[]>]
[-Tag <Tag[]>] [-Server <VIServer[]>][<CommonParameters>]
The second parameter set is for retrieving hosts connected to specific distributed virtual switches:
Get-VMHost [[-Name] <String[]>] [-DistributedSwitch
<DistributedSwitch[]>] [-Tag <Tag[]>] [-Server <VIServer[]>]
[<CommonParameters>]
The third parameter set is for retrieving hosts by virtual machine or resource pool:
Get-VMHost [[-Name] <String[]>] [-NoRecursion] [-VM <VirtualMachine[]>]
[-ResourcePool <ResourcePool[]>] [-Datastore <StorageResource[]>]
[-Location <VIContainer[]>] [-Tag<Tag[]>] [-Server <VIServer[]>]
[<CommonParameters>]
The fourth parameter set is for retrieving hosts by ID:
Get-VMHost [-Server <VIServer[]>] -Id <String[]> [<CommonParameters>]
The -Id
 parameter is required. The fifth parameter set is for retrieving hosts by related object:
Get-VMHost [-RelatedObject] <VMHostRelatedObjectBase[]>
[<CommonParameters>]
The -RelatedObject
parameter is required.
Don't mix parameters from different sets or you will get an error as follows:
PowerCLI C:\> Get-VMHost -Id HostSystem-host-22 -Name 192.168.0.133 Get-VMHost : Parameter set cannot be resolved using the specified named parameters. At line:1 char:1 + Get-VMHost -Id HostSystem-host-22 -Name 192.168.0.133 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Get-VMHost], ParameterBindingException + FullyQualifiedErrorId : AmbiguousParameterSet, VMware.VimAutomation .ViCore.Cmdlets.Commands.GetVMHost
To get a list of all of your hosts, type the following command:
PowerCLI C:\> Get-VMHost
By default, only the Name
, ConnectionState
, PowerState
, NumCPU
, CpuUsageMhz
, CpuTotalMhz
, MemoryUsageGB
, MemoryTotalGB
, and Version
properties are shown. To get a list of all of the properties, type the following command:
PowerCLI C:\> Get-VMHost | Format-List -Property *
The output of this command can be seen in the following screenshot:
You can use the Get-VMHost
parameters or the Where-Object
cmdlet to filter the hosts you want to display, as we did with the Get-VM
cmdlet.
Displaying the output in a grid view
Instead of displaying the output of your PowerCLI commands in the PowerCLI console, you can also display the output in a grid view. A grid view is a popup that looks like a spreadsheet with rows and columns. To display the output of the Get-VMHost
cmdlet in a grid view, type the following command:
PowerCLI C:\> Get-VMHost | Out-GridView
The preceding command opens the window of the following screenshot:
You can create filters to display only certain rows, and you can sort columns by clicking on the column header. You can also reorder columns by dragging and dropping them. In the following screenshot, we created a filter to show only the hosts with a CpuUsageMhz value greater than or equal to 22. We also changed the order of the ConnectionState and PowerState columns.
Isn't that cool?