徵兆
當你透過遠端 PowerShell 使用 Microsoft Exchange Online 執行腳本或指令小子修改大型資料集時,你會經歷以下其中一種或兩種症狀:
-
腳本或指令小程式執行時間很長。
-
你會在 Exchange Online PowerShell 中看到以下限速警告訊息:
警告:微延遲。 實際延遲:<X> 毫秒,... 警告:微延遲。 實際延遲:<X> 毫秒,強制執行
原因
產生此錯誤是系統刻意為之。 限速用於防止惡意或無意攻擊,進而影響服務層級協議。 你可以放心忽略警告訊息。
因應措施
為了避免這種情況,請依照給定順序嘗試以下選項。
選項 1
在 Microsoft 365 系統管理中心執行自助診斷,更新 Exchange 遠端 PowerShell 限速政策。 詳情請參閱 Exchange Online 和 Outlook 問題的自助診斷。
選項 2
使用 Exchange Online PowerShell V2 cmdlets 來執行這個工作。 詳情請參閱「關於 Exchange Online PowerShell V2 模組」。
選項三
在腳本或指令中加入以下睡眠元素。 此元素會將腳本或指令檔減速至限速範圍內。Start-Sleep -m <Time in milliseconds> 以下範例中,使用 Get-Mailbox cmdlet 取得的郵件匣清單被儲存在變數中。 這個變數用來對所有信箱執行動作。 這類工作通常會被限速。 透過在指令長中加入睡眠元素,你可以嘗試控制在節流限制範圍內。$MB=get-mailbox -resultsize unlimited $MB | %{Set-Mailbox $_.identity -CustomAttribute8 "Test"; Start-Sleep -m 500}
選項四
使用 RobustCloudCommand 模組來執行腳本或指令(cmdlet)。 你可以透過內建的 Install-Module 指令檔來安裝這個模組。這裡有一個使用 RobustCloudCommand 模組來為多個公共資料夾新增權限的流程範例:
-
透過執行以下 cmdlet ,將公共資料夾清單匯出到 PFList.csv 檔案:Invoke-Command -Scriptblock {Get-PublicFolder -Recurse -Resultsize Unlimited | Select-Object -property Name,Identity} -Session (Get-Pssession) |Export-csv -Path C:\Temp\PFList.csv -NoTypeInformation
-
透過執行以下 cmdlet 安裝 RobustCloudCommand 模組:Install-Module -Name RobustCloudCommand -Force
-
執行以下 cmdlet,將步驟 1 產生的公共資料夾清單匯入 $PFList 變數:$PFList = Import-Csv C:\Temp\PFList.csv
-
透過執行以下 cmdlet,為 $PFList 變數中的每個公開資料夾新增權限。 此 cmdlet 會建立 LogFileName 日誌,記錄指令本的詳細資訊及可能發生的錯誤。Start-RobustCloudCommand -LogFile C:\Temp\LogFileName.log -Recipients $PFList -ScriptBlock {Add-PublicFolderClientPermission -Identity $input.identity.tostring() -User User@Contoso.com -AccessRights CreateItems} -IdentifyingProperty Identity -UserPrincipalName Admin@contoso.com
附註: 通常,這些指令檔可執行數小時甚至數天,視修改的物件數量而定。
其他相關資訊
是否仍需要協助? 前往 Microsoft Community。