Hey, its all good found the problem, i had it set to New-dvSwPVLAN rather than Set-dvSwPVLAN, Thanks again for all your help guys, really appreciate it. This will make it much easier for us to migrate to the vDS with PVLANS
function Get-dvSwitch{
param($dcName,$dvSwName)
$dcNetFolder = Get-View (Get-Datacenter $dcName | Get-View).NetworkFolder
$found = $null
foreach($net in $dcNetFolder.ChildEntity){
if($net.Type -eq "VmwareDistributedVirtualSwitch"){
$temp = Get-View $net
if($temp.Name -eq $dvSwName){
$found = $temp
}
}
}
$found
}
function Set-dvSwPVLAN{
param($dvSw, $primaryNr, [int[]] $secondaryNr, [string[]] $secondaryType)
$spec = New-Object VMware.Vim.VMwareDVSConfigSpec
# Primary
$pvlan = New-Object VMware.Vim.VMwareDVSPvlanConfigSpec
# Secondaries
for($i = 0;$i -lt $secondaryNr.Count; $i++){
$pvlan = New-Object VMware.Vim.VMwareDVSPvlanConfigSpec
$pvlan.operation = "add"
$pvlan.pvlanEntry = New-Object VMware.Vim.VMwareDVSPvlanMapEntry
$pvlan.pvlanEntry.primaryVlanId = $primaryNr
$pvlan.pvlanEntry.pvlanType = $secondaryType[$i].ToLower()
$pvlan.pvlanEntry.secondaryVlanId = $secondaryNr[$i]
$spec.PvlanConfigSpec += $pvlan
}
$dvSw.UpdateViewData()
$spec.ConfigVersion = $dvSw.Config.ConfigVersion
$taskMoRef = $dvSw.ReconfigureDvs_Task($spec)
$task = Get-View $taskMoRef
while("running","queued" -contains $task.Info.State){
$task.UpdateViewData("Info")
}
}
$datacenterName = "DC1"
$dvSwitchName = "DVS1"
$dvSw = Get-dvSwitch $datacenterName $dvSwitchName
Set-dvSwPVLAN $dvSw 900 918 "community"
Set-dvSwPVLAN $dvSw 900 916 "community"
Set-dvSwPVLAN $dvSw 900 920 "community"