症状
通过远程 PowerShell 使用 Microsoft Exchange Online 来修改大型数据集来运行脚本或 cmdlet 时,会遇到以下一种或两种症状:
-
脚本或 cmdlet 需要很长时间才能运行。
-
Exchange Online PowerShell 中会显示以下限制警告消息:
警告:应用了微延迟。 实际延迟:<X> 毫秒,... 警告:应用了微延迟。 实际延迟:<X> 毫秒,强制实施
原因
此行为是设计使然。 限制用于防止对可能影响服务级别协议的服务的恶意或无意攻击。 可以放心地忽略警告消息。
解决方法
若要解决此问题,请按给定的顺序尝试以下选项。
选项 1
在 Microsoft 365 管理中心中运行自助诊断,以更新租户的 Exchange 远程 PowerShell 限制策略。 有关详细信息,请参阅自助诊断了解Exchange Online和 Outlook 中的问题。
选项 2
使用 Exchange Online PowerShell V2 cmdlet 运行作业。 有关详细信息,请参阅关于 powerShell V2 模块Exchange Online。
选项 3
将以下睡眠元素添加到脚本或 cmdlet。 此元素将脚本或 cmdlet 减慢到限制的边界内。Start-Sleep -m <Time in milliseconds> 在以下示例中,使用 Get-Mailbox cmdlet 检索的邮箱列表存储在变量中。 此变量用于对所有邮箱运行操作。 此类作业通常受到限制。 通过将睡眠元素添加到 cmdlet,可以尝试保持在限制的边界内。$MB=get-mailbox -resultsize unlimited $MB | %{Set-Mailbox $_.identity -CustomAttribute8 "Test"; Start-Sleep -m 500}
选项 4
使用 RobustCloudCommand 模块运行脚本或 cmdlet。 可以使用内置 Install-Module cmdlet 安装此模块。下面是使用 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 日志,其中包含 cmdlet 的详细信息以及可能发生的任何错误。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
注意: 通常,这些 cmdlet 可以运行数小时甚至数天,具体取决于修改的对象数。
更多信息
仍然需要帮助? 请转到 Microsoft 社区。