2014-01-24 75 views
0

在foreach循环中,我试图收集有关多个对象的信息,并将它们全部连接在一个XML文件中。ConvertTo-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

添加“-As Stream”有帮助,但每个$ s都是一个离散的xml文档。 – Number8

回答

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阅读文章 “装扮你的XML输出与的ConvertTo-XML Cmdlet的” http://technet.microsoft.com/en-us/library/ff730921.aspx

0

而不是

$s = ConvertTo-XML -InputObject $OutputObj 

尝试

$s = $OutputObj | ConvertTo-XML 

我有与ConvertTo-CSV相同的问题。 -InputObject参数不能按我的预期工作。但按照预期将对象传送到ConvertTo-CSV。