This script is based on a CDP version on VMware’s site. CDP is used by Cisco, but most other vendors use LLDP. The LLDPinfo object is setup differently from the CDP object. Hopefully this will save a lot of time clicking thru the GUI.
$vmh = Get-VMHost | sort
If ($vmh.State -eq "Connected")
{
Get-View $vmh.ID | `
% { $esxname = $_.Name; Get-View $_.ConfigManager.NetworkSystem} | `
% { foreach ($physnic in $_.NetworkInfo.Pnic) {
$pnicInfo = $_.QueryNetworkHint($physnic.Device)
foreach( $hint in $pnicInfo ){
# Write-Host $esxname $physnic.Device
if ( $hint.LLDPInfo ) {
$results = New-Object –TypeName PSObject
$results | Add-Member –MemberType NoteProperty –Name ESXHostName –Value $esxname
$results | Add-Member –MemberType NoteProperty –Name DeviceName –Value $physnic.Device
$results | Add-Member –MemberType NoteProperty –Name PortName –Value $hint.LldpInfo.Parameter[4].value
$results | Add-Member –MemberType NoteProperty –Name SwitchName –Value $hint.LldpInfo.Parameter[6].value
Write-Output $results
}
}
}
}
}
Subscribe to:
Post Comments (Atom)
By using this script we get the following message:
ReplyDeleteWARNING: The 'State' property of VMHost type is deprecated. Use the
'ConnectionState' property instead.
After changing $vmh.State to $vmh.ConnectionState we get the same output, but no error message. :)
Lars