哦,我明白你在問什麼,你正在尋找一個ConvertTo-CliXml,類似於ConvertTo-Csv如何代替Export-Csv。乍一看,這聽起來像你試圖完全避開CliXml。
在這種情況下,有一個上PoshCode:ConvertTo-CliXmlConvertFrom-CliXml
這裏有一個完整副本,給你一個想法(我沒有檢查這個的正確性):
function ConvertTo-CliXml {
param(
[Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true)]
[ValidateNotNullOrEmpty()]
[PSObject[]]$InputObject
)
begin {
$type = [PSObject].Assembly.GetType('System.Management.Automation.Serializer')
$ctor = $type.GetConstructor('instance,nonpublic', $null, @([System.Xml.XmlWriter]), $null)
$sw = New-Object System.IO.StringWriter
$xw = New-Object System.Xml.XmlTextWriter $sw
$serializer = $ctor.Invoke($xw)
$method = $type.GetMethod('Serialize', 'nonpublic,instance', $null, [type[]]@([object]), $null)
$done = $type.GetMethod('Done', [System.Reflection.BindingFlags]'nonpublic,instance')
}
process {
try {
[void]$method.Invoke($serializer, $InputObject)
} catch {
Write-Warning "Could not serialize $($InputObject.GetType()): $_"
}
}
end {
[void]$done.Invoke($serializer, @())
$sw.ToString()
$xw.Close()
$sw.Dispose()
}
}
你讀過[對象序列化指令](http://blogs.msdn.com/b/powershell/archive/2007/05/01/object-serialization-directives.aspx)和[如何將對象發送到遠程會話和從遠程會話發送](http:/ /blogs.msdn.com/b/powershell/archive/2010/01/07/how-objects-are-sent-to-and-from-remote-sessions.aspx)來自Jeffrey Snover。我不確定它是否給你提供瞭解決方案,但也許是一個線索。 – JPBlanc 2011-04-11 13:51:37
謝謝@JBBlanc。我讀過這些帖子,當他們告訴我發生了什麼事情時,我希望不必重新發明實施它的輪子。 – 2011-04-11 14:21:22
@Steve,你可以更具體一點關於你在嘗試什麼去完成? – 2011-04-11 16:01:10