在foreach循环中,我试图收集有关多个对象的信息,并将它们连接在一个XML文件中。
foreach($Task in $Tasks) {
$OutputObj = New-Object -TypeName PSobject
$OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer
# does not work, $s contains '#document'
$s = ConvertTo-XML -InputObject $OutputObj
Write-Host $s
# works as expected
$OutputObj | Export-CliXML $OutPath
}
ConvertTo-XML
我做错了什么?如何才能生成Export-CliXML
的输出?为了清楚起见,我想转换每个$outputobj
并将其附加到输出文件。
答案 0 :(得分:1)
试试这个:
($Tasks | ForEach-Object {
$OutputObj = New-Object -TypeName PSObject
$OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer
Write-Output $OutputObj
} | ConvertTo-XML -NoTypeInformation).Save($OutPath)
或者这个:
$combined = @()
foreach($Task in $Tasks) {
$OutputObj = New-Object -TypeName PSobject
$OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer
$combined += $OutputObj
}
$combined | Export-CliXML $OutPath
您希望看到什么结果?
要了解有关ConvertTo-XML的更多信息,请阅读文章“使用ConvertTo-XML Cmdlet装扮您的XML输出”http://technet.microsoft.com/en-us/library/ff730921.aspx
答案 1 :(得分:0)
而不是
$s = ConvertTo-XML -InputObject $OutputObj
尝试
$s = $OutputObj | ConvertTo-XML
我对ConvertTo-CSV有同样的问题。 -InputObject参数无法正常工作。但是将对象传递给ConvertTo-CSV可以按预期工作。