我似乎无法弄清楚为什么传递给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。
我在这里缺少什么?如何保留输入数据?
答案 0 :(得分:1)
好的,我发现了这个问题。 $ input对象作为PilelineReader传递,我假设在作业中调用时是ReadToEnd。当我将$ input分配给变量时,我正在发送PipeLineReader而不是它的值。为了解决这个问题,我使用了这个:
[string]$newData = $input
这样可以防止在访问对象时发生读取操作。