3
実行する方法はありますか並列プログラミングされた機能PowerShell?以下のような並列機能を実行する
何か:それは同じスクリプトファイル内で宣言された関数です「RunUnitTests」と「RunBuilder」を、認識していない文句を言うので
Function BuildParallel($configuration)
{
$buildJob = {
param($configuration)
Write-Host "Building with configuration $configuration."
RunBuilder $configuration;
}
$unitJob = {
param()
Write-Host "Running unit."
RunUnitTests;
}
Start-Job $buildJob -ArgumentList $configuration
Start-Job $unitJob
While (Get-Job -State "Running")
{
Start-Sleep 1
}
Get-Job | Receive-Job
Get-Job | Remove-Job
}
は動作しません。どうやらこれは、スクリプトブロックが新しいコンテキストであり、同じファイルで宣言されたスクリプトについて何も知らないために起こります。
私はスタート-仕事に-InitializationScriptを使用するように試みることができるが、両方RunUnitTestsとRunBuilderは同じファイルで宣言または他のファイルから参照より多くの機能を呼び出し、そう...私はそこだと確信していますそれは単なるモジュラープログラミング(関数、ルーチン、すべてのもの)なので、これを行う方法です。
しかし、私はのScriptBlockや関数の内部で自動的に認識されることを使用する必要があります:あなたは、インポート一つのファイルを望んでいた場合
、それだけだろうか? – Luis
ScriptBlock/jobは独自のコンテキストで実行されるため、各スクリプトブロックの先頭で実行して、関数をそのジョブのコンテキストにインポートします。 –
ありがとう、それはうまく動作します! – Luis