Мне нужно выполнить некоторую операцию над сценарием PS, который должен запускаться параллельно. Использование PS Jobs не является реальным вариантом, поскольку задачи, которые должны быть парализованы, зависят от пользовательских функций, которые определены внутри модуля separete. Хотя я знаю, что могу использовать флаг -InitializationScript и импортировать модуль, который содержит мою пользовательскую функцию, я думаю, что я теряю скорость, так как импорт дырочного модуля является «трудоемким».Выполнение потоков паралелей на Powershell
Принимая во внимание все те вещи, которые я пытаюсь запустить эти «задачи» в отдельных потоках, разделяющих пространство. Мой код выглядит следующим образом:
$ps = [Powershell]::Create().AddScript({ Get-CustomADDomain -dnsdomain $env: })
$threadRes = $ps.beginInvoke()
$ps.EndInvoke($threadRes)
Недостатком этого подхода является то, что, так как я создаю новый «процесс Powershell» это пространство выполнения не мои пользовательские модули загружены и, таким образом, я нахожусь в той же ситуации, У меня с Джобсом.
Если я пытаюсь прикрепить текущее пространство выполнения вновь созданный $ пса, используя следующий код:
$ps = [Powershell]::Create()
$ps.runspace = $host.runspace
$ps.AddScript({ Get-CustomADDomain -dnsdomain $env: })
$threadRes = $ps.beginInvoke()
$ps.EndInvoke($threadRes)
Я получаю сообщение об ошибке, потому что я пытаюсь закрыть текущий трубопровод (плохая вещь).
Я думаю, что мой второй снимок на правильном пути, но я не могу получить результаты от вызова сценария, или, по крайней мере, я не могу понять, как это сделать.
Очевидно, что я должен упустить что-то, поэтому любой совет, который у вас может быть, будет очень притягательным !!!!
Мне интересно, как это исходит. Я пытался сделать то же самое, что и вы, в течение нескольких дней и не смог. Я закончил использование заданий, потому что PS просто не способен запускать параллельные потоки. – Tudor
Вы посмотрели на [это Эй! Scripting Guy post] (http://blogs.technet.com/b/heyscriptingguy/archive/2013/09/29/weekend-scripter-max-out-powershell-in-a-little-bit-of-time-part -2.aspx)? Не делал этого сам, но он идет по тому, что вы пытаетесь сделать. – beavel
@beavel Я определенно должен улучшить свои навыки «поиска», это то, что я ищу. Я попробую это и дам вам знать парней :) – SantiFdezMunoz