Private/Get-IAMCoreBucket.ps1

function Get-IAMCoreBucket {
    [OutputType([hashtable])]
    [CmdletBinding()]

    Param(
        [Parameter(Mandatory = $false)]
        [int] $BucketSize = 1000,

        [Parameter(Mandatory = $false, ValueFromPipeline = $true)]
        $InputObject
    )

    begin {
        $Script:_Buckets = @{}
        $Script:_BucketNumber = 0
    }

    process {
        if(!$Script:_Buckets.Contains($Script:_BucketNumber)) {
            $Script:_Buckets[$Script:_BucketNumber] = @()
        } elseif($Script:_Buckets[$Script:_BucketNumber].Count -ge $BucketSize) {
            $Script:_BucketNumber++
            $Script:_Buckets[$Script:_BucketNumber] = @()
        }

        $Script:_Buckets[$Script:_BucketNumber] += $InputObject
    }

    end {
        $Script:_Buckets
    }
}