LucD
Leadership
Leadership

Got it, try like this

$dvSwName = 'dvSw1'

$mirrorSessionName = 'Test'

$vmName = 'VM2'

$Ingress = $false 

$Egress = $true 

$dvSw = Get-VDSwitch -Name $dvSwName

$vm = Get-VM -Name $vmName

$vmNic = $vm.ExtensionData.Config.Hardware.Device | 

    where{$_.Backing -is [VMware.Vim.VirtualEthernetCardDistributedVirtualPortBackingInfo]

$spec = New-Object VMware.Vim.VMwareDVSConfigSpec

foreach($mirrorSession in $dvSw.ExtensionData.Config.VspanSession){

    if($mirrorSession.Name -eq $mirrorSessionName){

        $vspan = New-Object VMware.Vim.VMwareDVSVspanConfigSpec

        $vspan.Operation = [VMware.Vim.ConfigSpecOperation]::edit

        $vmInRc = $mirrorSession.SourcePortReceived | where{$_.PortKey -contains $vmNic.Backing.Port.PortKey} 

        if($Ingress -and $vmInRc){ 

            $mirrorSession.SourcePortReceived.PortKey = $mirrorSession.SourcePortReceived.PortKey |

                where{$_ -ne $vmNic.Backing.Port.PortKey}

        } 

        $vmInTx = $mirrorSession.SourcePortTRansmitted | where{$_.PortKey -contains $vmNic.Backing.Port.PortKey} 

        if($Egress -and $vmInTx){ 

            $mirrorSession.SourcePortTransmitted.PortKey = $mirrorSession.SourcePortTransmitted.PortKey |

                where{$_ -ne $vmNic.Backing.Port.PortKey}

        } 

        $vspan.VspanSession += $mirrorSession

        $spec.vspanConfigSpec += $vspan

    }

}

$spec.ConfigVersion = $dvSw.ExtensionData.Config.ConfigVersion

$dvSw.ExtensionData.ReconfigureDvs($spec)


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

View solution in original post

Reply
0 Kudos