#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. Спасибо, за информацию, я пройдусь по удаленным переменным и попытаюсь их использовать,.