我正在尝试使用作业和Add-Jobtracker
矩阵创建响应式表单。
我遇到的问题是当我尝试在作业中调用变量时。我使用了-Argumentlist
参数,但是它始终为Null,并且我确定我使用它的方式是错误的,请您指导一下我吗?
这只是一个例子,因为我的原始脚本稍微复杂一点,下面的脚本只会将2个变量中的文本写入文本框。我已经在作业脚本的内部和外部创建了相同的内容,并在其中使用了参数列表和参数,但无法正常工作。
$Var1 = "sdaasdsadsa"
$Var2 = "asdasdsadsadsa"
$JobScript = {
Param($Var1, $Var2)
Write-Host $Var1, $Var2
}
$UpdateScript = {
Param($Job)
$texbox.Text = 'Working...'
}
$CompletedScript = {
Param($Job)
$results = Receive-Job -Job $Job
$textbox.Text = $results
}
Add-JobTracker -Name "test" -JobScript $JobScript -UpdateScript $UpdateScript -CompletedScript $CompletedScript -ArgumentList $var1, $Var2
这时它什么也没做,我有另一种代码,但是比这更长,并且我不想打扰很多人。
答案 0 :(得分:0)
作业与脚本的其余部分在不同的范围内运行,并且在该范围内未定义变量,因此未定义$null
。
要在作业中调用变量,请使用$Using:Varname
语法。例如:
$Test = "TEST!"
$null = Start-Job {
$Test
}
$Job = Get-Job
Start-Sleep -Seconds 2
Receive-Job -Job $Job
完全没有任何输出,但是:
$Test = "TEST!"
$null = Start-Job {
$Using:Test
}
$Job = Get-Job
Start-Sleep -Seconds 2
Receive-Job -Job $Job
收益:
TEST!
在此处了解有关远程变量的更多信息:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_remote_variables?view=powershell-6