Add-UnifiedGroupLinks を使用して Office 365 グループを一括読み込みしようとしていますが、これは 1 つの値を文字列として渡すだけで機能しますが、コマンドはカンマ区切りのリストをサポートしています。ただし、カンマ区切りの文字列を渡すと、「オブジェクト "user1@domain.com,user2@domain.com が見つかりませんでした" が返されます。
一度に1人のユーザーのみを実行することで動作させることができますが、非常に遅く、多数のユーザーに基づいているため、私のニーズにはあまり適していません. ビルドしてコピーして貼り付けた文字列を取得し、同じコード行を手動で実行すると、問題なく動作します。一度に 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
または、一度に1つずつ実行すると機能します:
Import-CSV "myCSV.csv" | ForEach-Object {
Add-UnifiedGroupLinks –Identity "MyGroupName" –LinkType Members –Links $_.UserPrincipalName
}
しかし、20,000 人を超えるユーザーを処理する場合、最後のオプションを使用すると、1 時間あたり平均約 400 (9 秒ごとに 1 つ程度) のパフォーマンスが得られません。