PowerShell -Part 4at TECH
PowerShell -Part 4 - 暇つぶし2ch474:デフォルトの名無しさん
20/06/26 10:47:41 lJi08xny.net
>>449
こんな感じ?
ただ動くだけのサンプル。エラー処理とかオブジェクトの後始末とか何もしていない。

function Invoke-ThreadedPipeline([ScriptBlock[]] $ScriptBlock) {
 $p = $ScriptBlock | % {
  $p = [RunspaceFactory]::CreateRunspace().CreatePipeline()
  $p.Commands.AddScript($_)
  $p.Runspace.Open(); $p.InvokeAsync()
  $p
 }
 
 while ($p = @($p | ? {-not $_.Output.EndOfPipeline})) {
  $i = [Threading.WaitHandle]::WaitAny(($p | % {$_.Output.WaitHandle}))
  $o = $p[$i].Output.Read($p[$i].Output.Count)
  if ($i -lt $p.Length - 1) {
   $null = $p[$i + 1].Input.Write($o, $true)
   if ($p[$i].Output.EndOfPipeline) {$p[$i + 1].Input.Close()}
  }
  else {
   $o
  }
 }
}

$o = Get-Date
Invoke-ThreadedPipeline (
 {1..10},
 {process {Start-Sleep 1; ">$_"}},
 {process {Start-Sleep 1; ">$_"}},
 {process {Start-Sleep 1; ">$_"}}
) | % {'{0} : {1}' -f $_, (New-TimeSpan $o).TotalSeconds}


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch