Revision: 40143
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at January 26, 2011 22:00 by itsvetkov
Initial Code
ParallelForEach-Object( [ScriptBlock] $Script = { param([Object] $Data) Write-Output $Data }, [Int] $Threads = 0 ) { begin { $Jobs = @() if ($Threads -eq 0) { Get-WmiObject Win32_Processor | ForEach-Object { $Threads = $Threads + $_.NumberOfLogicalProcessors } } Write-Host "Executing $Threads thread(s)" } process { # Write-Host 'Number of jobs:' $Jobs.Length if ($Jobs.Length -ge $Threads) { # Write-Host 'Waiting for any job to complete' $CompletedJob = Wait-Job $Jobs -Any $Jobs = $Jobs -ne $CompletedJob Receive-Job $CompletedJob Remove-Job $CompletedJob } $Jobs = $Jobs + (Start-Job $Script -ArgumentList $_) } end { while ($Jobs.Length -gt 0) { $CompletedJob = Wait-Job $Jobs -Any $Jobs = $Jobs -ne $CompletedJob Receive-Job $CompletedJob Remove-Job $CompletedJob } } }
Initial URL
Initial Description
Initial Title
Parallel “For Eachâ€
Initial Tags
Initial Language
Windows PowerShell