2017-01-20 33 views
0

次のエラーが表示されます。「Create-FacilityCSV」という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認してから、もう一度やり直してください。私は上記のエラーを探し、それは.source問題を指しているが、私は同じファイルまたは.sourceに含まれている関数を実行することができますが、私はそれを並列処理しようとするとエラーが表示されます。Powershell並列処理の問題

私は問題なく

foreach ($d in $directory_info) { 
    cd $d 
    Create-FacilityCSV 
    cd .. 
} #end foreach 

をこのコードを実行することができます。しかし、私はこの

# Parallel process this job 
    Start-Job -Name CSV -ScriptBlock { 
     param ([string[]]$directory_info) 
     foreach ($d in $directory_info) { 
     cd $d 
     Create-FacilityCSV 
     cd .. 
     } #end foreach 
    } -ArgumentList (,$directory_info) 

を使用するとき、私は上記のエラーを取得します。提案?前もって感謝します。

答えて

0

$a={ 
    function Create-FacilityCSV(){ 
     # Paste the Create-FacilityCSV fucntion code 
     } 
} 
    Start-Job -InitializationScript $a -Name CSV -ScriptBlock { 
     param ([string[]]$directory_info) 
     foreach ($d in $directory_info) { 
     cd $d 
     Create-FacilityCSV 
     cd .. 
     } #end foreach 
    } -ArgumentList (,$directory_info) 

ここではそれに合格する方法について1つの単純な例です:

$ini='$var="'+$args[0]+'"' 
$a={ 
Function Get-add() 
     { 
     "this is the value of $var" 

     } 
} 
start-job -InitializationScript $a -ScriptBlock {param($ini)iex $ini;get-add } -ArgumentList $ini |Wait-Job | Receive-Job 
+0

感謝あなたは両方の迅速な対応をしています。他のいくつかの問題を解決したら、これは完全に機能しました。しかし、私は10分のプロセスから1になりました。私は4人の子供がいて、週末に働くことは難しいです。 – Roger

+0

@Roger:私の喜び。それがうまく働いたことを知っておいてください –

0

PowerShellジョブは別のプロセスで実行されるため、これが想定されています。 Create-FacilityCSVはどこに定義されていますか?あなたは、スクリプトブロックの中でそれをジョブのために再定義しなければなりません。理想的にはそれをモジュールに入れてスクリプトブロック内にインポートしてください。あなたはこのような開始ジョブスクリプトブロック内の機能を通過させるための初期化スクリプトを使用する必要が