VMware Cloud Community
TheVMinator
Expert
Expert
Jump to solution

Listing vswitch info

how can I list the names of all port groups on my vswitches and vdses and the vlans that they are tagged with? 

Thanks!

1 Solution

Accepted Solutions
LucD
Leadership
Leadership
Jump to solution

Try like this

Get-VirtualPortGroup |

Select Name,

    @{N='Host';E={

        if($_ -is [VMware.VimAutomation.ViCore.Impl.V1.Host.Networking.DistributedPortGroupImpl]){

            [string]::Join(',',(Get-View -Id $_.ExtensionData.Host -Property Name | %{$_.Name}))

        }

        else{

            Get-View -Id $_.VMHostId | Select -ExpandProperty Name

        }}},

    @{N='Type';E={

        if($_ -is [VMware.VimAutomation.ViCore.Impl.V1.Host.Networking.DistributedPortGroupImpl]){

            'VDS'

        }

        else{'VSS'}}},

    @{N='VlanId';E={

        if($_ -is [VMware.VimAutomation.ViCore.Impl.V1.Host.Networking.DistributedPortGroupImpl]){

            if($_.ExtensionData.Config.DefaultPortConfig.Vlan -is [VMware.Vim.VmwareDistributedVirtualSwitchPvlanSpec]){

                $_.ExtensionData.Config.DefaultPortConfig.Vlan.PvlanId

            }

            elseif($_.ExtensionData.Config.DefaultPortConfig.Vlan -is [VMware.Vim.VmwareDistributedVirtualSwitchVlanSpec]){

                if($_.ExtensionData.Config.DefaultPortConfig.Vlan.VlanId -is [VMware.Vim.NumericRange[]]){

                    [string]::Join(',',($_.ExtensionData.Config.DefaultPortConfig.Vlan.VlanId | %{"$($_.Start)-$($_.End)"}))

                }

                else{

                    $_.ExtensionData.Config.DefaultPortConfig.Vlan.VlanId

                }

            }

        }

        else{$_.VlanId}}}


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

View solution in original post

5 Replies
LucD
Leadership
Leadership
Jump to solution

Try like this

Get-VirtualPortGroup |

Select Name,

    @{N='Type';E={

        if($_ -is [VMware.VimAutomation.ViCore.Impl.V1.Host.Networking.DistributedPortGroupImpl]){

            'VDS'

        }

        else{'VSS'}}},

    @{N='VlanId';E={

        if($_ -is [VMware.VimAutomation.ViCore.Impl.V1.Host.Networking.DistributedPortGroupImpl]){

            if($_.ExtensionData.Config.DefaultPortConfig.Vlan -is [VMware.Vim.VmwareDistributedVirtualSwitchPvlanSpec]){

                $_.ExtensionData.Config.DefaultPortConfig.Vlan.PvlanId

            }

            elseif($_.ExtensionData.Config.DefaultPortConfig.Vlan -is [VMware.Vim.VmwareDistributedVirtualSwitchVlanSpec]){

                if($_.ExtensionData.Config.DefaultPortConfig.Vlan.VlanId -is [VMware.Vim.NumericRange[]]){

                    [string]::Join(',',($_.ExtensionData.Config.DefaultPortConfig.Vlan.VlanId | %{"$($_.Start)-$($_.End)"}))

                }

                else{

                    $_.ExtensionData.Config.DefaultPortConfig.Vlan.VlanId

                }

            }

        }

        else{$_.VlanId}}}


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

AlbertWT
Virtuoso
Virtuoso
Jump to solution

Thanks Luc for the sharing here.

is it possible to put the ESXi / VMHost before the Name ?

I've tried to add the Hostname column below but somehow it doesn't appears.

Get-VirtualPortGroup |

Select Host, Name,

    @{N='Type';E={........

/* Please feel free to provide any comments or input you may have. */
Reply
0 Kudos
LucD
Leadership
Leadership
Jump to solution

Try like this

Get-VirtualPortGroup |

Select Name,

    @{N='Host';E={

        if($_ -is [VMware.VimAutomation.ViCore.Impl.V1.Host.Networking.DistributedPortGroupImpl]){

            [string]::Join(',',(Get-View -Id $_.ExtensionData.Host -Property Name | %{$_.Name}))

        }

        else{

            Get-View -Id $_.VMHostId | Select -ExpandProperty Name

        }}},

    @{N='Type';E={

        if($_ -is [VMware.VimAutomation.ViCore.Impl.V1.Host.Networking.DistributedPortGroupImpl]){

            'VDS'

        }

        else{'VSS'}}},

    @{N='VlanId';E={

        if($_ -is [VMware.VimAutomation.ViCore.Impl.V1.Host.Networking.DistributedPortGroupImpl]){

            if($_.ExtensionData.Config.DefaultPortConfig.Vlan -is [VMware.Vim.VmwareDistributedVirtualSwitchPvlanSpec]){

                $_.ExtensionData.Config.DefaultPortConfig.Vlan.PvlanId

            }

            elseif($_.ExtensionData.Config.DefaultPortConfig.Vlan -is [VMware.Vim.VmwareDistributedVirtualSwitchVlanSpec]){

                if($_.ExtensionData.Config.DefaultPortConfig.Vlan.VlanId -is [VMware.Vim.NumericRange[]]){

                    [string]::Join(',',($_.ExtensionData.Config.DefaultPortConfig.Vlan.VlanId | %{"$($_.Start)-$($_.End)"}))

                }

                else{

                    $_.ExtensionData.Config.DefaultPortConfig.Vlan.VlanId

                }

            }

        }

        else{$_.VlanId}}}


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

AlbertWT
Virtuoso
Virtuoso
Jump to solution

many thanks Luc,

You have made this script even more useful.

Cheers !

/* Please feel free to provide any comments or input you may have. */
Reply
0 Kudos
TheVMinator
Expert
Expert
Jump to solution


Thanks again Luc

Reply
0 Kudos