If you have labeled vmkernel portgroups using names such as vmotion, nfs that would describe the purpose we can quickly search ip of those cards.
Get-VMHostNetworkAdapter -VMKernel -VMHost (get-cluster "myCluster1"|get-vmhost) | ? {$_.PortgroupName -eq "nfs"} | select Name,VMhost,Mac,IP Name VMHost Mac IP ---- ------ --- -- vmk1 host1 00:50:56:77:77:77 192.168.0.10 vmk1 host2 00:50:56:77:77:78 192.168.0.20
Nice, we now have mac,ip vmkernel interface name and information in which host in the cluster this vmk resides.
Now, if you want to get additional information besides those, you can try to check which are available by yourself.
So the object we are investigating here is a vmhostnetworkadapter.
Let’s take 1 vmhostnetworkadapter first:
Get-VMHost MyHost1 | Get-VMHostNetworkAdapter -VMKernel | ? {$_.PortgroupName -eq "nfs"} | gm
You can see the | gm at the end. This will help us investigate what other properties are available to us.
First we will notice that the object type is:
TypeName: VMware.VimAutomation.ViCore.Impl.V1.Host.Networking.Nic.HostVMKernelVirtualNicImpl
And we will receive whole list of properties and methods that are available
Name MemberType ---- ---------- ConvertToVersion Method Equals Method GetHashCode Method GetType Method IsConvertableTo Method ToString Method AutomaticIPv6 Property DeviceName Property DhcpEnabled Property ExtensionData Property FaultToleranceLoggingEnabled Property Id Property IP Property IPv6 Property IPv6Enabled Property IPv6ThroughDhcp Property Mac Property ManagementTrafficEnabled Property Mtu Property Name Property PortGroupName Property SubnetMask Property Uid Property VMHost Property VMHostId Property VMHostUid Property VMotionEnabled Property
If we want to check only properties of this object we could specify this in get-mamber so:
Get-VMHost MyHost1 | Get-VMHostNetworkAdapter -VMKernel | ? {$_.PortgroupName -eq "nfs"} | get-member -MemberType Property
For those who got lost a little with gm … get-member
gm does exactly the same as get-member. If you will type
alias gm
you will receive information that in fact this is just an alias for get-member
CommandType Name Definition ----------- ---- ---------- Alias gm Get-Member
Alright, back to the main topic.
So what else can we get from the VMHostNetworkAdapter. By now we should see what kind of properties are there. You can add them to the select-object command
Get-VMHostNetworkAdapter -VMKernel -VMHost (get-cluster "myCluster1"|get-vmhost) | ? {$_.PortgroupName -eq "nfs"} | select Name,VMhost,Mac,IP ->here
So if you wanted to see for example SubnetMask or Mtu you would just simply add it at the end to select-object like this
Get-VMHostNetworkAdapter -VMKernel -VMHost (get-cluster "myCluster1"|get-vmhost) | ? {$_.PortgroupName -eq "nfs"} | select Name,VMhost,Mac,IP,Mtu,SubnetMask
Let’s say we want to see EVERYTHING that is available for us right away:
Get-VMHostNetworkAdapter -VMKernel -VMHost (get-cluster "myCluster1"|get-vmhost) | ? {$_.PortgroupName -eq "nfs"} | select * Get-VMHostNetworkAdapter -VMKernel -VMHost (get-cluster "myCluster1"|get-vmhost) | ? {$_.PortgroupName -eq "nfs"} | format-list * Get-VMHostNetworkAdapter -VMKernel -VMHost (get-cluster "myCluster1"|get-vmhost) | ? {$_.PortgroupName -eq "nfs"} | format-table *
As you can see you can query all those properties in different ways.
One more thing, ‘select’ is an alias for Select-Object.
Format-list will generate output in a list as the name suggests 😉
Format-Table will generate a table (you have possibility to configure the table style here)
Select-Object will try to generate a ‘table look’, but it will not be the same table as format-table does. What is worth mentioning here is that for example object that will come from Format-Table or Format-List will not be understood by export-csv. Format-table output looks pretty much the same as if you had used the select-object, but it has different type. In this case only output from select-object could be piped without error to export-csv.
Whenever you are wondering if you can have more information about some object simply use get-member on it. If this will be a VM object, a VMHostNetworkAdapter object or a host object, you always can use get-member to see if there are useful properties for you to check.