症状
通过远程 PowerShell 使用 Microsoft Exchange Online脚本或 cmdlet 修改大型数据集时,可能会遇到以下两种症状之一:
-
脚本或 cmdlet 需要很长时间来运行。
-
PowerShell 中会显示以下Exchange Online警告消息:
警告:应用了微延迟。 实际延迟:<X>毫秒, ...
警告:应用了微延迟。 实际延迟:<X>毫秒,已强制执行
原因
此行为是设计使的。 限制用于防止对服务进行可能影响服务级别协议的恶意或无意攻击。 可以放心地忽略警告消息。
解决方法
若要处理此行为,请尝试按给定顺序选择以下选项。
选项 1
在 Microsoft 365 管理中心运行自助诊断,Exchange租户的远程 PowerShell 限制策略。 有关详细信息,请参阅自助诊断,了解Exchange Online Outlook。
选项 2
使用 Exchange Online PowerShell V2 cmdlet 运行作业。 有关详细信息,请参阅关于 Exchange Online PowerShell V2 模块。
选项 3
将以下 sleep 元素添加到脚本或 cmdlet。 此元素将脚本或 cmdlet 减慢到限制边界内。Start-Sleep -m <Time in milliseconds> 在下面的示例中,使用 Get-Mailbox cmdlet 检索的邮箱列表存储在变量中。 此变量用于针对所有邮箱运行操作。 此类作业通常会受到限制。 通过将 sleep 元素添加到 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 社区。