我向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:>遗憾的是,$module似乎是空的。
发布于 2017-11-08 22:50:31
您的$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不包含名为“start”的方法。
https://stackoverflow.com/questions/47182144
复制相似问题