Get-UplinkDetails.psm1
function Get-UplinkDetails { <# .NOTES =========================================================================== Created by: Markus Kraus Twitter: @VMarkus_K Private Blog: mycloudrevolution.com =========================================================================== Changelog: 2017.03 ver 1.0 Base Release =========================================================================== External Code Sources: Get-CDP Version from @LucD22 https://communities.vmware.com/thread/319553 =========================================================================== Tested Against Environment: vSphere Version: vSphere 6.0 U2 PowerCLI Version: PowerCLI 6.3 R1 PowerShell Version: 4.0 OS Version: Server 2012 R2 Keyword: ESXi, Network, CDP, DVS, vSwitch, VMNIC =========================================================================== .DESCRIPTION This Function collects detailed informations about your ESXi Host connections to pSwitch and DVS / vSwitch .Example Get-UplinkDetails -Clustername * | ft -AutoSize .Example Get-UplinkDetails -Clustername MyCluster001 | ft -AutoSize .Example Get-UplinkDetails -Clustername MyCluster* | Sort Clustername, Hostname, DVS | ft -AutoSize .PARAMETER Clustername Your vSphere Cluster Name or Wildcard #Requires PS -Version 4.0 #Requires -Modules VMware.VimAutomation.Core, @{ModuleName="VMware.VimAutomation.Core";ModuleVersion="6.3.0.0"} #> [CmdletBinding()] param( [Parameter(Mandatory=$True, ValueFromPipeline=$False, Position=0)] [String] $Clustername ) Begin { $Validate = $True if (($myCluster = Get-Cluster -Name $Clustername).count -lt 1) { $Validate = $False throw "No Cluster '$myCluster' found" } if (($myHosts = $myCluster | Get-VMHost).count -lt 1) { $Validate = $False throw "No Hosts in Cluster '$myCluster' found" } function Get-CDP ($VMhost){ $VMhostProxySwitch = $VMhost.NetworkInfo.ExtensionData.ProxySwitch $VMhostSwitch = $VMhost.NetworkInfo.VirtualSwitch $objReport = @() $VMhost| %{Get-View $_.ID} | %{ Get-View $_.ConfigManager.NetworkSystem} | %{ foreach($physnic in $_.NetworkInfo.Pnic){ $obj = "" | Select-Object Clustername,Hostname,VMNIC,PCI,MAC,DVS,vSwitch,CDP_Port,CDP_Device,CDP_Address $pnicInfo = $_.QueryNetworkHint($physnic.Device) foreach($hint in $pnicInfo){ $obj.Clustername = $VMhost.parent.name $obj.Hostname = $VMhost.name $obj.VMNIC = $physnic.Device $obj.PCI = $physnic.PCI $obj.MAC = $physnic.Mac if ($backing = ($VMhostProxySwitch | where {$_.Spec.Backing.PnicSpec.PnicDevice -eq $physnic.Device}).DvsName) { $obj.DVS = $backing } else { $obj.DVS = "-No Backing-" } if ($backing = ($VMhostSwitch | where {$_.Nic -eq $physnic.Device}).Name) { $obj.vSwitch = $backing } else { $obj.vSwitch = "-No Backing-" } if( $hint.ConnectedSwitchPort ) { $obj.CDP_Port = $hint.ConnectedSwitchPort.PortId $obj.CDP_Device = $hint.ConnectedSwitchPort.DevId $obj.CDP_Address = $hint.ConnectedSwitchPort.Address } else { $obj.CDP_Port = "-No Info-" $obj.CDP_Device = "-No Info-" $obj.CDP_Address = "-No Info-" } } $objReport += $obj } } $objReport } } Process { $MyView = @() if ($Validate -eq $True) { foreach ($myHost in $myHosts) { $CDP = Get-CDP $myHost $MyView += $CDP } $MyView | Sort Clustername, Hostname, VMNIC } } } |