我正在尝试使用 Add-UnifiedGroupLinks 批量加载 Office 365 组,如果仅将一个值作为字符串传递但该命令支持逗号分隔列表,则该组有效。但是,当将逗号分隔的字符串传递给它时,它会返回“找不到对象”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
}
但是当使用超过 20K 用户时,最后一个选项的性能很糟糕,平均每小时大约 400 个(每 9 秒左右一个)。