首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将模块发送到Powershell Start-Job?

如何将模块发送到Powershell Start-Job?
EN

Stack Overflow用户
提问于 2017-11-08 22:21:35
回答 1查看 340关注 0票数 1

我向Start-Job发送了一个模块,但它似乎是空的。

为什么不用我的start方法填充它呢?

代码语言:javascript
复制
$m = New-Module -ScriptBlock{
        function start(){
            "started"
        };
    } -AsCustomObject

$m.start()

Start-Job -ScriptBlock{
    $module = $args[0]
    "<argsO:$module>"

} -ArgumentList $m

我运行上面的代码,然后:

代码语言:javascript
复制
PS C:\temp> job 510 | Receive-Job -Keep

要获得以下信息:

代码语言:javascript
复制
<argsO:>

遗憾的是,$module似乎是空的。

EN

回答 1

Stack Overflow用户

发布于 2017-11-08 22:50:31

您的$module变量正在被填充,它不会产生任何输出。您可以通过将$module | gm放入Start-Job中进行检查,您将看到它是一个PSCustomObject

代码语言:javascript
复制
Start-Job -ScriptBlock{
    $module = $args[0]
    $module | gm

} -ArgumentList $m

Get-Job | Wait-Job | Receive-Job

不幸的是,您尝试做的事情不会成功,因为对象在作为参数传递时会被反序列化,因此它会丢失其方法,因此尝试在作业中调用.start()将返回:

Deserialized.System.Management.Automation.PSCustomObject不包含名为“start”的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47182144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档