2014-10-14 3 views
0

Как заставить PowerShell выполнять асинхронно выполнение трубопроводов вместо «последовательно»?Как выполнить асинхронный трубопровод Powershell

В качестве примера для иллюстрации этого:

Function PipeDelay($Name, $Miliseconds){ 
    Process { 
     Sleep -miliseconds $Miliseconds 
     Write-Host "$Name : $_" 
     $_   
    } 
} 

1..7 | PipeDelay Fast 100 | PipeDelay Slow 300 | PipeDelay Slowest 900 

Выход в обоих ISE и PowerShell являются следующие:

Fast : 1 
Slow : 1 
Slowest : 1 
1 
Fast : 2 
Slow : 2 
Slowest : 2 
2 
Fast : 3 
Slow : 3 
Slowest : 3 
3 
... 

Это как если бы Powershell последовательно запустить весь трубопровод для одного входного объекта перед обработка следующего входного объекта. Исполнение выглядит примерно так:

Fast : 1       2       3 
Slow : 1---1      2---2      3---3 
Slowest :   1---------------1   2---------------2   3-----... 

Возможно ли это с некоторыми настройками/переменными окружения/и т. Д. чтобы трубопроводы выполнялись независимо/асинхронно? возможно, с настройкой размера буфера для буфера и т. д.? Так что исполнение будет выглядеть примерно так:

Fast : 1 2 3 4 5 6 7 
Slow : 1---1 2---2 3---3 4---4 5---5 6---6 7---7 
Slowest :   1---------------1 2---------------2 3-----... 

NOTE

Я думал, что это из-за режима STA/MTA. Я не понимаю их полностью, но тот же результат в ISE (STA)/Powershell Shell (MTA), по-видимому, устраняет режим STA/MTA в качестве причины.

Кроме того, я подумал Write-Host это вопрос, который принудительно трубопровод должен быть обработан последовательно, но даже если я заменить Write-Host с New-Event, последовательная обработка все еще применяется.

ответ

-1

Вы проверили модуль psaync на codeplex?

https://psasync.codeplex.com/

https://msdn.microsoft.com/en-us/library/dd182440%28v=vs.85%29.aspx

Это может стимулировать несколько идей.

+1

Добро пожаловать на сайт. Это еще не ответ, но вы можете улучшить его и сделать полный ответ: добавьте подробную информацию о том, как это обеспечивает решение, объясните, что такое psaync и что будет найдено на ссылочных URL-адресах (связанные страницы могут быть удалены или перемещены). – mins