Используйте оператор остатка / по модулю %
, чтобы «обернуть» индекс группы, затем просто добавляйте по одному пользователю за раз для оптимального распределения:
# define number of groups
$numberOfTeams = 10
# read participant records from csv
$participants = Import-Csv C:\Users\Desktop\liste.csv
# create jagged array for the team rosters
$teams = ,@() * $numberOfTeams
# go through participant list, add to "next" group in line
$index = 0
$participants |%{
$teams[$index++ % $numberOfTeams] += @($_.Navn)
}
Если вы хотите рандомизировать порядок участники, просто отсортируйте список случайным образом перед заполнением групп:
$participants = Import-Csv C:\Users\Desktop\liste.csv |Sort-Object {Get-Random}
Каждый элемент в $teams
будет другим массивом имен, поэтому для их перечисления:
0..$teams.Length |%{
Write-Host "Team $($_+1):" $($teams[$_] -join ', ')
}