2017-01-20 61 views
0

我收到以下錯誤:術語'Create-FacilityCSV'未被識別爲cmdlet,函數,腳本文件或可操作程序的名稱。檢查名稱的拼寫,或者如果包含路徑,請驗證路徑是否正確,然後重試。我已經搜索了上面的錯誤,它指向一個.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) 

這裏是一個關於如何通過它簡單的例子:

$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在哪裏定義?您必須在作業的scriptblock中重新定義它,或者理想地將其放入模塊並將模塊導入到scriptblock中。