0

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 つ程度) のパフォーマンスが得られません。

4

1 に答える 1