2017-01-20 1 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

Вы должны использовать скрипт инициализации для передачи функции внутри запуска задания ScriptBlock, как это:

$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? Вам нужно будет переопределить его в скриптблоке для задания или, в идеале, поместить его в модуль и импортировать модуль внутри скриптового блока.

 Смежные вопросы

  • Нет связанных вопросов^_^