【发布时间】:2015-09-29 21:46:21
【问题描述】:
我正在寻找使用 Invoke-Command 将 PsObject 传递给远程函数的最佳或正确方法。 ConvertTo-Xml 非常适合序列化,但没有内置的反向 cmdlet。我在网上找到的解决方案都是针对特定内容的。
我实现了以下功能,这些功能适用于我测试过的少数对象,但看起来相当 hacky。这是要咬我吗?有没有更好但仍然简单的解决方案?
function Get-TmpFileName () {...}
function Serialize-PsObject($obj) {
$tmpFile = Get-TmpFileName
Export-Clixml -InputObject $obj -Path $tmpFile
$serializedObj = Get-Content $tmpFile
Remove-Item $tmpFile
$serializedObj
}
function Deserialize-PsObject($obj) {
$tmpFile = Get-TmpFileName
$obj > $tmpFile
$deserializedObj = Import-Clixml $tmpFile
Remove-Item $tmpFile
$deserializedObj
}
【问题讨论】:
-
如果你有 PSv3+,你可以使用 $Using.在 PowerShell 3.0 中,以 $using: 为前缀的变量会被自动识别为本地变量并发送到远程计算机。
标签: powershell powershell-remoting