在Windows XP x64(我假设win2k3)powershell 2.0上,将pscustomobjects的arraylist传递给start-job作为argumentlist参数传递对象,但是scriptproperties只是从对象中消失(由get-member确认)。注意pscustomobject的属性确实返回正常
任何人都知道为什么?和/或有解决方案来解决问题?
$ dbs是具有各种noteproperties和scriptproperties的pscustomobjects的arraylist。
所有脚本属性一旦传入start-job就会消失,而note属性工作正常。
以下在开始作业之外执行
$dbs | get-member
返回
ConnectionString NoteProperty System.String ConnectionString=server=...
DbType NoteProperty System.String DbType=Staging
CreateBackup ScriptMethod System.Object CreateBackup ();
GetBackup ScriptMethod System.Object GetBackup();
...
while
start-job -name $server -argumentlist $dbs,$server -scriptblock {
param($dbs, $server)
$dbs | get-member
}
退货
bool Equals(System.Object obj)
int GetHashCode()
type GetType()
string ToString()
System.String ConnectionString=server=...
System.String DbType=Staging
答案 0 :(得分:1)
后台作业使用远程处理。远程处理将对象序列化,然后将它们发送到目标运行空间,在那里对它们进行反序列化。对象序列化时,对象方法不包含在序列化对象中。
答案 1 :(得分:1)
看看Custom PowerShell Host and Converting PSObject back to base type我前一段时间的回答。情况也是如此。