Как добавить параметры в задание, используя список аргументов

#powershell #jobs

#powershell #Вакансии

Вопрос:

Я пытаюсь создать адаптивную форму, используя задания и Add-Jobtracker матрицу. Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь вызвать переменные внутри задания. Я использовал -Argumentlist параметр, но он всегда равен Null, и я уверен, что способ, которым я его использую, неправильный, не могли бы вы, пожалуйста, подсказать мне это?

Это всего лишь пример, поскольку мой оригинальный сценарий немного сложнее, приведенный ниже скрипт будет записывать текст только из 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
  

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

Ответ №1:

Задание выполняется в области, отличной от остальной части вашего скрипта, и в этой области переменные не определены, и поэтому $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://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_remote_variables?view=powershell-6

Комментарии:

1. Спасибо, за информацию, я пройдусь по удаленным переменным и попытаюсь их использовать,.