That requires some changes to your code.
$VMS = Get-Content C:\temp\servers2.txt
Get-VM -Name $vms -PipelineVariable vm |
ForEach-Object -Process {
Get-VirtualPortGroup -VM $vm -PipelineVariable pg |
Select-Object @{n = "VMName"; e = { $vm } }, Name,
@{N = 'VlanId'; E = {
if ($pg -is [VMware.VimAutomation.ViCore.Impl.V1.Host.Networking.DistributedPortGroupImpl]) {
if ($pg.ExtensionData.Config.DefaultPortConfig.Vlan -is [VMware.Vim.VmwareDistributedVirtualSwitchPvlanSpec]) {
$pg.ExtensionData.Config.DefaultPortConfig.Vlan.PvlanId
} elseif ($pg.ExtensionData.Config.DefaultPortConfig.Vlan -is [VMware.Vim.VmwareDistributedVirtualSwitchVlanSpec]) {
if ($pg.ExtensionData.Config.DefaultPortConfig.Vlan.VlanId -is [VMware.Vim.NumericRange[]]) {
[string]::Join(',', ($_.ExtensionData.Config.DefaultPortConfig.Vlan.VlanId | ForEach-Object { "$($_.Start)-$($_.End)" }))
} else {
$pg.ExtensionData.Config.DefaultPortConfig.Vlan.VlanId
}
}
} else { $pg.VlanId } }
},
@{N = 'MAC'; E = { ($vm.Guest.Nics | where{$_.NetworkName -eq $pg.Name}).Macaddress -join '|' } }
}
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference