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 {

    }
}