2017-03-29 7 views
2

私は、両方の軸の要素の動的数を含む2次元配列を持っています。動的な要素数を持つ配列をPowerShellのStart-Jobに渡す

$h = @(@(1,2,3), @(4,5,6,7)) 

$h | %{ 

    $ScriptBlock = { 

    param($var1, $var2) 
    Write-Host "[processing '$var1' inside the job]" # I want a variable which can access $h[0], or $h[1] here 

    } 

    Write-Host "processing $_..." 
    Start-Job $ScriptBlock -ArgumentList $_ 
} 

# Wait for all to complete 
While (Get-Job -State "Running") { Start-Sleep 2 } 

# Display output from all jobs 
Get-Job | Receive-Job 

# Cleanup 
Remove-Job * 

それは$h[0]、または$h[1]にアクセスすることができます$ScriptBlock内部の単一の変数を持つことは可能ですか?

私は私のコードでは、$var1知っている、と$var2$h[0][0]$h[0][1]$h[1][0]にアクセスすることができ、$h[1][1]。しかし、$hのディメンションは動的なので、param($var1, $var2)を使用すると、$hのすべての要素にアクセスすることはできません。

誰でもこれを行う方法は?

+3

スクリプトブロック内のparamセクションを省略し、 '$ using:h'を使用して外部の変数にアクセスすることができます。 –

答えて

0

$argsを使用すると、$h[0]$h[1]にアクセスできることがわかりました。

param($var1, $var2)行を削除することを忘れないでください。

$h = @(@(1,2,3), @(4,5,6,7)) 

$h | %{ 

    $ScriptBlock = { 

    write-host $args  # access $h[0], $h[1] 
    write-host $args[0] # access $h[0][0], $h[1][0] 
    } 

    Write-Host "processing $_..." 
    Start-Job $ScriptBlock -ArgumentList $_ 
} 

# Wait for all to complete 
While (Get-Job -State "Running") { Start-Sleep 2 } 

# Display output from all jobs 
Get-Job | Receive-Job 

# Cleanup 
Remove-Job * 
関連する問題