2014-01-24 73 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。