это СТАРЫЙ бит кода, который принимает массив элементов и генерирует набор одинаково возможных пакетов. если бы я переписал его, вместо массива строк, я бы, вероятно, использовал хеш-таблицу, содержащую Key = $BatchNumber
& Value = $ArrayOfItems
. [ ухмылка ]
однако, он демонстрирует один из способов разбить список на несколько небольших списков, которые почти одинакового размера.
#$GroupList = "test1", "test2", "test3"
#$GroupList = "test1", "test2", "test3", "test4", "test5", "test6"
#$GroupList = "test1", "test2", "test3", "test4", "test5", "test6", "test7", "test8"
$GroupList = "test1", "test2", "test3", "test4", "test5", "test6", "test7", "test8", "test9", "test10", "test11"
$MaxPerBatch = 4
$Delimiter = ", " # one comma plus one space
$Batches = @()
Write-Output "----------"
$NextBatch = ""
$Remaining = $GroupList.Count
$Count = 0
foreach ($Group in $GroupList) {
$Count++
if (($Count -lt $MaxPerBatch) -and ($Remaining -gt 0)) {
$NextBatch += $Group + $Delimiter
}
else {
$NextBatch += $Group
$Batches += $NextBatch
$NextBatch = ""
$Count = 0
}
$Remaining--
if ($Remaining -eq 0) {
$NextBatch = $NextBatch.TrimEnd($Delimiter)
$Batches += $NextBatch
}
}
Write-Output "batch[es] of groups = $($Batches.Count)"
Write-Output ""
Write-Output "collection displayed below ..."
$Batches
Write-Output "++++++++++"
вывод ...
----------
batch[es] of groups = 3
collection displayed below ...
test1, test2, test3, test4
test5, test6, test7, test8
test9, test10, test11
++++++++++