LucD
Leadership
Leadership

To use the Guest property you have to have an object as returned by Get-VM,
Try like this

$VMS = Get-Content C:\temp\servers2.txt

Get-VM -Name $vms -PipelineVariable vm |
ForEach-Object -Process {
  Get-VirtualPortGroup -VM $vm |
  Select-Object @{n = "VMName"; e = { $vm } }, Name,
  @{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 | ForEach-Object { "$($_.Start)-$($_.End)" }))
          } else {
            $_.ExtensionData.Config.DefaultPortConfig.Vlan.VlanId
          }
        }
      } else { $_.VlanId } }
  },
  @{N = 'MAC'; E = { $vm.Guest.Nics.Macaddress -join '|' } }
}


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