Как добавить параметры в задание, используя список аргументов - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь создать адаптивную форму, используя задания и матрицу 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

На данный момент он ничего не делает, у меня есть альтернативный код, но он длиннее этого, и я не хотел беспокоить вас, ребята, множеством строк.

1 Ответ

0 голосов
/ 04 апреля 2019

Задание выполняется в другой области действия, чем остальная часть вашего сценария, и в этой области переменные не определены и, следовательно, $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

...