2016-03-15 41 views
0

希望快速和容易的在这里......出口CSV错误 - 空管元素是不允许

我有以下脚本来检查特定的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 
} 

我已经在末尾添加的出口CSV命令像的细节ID被放入一个CSV,我可以利用电子邮件(会后尝试脚本的电子邮件部分)

我不能得到export-csv选项来创建csv文件,因为它带着一个错误说出

空管件是不允许的,在C:\脚本\ checkvlan.ps1:2 char84

char84是在管道出口CSV

有谁能够告诉我在开始之前什么我做错了吗?

感谢

回答

0
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 
0

尝试:

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 } 
} 
+0

感谢为讨论转换为对象..我给了一个尝试,它与一个错误说 出口CSV回来了:一个参数不能在c:\ scripts \ checkvlan.ps1:3 char:79 –

+0

找到匹配参数名'append'--append无法识别? 然后尝试遵循以下行: {$ vm.name | convertto-csv -NoTypeInformation >> c:\ scripts \ vlans.csv} – restless1987

+0

确定尝试过这一行,它创建了一个csv文件,其中包含一些txt ..但没有服务器名称..它全部是 长度15 长度10 长度9 等等...... 48行... –