Whilst on a recent engagement with a customer we were looking at best practices and trying to quickly see how each PortGroup was configured, did all hosts have the same nics assigned to the same vSwitches, were all Portgroups setup the same to use the correct active and standby adapters ?
Have you ever tried doing this from the GUI ? Believe me it will take about 10 minutes to manually copy the relevant information from each host and if you have multiple PortGroups and multiple vSwitches then you can see how long this will take to check against best practice !
I think you know what is coming….
This came up again when someone asked me how to achieve exactly the same thing so I bumped it up my list of scripts I need to write.
Check out the below PowerCLI script, it lists all the needed information to perform this best practice analysis as you can see from the example output:
And the code:
# Change the next line to specify the path for the ouput CSV file $filename = "C:\Temp\Networkinfo.csv" # Change the next line to connect to your vCenter Server Connect-VIServer MYVISERVER $NetworkInfo = @() Foreach ($VMHost in (Get-View -ViewType HostSystem | Where {$_.Runtime.ConnectionState -ne "disconnected"})){ Write $VMHost.Name $NetworkSystem = Get-View $VMHost.ConfigManager.NetworkSystem Foreach ($PG in $NetworkSystem.NetworkInfo.PortGroup){ $Details = "" | Select VMHost, vSwitch, PortGroup, ActiveNics, StandbyNics $Details.VMHost = $VMHost.Name $Details.Portgroup = $PG.Spec.Name If ((($PG.ComputedPolicy.NicTeaming.NicOrder.ActiveNic | Select -ExpandProperty $ActiveNic).Length) -gt 1){ $Details.ActiveNics = [string]::join(';',($PG.ComputedPolicy.NicTeaming.NicOrder.ActiveNic | Select -ExpandProperty $ActiveNic)) } Else { $Details.ActiveNics = ($PG.ComputedPolicy.NicTeaming.NicOrder.ActiveNic | Select -ExpandProperty $ActiveNic) } If ((($PG.ComputedPolicy.NicTeaming.NicOrder.StandbyNic | Select -ExpandProperty $StandbyNic).Length) -gt 1){ $Details.StandbyNics = [string]::join(';',($PG.ComputedPolicy.NicTeaming.NicOrder.StandbyNic | Select -ExpandProperty $StandbyNic)) } Else{ $Details.StandbyNics = ($PG.ComputedPolicy.NicTeaming.NicOrder.StandbyNic | Select -ExpandProperty $StandbyNic) } Foreach ($VS in $NetworkSystem.NetworkInfo.vSwitch){ If ($VS.Name -eq $PG.Spec.vSwitchName){ $Details.vSwitch = $VS.Name } } $NetworkInfo += $Details } } $NetworkInfo | Sort VMHost, VSwitch, PortGroup | Export-Csv $Filename -NoTypeInformation Invoke-Item $filename
There is also some more advanced network information available via this script.
Sorry, some issue with javascript hide code.
Thanks.
I read a few topics. I respect your work and added blog to favorites.
Then you can use ITQ Infrastructure Client to copy the correct config from your baseline host to other hosts. I’ve found this free program very helpful and want to give Flores Eken credit & thanks.
Outstanding, thanks!