Помощь по многопоточности powershell с использованием модуля poshrsjob
Я пытаюсь что-то многопоточить и наткнулся на это: http://learn-powershell.net/2015/03/31/introducing-poshrsjob-as-an-alternative-to-powershell-jobs/
Пытаюсь использовать, но получаю ошибки и не могу получить доступ к нужным мне данным. Позволь мне объяснить. У меня есть очень простой пример здесь:
@('12.34.56.78')|Start-RSJob -Name {"TEST_$($_)"} -ScriptBlock {
Param($Computername)
Test-Connection -ComputerName $Computername -Quiet
}
get-RSJob|Receive-RSJob
Это фактически ошибка, говорящая, что computername является нулем. Любой тип команды, которую я помещаю здесь, появляется та же самая ошибка, говоря, что computername является нулем Как избавиться от этого и как получить доступ к логическому значению, которое должно быть возвращено. Это возвращает true или false в командной строке, но я не могу получить доступ к этому значению при запуске в этом сценарии.
В конечном итоге для этого потребуется массив IP-адресов, и мне потребуется доступ ко всем значениям, возвращаемым для каждой машины. Мне не нужно использовать этот шикарный модуль, но мне нужны темы и я считаю, что это хороший выбор. Любой совет здесь приветствуется.
1 ответ
Похоже, вы нашли ошибку в моем модуле с использованием Param() для размещения входящих данных в конвейере. К счастью, вы можете обойти это, просто используя $_
в блоке скриптов.
@('12.34.56.78')|Start-RSJob -Name {"TEST_$($_)"} -ScriptBlock {
Test-Connection -ComputerName $_ -Quiet
}
get-RSJob|Receive-RSJob
При этом, мне определенно нужно растоптать эту ошибку.
Редактировать: проблема с возвратом $False - ошибка ($True возвращает нормально) в Receive-RSJob. Я тоже это исправлю.