如何使用PowerCLI Get-NetworkAdapter在一个脚本块内

我正在尝试使用Invoke-Async来返回符合特定条件的虚拟机的子集。 我有一些工作代码和一些非工作代码。 在GuestFullName上匹配工作,但在NetworkName上匹配不。

加工:

$sb = [scriptblock] { param($vm) if($vm.ExtensionData.Guest.GuestFullName -match "Microsoft") {return $vm } } $rtn = Invoke-Async -Set $powered_on -SetParam vm -ScriptBlock $sb Write-Host $rtn 

上面的代码返回一个30个Windows虚拟机的列表。

健康检查(也工作):

 foreach( $vm in $powered_on ) { if(Get-NetworkAdapter -VM $vm | where { $_.NetworkName -eq "LAN" }) {Write-Host $vm } } 

尝试使用Invoke-Async运行,不工作:

 $sb = [scriptblock] { param($vm) if(Get-NetworkAdapter -VM $vm |? { $_.NetworkName -eq "LAN" }) { return $vm } } $rtn = Invoke-Async -Set $powered_on -SetParam vm -ScriptBlock $sb Write-Host $rtn 

这没有返回。 我也试着检查长度,但也没有工作:

 $sb = [scriptblock] { param($vm) if((Get-NetworkAdapter -VM $vm |? { $_.NetworkName -eq "LAN" }).Length -gt 0) { return $vm.Name } } 

当where-clause标准匹配时,为了让scriptblock返回$vm ,我需要改变什么?