我向Start-Job
发送了一个模块,但它似乎是空的
为什么不填充我的start
方法?
$m = New-Module -ScriptBlock{
function start(){
"started"
};
} -AsCustomObject
$m.start()
Start-Job -ScriptBlock{
$module = $args[0]
"<argsO:$module>"
} -ArgumentList $m
我执行上述操作然后:
PS C:\temp> job 510 | Receive-Job -Keep
得到:
<argsO:>
唉,$模块似乎是空的。
答案 0 :(得分:1)
您的$module
变量正在填充,它不会产生任何输出。您可以将$module | gm
放在Start-Job
内进行检查,您会看到它是PSCustomObject
:
Start-Job -ScriptBlock{
$module = $args[0]
$module | gm
} -ArgumentList $m
Get-Job | Wait-Job | Receive-Job
不幸的是,您尝试做的事情不会起作用,因为当对象作为参数传递时会被反序列化,因此它会丢失其方法,因此尝试在其中调用.start()
工作回报:
[Deserialized.System.Management.Automation.PSCustomObject]没有 包含名为&#39; start&#39;。
的方法