Pass arguments to a scriptblock in powershell

powershell, scriptblock

Solution

Keith's answer also works for `Invoke-Command`, with the limit that you can't use named parameters. The arguments should be set using the `-ArgumentList` parameter and should be comma separated.

$sb = {
    param($p1,$p2)
    $OFS=','
    "p1 is $p1, p2 is $p2, rest of args: $args"
}
Invoke-Command $sb -ArgumentList 1,2,3,4

Also see here and here.

Problem

I guess you can't just do this: ``` $servicePath = $args[0] if(Test-Path -path $servicePath) <-- does not throw in here $block = { write-host $servicePath -foreground "magenta" if((Test-Path -path $servicePath)) { <-- throws here. dowork } } ``` So how can I pass my variables to the scriptblock $block?

Original source

Related problems