Sintomas
Quando você executar scripts ou cmdlets usando Microsoft Exchange Online powershell remoto para modificar conjuntos de dados grandes, você experimentará um dos seguintes sintomas:
-
Scripts ou cmdlets levam muito tempo para ser executados.
-
Você vê a seguinte mensagem de aviso de throttling no Exchange Online PowerShell:
AVISO: Micro atraso aplicado. Atraso real: <X> msecs, ...
AVISO: Micro atraso aplicado. Atraso real: <X> msecs, Imposto
Causa
Este é o comportamento padrão. A throttling é usada para evitar ataques mal-intencionados ou não intencionais contra o serviço que podem afetar Contratos de Nível de Serviço. Você pode ignorar com segurança a mensagem de aviso.
Solução alternativa
Para resolver esse comportamento, experimente as opções a seguir na ordem determinada.
Opção 1
Execute um diagnóstico de auto-ajuda no centro de administração do Microsoft 365 para atualizar a política de Exchange de reação remota do PowerShell para seu locatário. Para obter detalhes, consulte Diagnósticos de auto-ajudapara problemas em Exchange Online e Outlook .
Opção 2
Use Exchange Online cmdlets do PowerShell V2 para executar o trabalho. Para obter detalhes, consulte About the Exchange Online PowerShell V2 module.
Opção 3
Adicione o elemento sleep a seguir aos scripts ou cmdlets. Esse elemento reduz o script ou o cmdlet para dentro dos limites do limite de limitação.
Start-Sleep -m <Time in milliseconds>
No exemplo a seguir, a lista de caixas de correio recuperadas usando o cmdlet Get-Mailbox são armazenadas em uma variável. Essa variável é usada para executar uma ação em todas as caixas de correio. Esse tipo de trabalho normalmente é desacelerado. Adicionando o elemento sleep ao cmdlet, você pode tentar permanecer dentro dos limites do limite de limitação.
$MB=get-mailbox -resultsize unlimited $MB | %{Set-Mailbox $_.identity -CustomAttribute8 "Test"; Start-Sleep -m 500}
Opção 4
Use o módulo RobustCloudCommand para executar os scripts ou cmdlets. Você pode instalar esse módulo usando o cmdlet Install-Module integrado.
Veja um exemplo do processo que usa o módulo RobustCloudCommand para adicionar permissões a várias pastas públicas:
-
Exporte a lista de pastas públicas para o arquivo PFList.csv executando o seguinte cmdlet:
Invoke-Command -Scriptblock {Get-PublicFolder -Recurse -Resultsize Unlimited | Select-Object -property Name,Identity} -Session (Get-Pssession) |Export-csv -Path C:\Temp\PFList.csv -NoTypeInformation -
Instale o módulo RobustCloudCommand executando o seguinte cmdlet:
Install-Module -Name RobustCloudCommand -Force -
Importe a lista de pastas públicas geradas na etapa 1 para a variável $PFList executando o seguinte cmdlet:
$PFList = Import-Csv C:\Temp\PFList.csv -
Adicione permissões para cada pasta pública na variável $PFList executando o cmdlet a seguir. Este cmdlet cria o log LogFileName que contém os detalhes do cmdlet e quaisquer erros que possam ocorrer.
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
Observação: Normalmente, esses cmdlets podem ser executados por horas ou até mesmo dias, dependendo do número de objetos modificados.
Mais informações
Ainda precisa de ajuda? Acesse a Microsoft Community.