社畜の所業

社畜の所業

Microsoft365の機能について解説をしていきたいと思います。このブログの情報をご活用いただければ幸いです。たまに他の情報も取り入れていきたいと思います。

※このサイトはPR記事を含みます。

【Microsoft365参考書】Powershellのスロットリングを回避するには?

今回は、Powershellにて、Get系のコマンドレットを実行した場合に以下のエラーが表示された事例についてご紹介したいと思います。

 

エラー1 

The total data received from the remote client exceeded the allowed maximum. 

 

エラー2

警告: 極めて短い遅延が適用されました。

  

 

 

上述したエラー内容については、大きなデータセットに対し、連続したコマンドを実行したことでスロットリングに抵触した可能性があります。

 

  

なお、回避策は、Get-EXOMailbox や Get-EXOCasMailbox の先進認証のコマンドレットに変更することや Sleep コマンドを追記しスリープタイムを設定することで 1 分間に実行されるコマンド数を制御し、処理速度を意図的に均一化させることで、スロットリングを回避できる ことを確認しました。

  

docs.microsoft.com

 

support.microsoft.com

  

 実際にコマンドレットの変更例をご紹介したいと思います。

 

 

 

元のコマンドレット

Get-Mailbox -ResultSize unlimited -RecipientTypeDetails UserMailbox | Get-CASMailbox | Select DisplayName,OWAEnabled,MAPIEnabled,EwsEnabled,ActiveSyncEnabled,IMAPEnabled,POPEnabled |Export-Csv -Encoding UTF8 -NoTypeInformation -Path "C:\Temp\CASMailbox.csv

  

 

変更後 

$UserList = Get-EXOMailbox -Resultsize Unlimited -RecipientTypeDetails UserMailbox 

  

$MailboxStat = $UserList | Foreach {Get-EXOCasMailbox -Identity $_.UserPrincipalName ; Start-Sleep -m 200} 

  

$MailboxStat | select Identity,OWAEnabled,MAPIEnabled,EwsEnabled,ActiveSyncEnabled,IMAPEnabled,POPEnabled | Export-CSV -NoTypeInformation -Encoding UTF8 -Path "C:\Temp\CASMailbox.csv