powershell split array into batches

# generate 220 items
$items = @()
foreach($i in 1..220) {
    $items += @{
        id = $i
        name = "company $i"
    }
}
$items.Count # 220

# split array into batches
$size = 100
$batches = for($i=0; $i -lt $items.Count; $i+=$size){ ,($items[$i..($i+$size-1)])}

$batches.Count # 3

$batches[0] | select -First 1 id # 1
$batches[0] | select -last 1 id # 100
$batches[1] | select -First 1 id # 101
$batches[1] | select -last 1 id # 200
$batches[2] | select -First 1 id # 201
$batches[2] | select -last 1 id # 22

# process items in batches
foreach($batch in $batches) {
    foreach($item in $batch) {
        # todo
    }
}