Как передать скрипт-блок как один из параметров в start-job

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

Он отлично работает, когда я передаю блок скрипта локальной функции, но не через start-job

Следующий синтаксис работает:

function LocalFunction
{
    param (
        [parameter(Mandatory=$true)]
        [ScriptBlock]$ScriptBlock
    )

    &$ScriptBlock | % { echo "got $_" }
}

LocalFunction -ScriptBlock { echo "hello" }

Это выводит "привет" как и ожидалось.

Но следующее терпит неудачу:

$job = start-job -argumentlist { echo "hello" } -scriptblock {
    param (
        [parameter(Mandatory=$true)]
        [ScriptBlock]$ScriptBlock
    )
    &$ScriptBlock | % { echo "got $_" }
}
start-sleep -s 1
receive-job $job

Возвращаемая ошибка:

Receive-Job : Cannot process argument transformation on parameter 'ScriptBlock'. Cannot convert the " echo "hello" " value of type "System.String" to type "System.Management.Automation.ScriptBlock".

Поэтому, если я правильно читаю ошибку, получается, что -argumentlist каким-то образом форсирует свои аргументы в строки.

Любой гуру powershell знает, как заставить этот синтаксис работать?

Заранее спасибо,

Бен