Skip to content

PowerShell module to invoke scriptblocks in parallel runspaces

License

Notifications You must be signed in to change notification settings

TheRockStarDBA/PSParallel

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PSParallel

Invoke scriptblocks in parallel runspaces

##Installation

Install-Module PSParallel
# ping all machines in a subnet
(1..255).Foreach{"192.168.0.$_"} | Invoke-Parallel { [PSCustomObject] @{IP=$_;Result=ping.exe -4 -a -w 20 $_}}

Variables and functions are captured from the parent session.

##Throttling To control the degree of parallelism, i.e. the number of concurrent runspaces, use the -ThrottleLimit parameter

# process lots of crash dumps
Get-ChildItem -recurce *.dmp | Invoke-Parallel -ThrottleLimit 64 -ProgressActivity "Processing dumps" {
   [PSCustomObject] @{ Dump=$_; Analysis = cdb.exe -z $_.fullname -c '"!analyze -v;q"'
  }

The overhead of spinning up new PowerShell classes is non-zero. Invoke-Parallel is useful when you have items with high latency or that is long running.

image

##Contributions Pull requests and/or suggestions are more than welcome.

###Acknowlegementes The idea and the basis for the implementation comes from RamblingCookieMonster. Cudos for that implementation also goes to Boe Prox(@proxb) and Sergei Vorobev(@xvorsx).

About

PowerShell module to invoke scriptblocks in parallel runspaces

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 75.8%
  • PowerShell 15.7%
  • Smalltalk 8.5%