none
Powershell: Как передать объект в фоновое задание? RRS feed

  • Вопрос


  • Упрощенно текст скрипта примерно такой:
    $a = 12
    Start-job -Name "JOB"  -ScriptBlock {Write-Host $a + "3"}
    Wait-Job -Name "JOB"
    Receive-Job -Name "JOB"

    Пробовал и так:
    $a = 12
    Start-job -Name "JOB" -InputObject $a -ScriptBlock {Write-Host $a + "3"}
    Wait-Job -Name "JOB"
    Receive-Job -Name "JOB"

    Результат receive-job возвращает строку "+ 3", т.е явно не понимает что такое $a и чему равно. Как же все-таки правильно передовать объекты в фоновые задания?

    23 ноября 2009 г. 14:48

Ответы

  • Методом многочисленных эксперементов получилось. Передать объект фоновому заданию нужно выполнить следующее:

    $b = 12
    Start-job -Name "JOB"  -ArgumentList $b -ScriptBlock {param($a) Write-Host $a + "3"}
    Wait-Job -Name "JOB"
    Receive-Job -Name "JOB"

    Логично! Но не сразу догадался.

    23 ноября 2009 г. 16:28