Не получает вывод от получения работы
Переменная $var пуста, когда я запускаю этот скрипт:
function FOO { write-output "HEY" }
$var = Start-Job -ScriptBlock { ${function:FOO} } | Wait-Job | Receive-Job
$var
Как я могу получить вывод от receive-job?
1 ответ
Решение
Start-Job
порождает новый экземпляр PowerShell в фоновом режиме и поэтому не знает о вашей функции FOO
который определен в вашем начальном экземпляре
Есть дополнительный параметр InitializationScript
который вызывается заранее, выполняя ваш блок скрипта в новом экземпляре, который вы можете использовать для определения FOO
вот так
$var = Start-Job -InitializationScript { function FOO { write-output "HEY" } } -ScriptBlock ...
Кстати: я думаю, что вы хотите выполнить функцию вместо того, чтобы получить сам объект функции, так что вы можете изменить свой блок скрипта на этот
-ScriptBlock { FOO }