get-ChunkList.ps1

function get-ChunkList
{
    Param
    (
        [Parameter(Mandatory = $true)]
        $listToChunk,
        [Parameter(Mandatory = $true)]
        $userBatchSize,
        [Parameter(Mandatory = $true)]
        $isCustomObject
    )

    out-logfile -string "Start Get-ChunkList"

    $chunkSize = $userBatchSize

    if ($isCustomObject -ne $true)
    {
        $chunks = [System.Collections.Generic.List[Object]]::New()
    }
    else 
    {
        $chunks = [System.Collections.Generic.List[psCustomObject]]::New()
    }


    out-logfile -string "Starting to chunk the list provided..."

    for ($i = 0; $i -lt $listToChunk.count ; $i += $chunkSize)
    {
        out-logfile -string ("Processing chunk: "+$i.tostring())

        $endIndex = [Math]::Min($i + $chunkSize - 1, $listToChunk.Count - 1)

        $chunks.Add($listToChunk[$i..$endIndex]) | Out-Null
    }

    out-logfile -string ("Count of chunks: "+$chunks.Count)

    foreach ($chunk in $chunks)
    {
        out-logfile -string ("Chunk Size: "+$chunk.count.tostring())
    }

    out-logfile -string "End Get-ChunkList"

    return $chunks
}