首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管道连接到Start-RSJob

管道连接到Start-RSJob
EN

Stack Overflow用户
提问于 2019-04-16 20:52:36
回答 1查看 518关注 0票数 0

我定义了一个包含1000个对象的变量($P),还有一个函数将接受管道输入,并向变量中的每个对象添加一堆内容(Add-Data.AccountDetail)。我希望PoshRSJob能让我拆分传入的对象,并并行地向其添加内容,而不是将这些内容逐个添加到管道中。即取5批200,然后并行处理每一批的相加。

我不是一个天生的程序员,但似乎可以应付过去,所以我感谢您的耐心和帮助,如果这一点不清楚。

代码语言:javascript
复制
$P = Get-PositionalData -AccountName T2000

$P | Start-RSJob -Name AccountDetail -Throttle 5 -ScriptBlock {
 $_ | Add-Data.AccountDetail

}

Get-RSJob | Receive-RSJob

我得到了以下内容,但Receive-RSJob中似乎没有任何内容。我在这里肯定误解了一些基本的东西!

代码语言:javascript
复制
Error          : 
Verbose        : 
Debug          : 
Warning        : 
Progress       : 
HasMoreData    : True
HasErrors      : False
Output         : 
RunspacePoolID : fc217600-123f-4d73-9bcc-d1df6f87f6d8
Completed      : False
Batch          : fc217600-123f-4d73-9bcc-d1df6f87f6d8

Name           : AccountDetail
ID             : 169
State          : NotStarted
InputObject    : @{AccounId=T2000}
InstanceID     : 3ba5eeed-d48f-4712-8d32-08f5b12a46a3
Handle         : System.Management.Automation.PowerShellAsyncResult
Runspace       : 
InnerJob       : System.Management.Automation.PowerShell
Finished       : System.Threading.ManualResetEvent
Command        : 

                 $_| Add-Data.AccountDetail
EN

回答 1

Stack Overflow用户

发布于 2019-04-16 22:54:41

$P有1000个对象时,我不知道它实际包含什么,所以我只能假设。您只需稍微调整一下Start-RSJob命令作业即可。

代码语言:javascript
复制
$P | Start-RSJob -Name {$_.AccounId} -Throttle 5 -ScriptBlock {
 $_ | Add-Data.AccountDetail
} -FunctionsToLoad "Add-Data.AccountDetail"

-Name参数是作业的名称。您需要为要运行的每个作业指定一个新名称。我将您的值替换为{$_.AccounId},因为我假设$P中的每个对象都包含基于您的示例的属性AccounId。你不一定要这样做,但我只是提供了一种方法来为每个作业增加一些独特性。这个参数的好处是它知道当前的管道对象($_)。

您正在使用一个名为Add-Data.AccountDetail的自定义函数。传递给Start-RSJob的scriptblock可能对该函数一无所知。您可以使用FunctionsToLoad参数加载您的函数。我使用的语法假设函数已经加载到您当前的作用域中。

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

https://stackoverflow.com/questions/55708633

复制
相关文章

相似问题

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