如何使用参数列表将参数添加到作业中

问题描述 投票:0回答:1

我正在尝试使用作业和Add-Jobtracker矩阵创建响应式表单。我遇到的问题是当我尝试在作业中调用变量时。我使用了-Argumentlist参数,但它总是空的,我确定我使用它的方式是错误的,你能指导我吗?

这只是一个例子,因为我的原始脚本有点复杂,下面的脚本只会将文本从2个变量写入文本框。我在jobscript中创建了相同的外部和内部,在其中使用了参数列表和参数,但它不起作用。

$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

在这一点上它没有做任何事情,我有一个替代代码,但它比这个更长,我不想打扰你们很多行。

powershell jobs
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.