Private/Invoke-VenafiParallel.ps1
function Invoke-VenafiParallel { [CmdletBinding()] param ( [Parameter(Mandatory)] [psobject] $InputObject, [Parameter(Mandatory)] [scriptblock] $ScriptBlock, [Parameter(Mandatory)] [psobject] $VenafiSession, [Parameter()] [int] $ThrottleLimit = 100 ) begin { } process { # needed for parallel in ps7 $sbString = $ScriptBlock.ToString() if ($PSVersionTable.PSVersion.Major -lt 6) { $InputObject | ForEach-Object -Process $ScriptBlock } else { $InputObject | ForEach-Object -ThrottleLimit $ThrottleLimit -Parallel { Import-Module VenafiPS $VenafiSession = New-VenafiSession -Server ($using:VenafiSession).Server -AccessToken ($using:VenafiSession).Token.AccessToken -PassThru Invoke-Expression $using:sbString } } } end { } } |