I needed to turn on CDP on all hosts very quickly based on a request from out network guys
I could do all 30 hosts manually but decided to try in powershell. After few minutes of google around I found this site
I made a quick, and again very dirty, Powershell Script to turn on CDP on all hosts based on the code on that site. Because of the identical setup I could do it this way.
Again. As wit all powershell scripts: this is going to hurt the eyes of a real PS scripter but hope it is os some use for someone..
function set-vSwitchLinkDiscovery { Param ( #Switch to enable vSwitch Discovery On [Parameter(Mandatory=$true,ValueFromPipeline=$true)] [string] $vSwitchName = "vSwitch0", #Host on which the vSwitch Resides [Parameter(Mandatory=$true,HelpMessage="Need Host Name to connect with")] [string] $VMHost = "NoHostPassed" ) #Param PROCESS{ #Variables $linkProtocol = "cdp" $linkOperation = "both" #Get the specification for the vSwitch $networkview = (get-vmhostnetwork -vmhost $VMHost | get-view) $vSwitchSpec = ($networkView.NetworkConfig.vSwitch | Where {$_.Name -eq $vSwitchName}).Spec #Set Protocol Type and Operation $vSwitchSpec.Bridge.LinkDiscoveryProtocolConfig.protocol = $linkProtocol $vSwitchSpec.Bridge.LinkDiscoveryProtocolConfig.operation = $linkOperation #Commit Changes $networkview.updateVirtualSwitch($vSwitchName,$vSwitchSpec) "Updated " + $VMHost + "'s virtual switch " + $vSwitchName + " to do CDP" } } cls # Set the VI Server and Filename before running Connect-VIServer "vcenter5" Write "Gathering VMHost objects" # enkel zuela via : $vmhosts = Get-VMHost | Sort Name | Where-Object {$_.Name -match "zuela" } | Get-View $vmhosts = Get-VMHost | Sort Name | Get-View $MyCol = @() foreach ($vmhost in $vmhosts){ Write "****************" $ESXHost = $vmhost.Name Write "Collating information for $ESXHost" set-vSwitchLinkDiscovery -vmhost $ESXHost -vSwitchName "vSwitch0" set-vSwitchLinkDiscovery -vmhost $ESXHost -vSwitchName "vSwitch1" set-vSwitchLinkDiscovery -vmhost $ESXHost -vSwitchName "vSwitch2" Write "****************" }
Hi Erik,
Perhaps this can help you as well.
http://technodrone.blogspot.com/2012/02/how-to-set-cdp-on-vswitchthe-powercli.html
I used the Get-ESXcli cmdlet – I found that a lot easier.