Well, that would work perfectly in case where we would have only one network. In this case I have many different virtual machines, with many network adapters. But maybe I am wrong. I finally tried something like this.
foreach($vm in Get-View -ViewType VirtualMachine){
if($vm.Network.Type -eq "Network"){
if($_.Network){$tmpNetwork = $_.Network}else{$tmpNetwork = "!NN!"};
}elseif($vm.Network.Type -eq "DistributedVirtualPortgroup"){
$tmpDeviceConfigId = $_.DeviceConfigId;
$tmpdvSpgKey = ($vm.Config.Hardware.Device | ?{$_.Key -eq $tmpDeviceConfigId}).Backing.Port.PortgroupKey;
$tmpNetwork = (Get-View -Id ($vm.Network | ?{$_.Value -eq $tmpdvSpgKey})).Name;
}
}
When VM uses standard vSwitch it has $_.Guest.Net.Network filled but it has empty Backing.Port.PortgroupKey;
When VM uses distributed vSwitch it has $_.Guest.net.Network empty, but it has Backing.Port.PortgroupKey and I am able to use it with Get-View -Id $vm.Network;
Any ideas if I can make it another way?