export-csv 错误 - 不允许使用空管道元素

export-csv error - an empty pipe element is not allowed

希望这里有一个快速简单的...

我有以下脚本来检查特定的 vlan ID,然后向我显示正在使用该 ID 的虚拟机

foreach($vm in (get-vm)){
if (Get-NetworkAdapter -vm $vm.name |?{$_.NetworkName -eq "vlan13_VM"}){$vm.name} | export-csv -path c:\scripts\vlans.csv -NoTypeInformation
} 

我在最后添加了 export-csv 命令作为 id,就像要放入 csv 中的详细信息,然后我可以通过电子邮件发送(之后将尝试编写电子邮件部分的脚本)

我无法获得用于创建 csv 文件的 export-csv 选项,因为它返回一个错误

c:\scripts\checkvlan.ps1:2 char84

不允许空管道元素

char84 是管道在 export-csv 之前开始的地方

谁能告诉我我做错了什么?

谢谢

尝试:

foreach($vm in (get-vm)){
  if (Get-NetworkAdapter -vm $vm.name |?{$_.NetworkName -eq "vlan13_VM"})
  {$vm.name | export-csv -path c:\scripts\vlans.csv -NoTypeInformation -append }
} 
Get-VM | where { (Get-NetworkAdapter -vm $_.name).NetworkName -eq "vlan13_VM" } | select Name | export-csv -path c:\scripts\vlans.csv -NoTypeInformation

或者如果您想保留 foreach 结构,

...使用 Out-File 而不是 Export-CSV

foreach ( $vm in (Get-VM) ) { if ( (Get-NetworkAdapter -vm $vm.name).NetworkName -eq "vlan13_VM" ) {$vm.name | out-file c:\scripts\vlans.csv -Append} }

...或将列表收集到哈希表中并转换为讨论的对象 here

$out = @()
foreach ( $vm in (Get-VM) ) { if ( (Get-NetworkAdapter -vm $vm.name).NetworkName -eq "vlan13_VM" ) {$out += $vm.name} }
$out | Select-Object @{Name='Name';Expression={$_}} | Export-CSV -path c:\scripts\vlans.csv -NoTypeInformation