powershell线程帮助使用poshrsjob模块

时间:2016-01-06 17:53:31

标签: multithreading powershell start-job

我正在尝试多线程并遇到这个问题: http://learn-powershell.net/2015/03/31/introducing-poshrsjob-as-an-alternative-to-powershell-jobs/

尝试使用但却遇到错误而无法访问我需要的数据。让我解释。我在这里有一个非常简单的例子:

@('12.34.56.78')|Start-RSJob -Name {"TEST_$($_)"} -ScriptBlock {
    Param($Computername)
    Test-Connection -ComputerName $Computername -Quiet
}

get-RSJob|Receive-RSJob

这实际上是错误,说computername为null。我在这里放置的任何类型的命令都出现相同的错误,称computername为null。如何摆脱这个以及如何访问应该返回的布尔值。 这会在命令行中返回true或false,但在此脚本中运行时无法访问此值。

最终需要采用一系列IP,我需要访问每台机器返回的所有值。我不必使用这个豪华模块,但需要线程并认为这是一个不错的选择。任何建议都值得赞赏。

1 个答案:

答案 0 :(得分:1)

看起来你在我的模块中发现了一个错误,它使用Param()来管理传入数据。幸运的是,您可以通过在scriptblock中使用$_来解决这个问题。

@('12.34.56.78')|Start-RSJob -Name {"TEST_$($_)"} -ScriptBlock {
    Test-Connection -ComputerName $_ -Quiet
}

get-RSJob|Receive-RSJob

话虽这么说,我肯定需要踩那个错误。

编辑:返回$ False的问题是Receive-RSJob中的错误($ True返回正常)。我也会解决这个问题。