私は1つのメインファイルでジョブとして実行する必要がある別々のファイルに機能を持っています。スクリプトの相対パスをpowershellジョブに渡す
私はこれらの関数の引数を渡すことができる必要があります。
今、私の問題は、完全にひどい方法で機能ファイルのパスをジョブに渡す方法を考え出すことです。
私もスクリプトを参照する必要があります(「スクリプトがsomefunc.ps1を使用しています」適切でないだけと言う静的なコメントを持つ)
私は読みやすくするために、ファイルの先頭に定義された機能を持っている必要があります相対パス(これらはすべて同じフォルダにあります)。
私はenv:を使用してスクリプトのパスを保存していますが、これを行うには5か所のようにスクリプトを参照する必要があります。
これは私が持っているものです。
testJobsMain.ps1:
#Store path of functions in env so jobs can find them
$env:func1 = "$PSScriptRoot\func1.ps1"
$env:func2 = "$PSScriptRoot\func2.ps1"
$arrOutput = @()
$Jobs = @()
foreach($i in ('aaa','bbb','ccc')) {
$Import = {. $env:func1}
$Execute = {func1 -myArg $Using:i}
$Jobs += Start-Job -InitializationScript $Import -ScriptBlock $Execute
}
$JobsOutput = $Jobs | Wait-Job | Receive-Job
$JobsOutput
$Jobs | Remove-Job
#Clean up env
Remove-Item env:\func1
$arrOutput
func1.ps1
function func1($myArg) { write-output $myArg }
func2.ps1
function func2($blah) { write-output $blah }