からめもぶろぐ。

俺たちは雰囲気で OAuth をやっている

New-SPOSite した直後に更新操作をしようとすると失敗することがある

SharePoint Online Management Shell を使って New-SPOSite したあとに、CSOM などで何らかの更新操作 (例えばサイト グループを作ったりするなど) をしようとするとエラーになることがあります。

そもそも、SharePoint Online でのサイト コレクションの操作は時間がかかります。完全にタイミングによりなのですが、運が悪いと 30 分以上かかることもあります。SharePoint Online Management Shell では、操作が完了するまで定期的に状況をポーリングします。*1
CSOM を使う場合でも、同様のサンプル コードが掲示されています。

docs.microsoft.com

しかし実際にはこれだけでは不足していて、操作が完了したという結果が返ってきても、サイト コレクションの内部ステータスが Active になっていないことがあります。なので、New-SPOSite のあとに続けて操作を行いたい場合は、ステータスが Active になるまでさらに待つ必要があります。

$url = 'https://example.sharepoint.com/sites/site1'
$title = 'Site1'
$owner = 'admin@example.onmicrosoft.com'
New-SPOSite -Url $url -Title $title -Owner $owner -StorageQuota 26214400 -LocaleId 1041
while ($true) {
    Start-Sleep -Seconds 5
    if ((Get-SPOSite -Identity $url).Status -eq 'Active') {
        break;
    }
}

*1:操作の完了を待たなくていい場合は -NoWait を指定することもできます。