首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Export

使用Export
EN

Stack Overflow用户
提问于 2017-10-29 06:55:49
回答 2查看 263关注 0票数 2

我有一些困难,使格式正确的我的脚本。我试图使用powercli与VMware一起,从vApp中提取主机名和IP信息,并将其导出到CSV。

到目前为止,我已经:

代码语言:javascript
复制
$vapp = Get-CIVApp -name name_of_vApp
$vms = $vapp.ExtensionData.Children.vm
$output = foreach ($vm in $vms) {$vm | select-object -Property Name;$vm.Section[2].NetworkConnection | select-object -Property IpAddress,ExternalIpAddress;} 
$output | export-csv -Path c:\temp\test.csv -NoTypeInformation

问题似乎是我给$output赋值的行。由于某些原因,它没有添加IP信息,即使这在函数之外工作,甚至在没有$vm.name的函数中也是如此。它只是给出了机器名,用等于服务器的IP地址数的空行分隔。

我的最终目标是有一个包含服务器名称、内部IP地址和外部IP地址的三列表。任何帮助都将不胜感激。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-29 07:27:22

我认为问题可能是因为您在每次迭代中输出两个对象而不是一个对象。当您将单个对象返回到管道时,PowerShell通常工作得最好。在这个实例中,您可以通过使用pscustomobject类型和一个属性哈希表来做到这一点。

我也认为使用ForEach-Object而不是ForEach是有意义的,因为这样您就可以将输出直接输送到Export-CSV

代码语言:javascript
复制
$vapp = Get-CIVApp -name name_of_vApp
$vms = $vapp.ExtensionData.Children.vm

$vms | ForEach-Object {
    [pscustomobject]@{
        Name = $_.name
        IpAddress = ($_.Section[2].NetworkConnection.IpAddress)
        ExternalIpAddress = ($_.Section[2].NetworkConnection.ExternalIpAddress)
    }
} | Export-CSV -Path c:\temp\test.csv -NoTypeInformation 

请注意,我不知道您收集IPAddress和ExternalIPAddress属性的方式在这里是否一定有效,并且目前没有地方测试这个部分。

票数 1
EN

Stack Overflow用户

发布于 2017-10-29 07:37:32

问题是,在第二个Select之后,您仍然使用(筛选的) $vm对象而不是$vm.secton[2],首先尝试使用$vm | Flatten-Object

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46997605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档