Я пытаюсь выполнить групповую загрузку группы Office 365 с помощью Add-UnifiedGroupLinks, которая работает, если передается только одно значение в виде строки, но команда поддерживает список через запятую. Однако при передаче строки через запятую возвращается «Не удалось найти объект» user1 @ domain.com, user2 @ domain.com "
Я могу заставить его работать, запуская только одного пользователя за раз, но он НАМНОГО медленнее и, учитывая большое количество пользователей, на самом деле не отвечает моим потребностям. Я могу взять строку, которую я строю, скопировать и вставить из нее и запустить ту же строку кода вручную, и она работает без проблем. Я также пытался использовать только 3 или 5 пользователей одновременно, но та же проблема.
$sb = New-Object System.Text.StringBuilder
$i = 1
Import-CSV "myCSV.csv" | ForEach-Object {
[void]$sb.Append($_.UserPrincipalName + ',')
if($i -eq 20) {
$sb.Length--
Add-UnifiedGroupLinks –Identity "MyGroupName" –LinkType Members –Links $sb.ToString()
Write-Host $sb.ToString()
$sb.Clear()
$i = 1
}
Else {$i++}
}
Примечание. У меня есть дополнительный код для обработки остатка после запуска цикла, но он не имеет отношения к рассматриваемой проблеме.
Возвращает Couldn't find object "user1@domain.com,user2@domain.com"
.
Однако, если я вручную запускаю эту строку, она работает:
Add-UnifiedGroupLinks –Identity "MyGroupName" –LinkType Members –Links user1@domain.com,user2@domain.com
Или, если я сделаю по одному, это сработает:
Import-CSV "myCSV.csv" | ForEach-Object {
Add-UnifiedGroupLinks –Identity "MyGroupName" –LinkType Members –Links $_.UserPrincipalName
}
, но при последней опции производительность ужасна, когда для пользователей более 20 000 это в среднем около 400 в час (по одному каждые 9 секунд или около того).