将输入对象传递给起始作业文件

时间:2013-01-31 04:12:17

标签: powershell powershell-v2.0

我似乎无法弄清楚为什么传递给start-job的输入会消失。我在一个脚本中有这个代码:

$data = "some test string data"
Start-Job -FilePath ".\Tasks.ps1" -InputObject $data

tasks.ps1脚本中,我得到$input对象的空值,除非我立即调用它,但在执行此操作后消失:

$input #displays the data
$input #null

我已经尝试立即将其分配给另一个变量($newvalue = $input),但该变量的值也显示为null。

我在这里缺少什么?如何保留输入数据?

1 个答案:

答案 0 :(得分:1)

好的,我发现了这个问题。 $ input对象作为PilelineReader传递,我假设在作业中调用时是ReadToEnd。当我将$ input分配给变量时,我正在发送PipeLineReader而不是它的值。为了解决这个问题,我使用了这个:

[string]$newData = $input

这样可以防止在访问对象时发生读取操作。