Sintomas

Quando executa scripts ou cmdlets através do Microsoft Exchange Online através do PowerShell remoto para modificar grandes conjuntos de dados, vê um ou ambos os seguintes sintomas:

  • Os scripts ou cmdlets demoram muito tempo a ser executados.

  • Verá a seguinte mensagem de aviso de throttling no Exchange Online PowerShell:

    AVISO: foi aplicado um atraso do micro. Atraso real: <X> msecs, ...
    AVISO: foi aplicado um atraso do micro. Atraso real: <X> msecs, Impor

Causa

Este comportamento é por estrutura. A throttling é utilizada para impedir ataques maliciosos ou não intencionais contra o serviço que podem afetar Os Contratos de Nível de Serviço. Pode ignorar a mensagem de aviso em segurança.

Solução

Para resolver este comportamento, experimente as seguintes opções pela ordem que se segue.

Opção 1

Execute um diagnóstico de auto-ajuda no Microsoft 365 administração do Exchange atualizar a política de throttling do PowerShell remoto do seu inquilino. Para obter detalhes, consulte Diagnósticos de ajuda aprovações de problemas Exchange Online e Outlook.

Opção 2

Utilize Exchange Online cmdlets do PowerShell V2 para executar a tarefa. Para obter detalhes, consulte Acerca do Exchange Online do PowerShell V2.

Opção 3

Adicione o elemento de sono seguinte aos scripts ou cmdlets. Este elemento atrasa o script ou cmdlet para dentro dos limites do limite de limitação.


Start-Sleep -m <Time in milliseconds>
No exemplo seguinte, a lista de caixas de correio que são recuperadas através do cmdlet Get-Mailbox estão armazenadas numa variável. Esta variável é utilizada para executar uma ação em todas as caixas de correio. Normalmente, este tipo de trabalho é apenas detetável. Ao adicionar o elemento de sono ao cmdlet, 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

Utilize o módulo RobustCloudCommand para executar os scripts ou cmdlets. Pode instalar este módulo ao utilizar o cmdlet Install-Module incorporado.

Eis um exemplo do processo que utiliza o módulo RobustCloudCommand para adicionar permissões a múltiplas pastas públicas:

  1. Exporte a lista de pastas públicas para o PFList.csv ficheiro ao executar 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

  2. Instale o módulo RobustCloudCommand ao executar o seguinte cmdlet:

    Install-Module -Name RobustCloudCommand -Force

  3. Importe a lista de pastas públicas geradas no passo 1 para a variável $PFList ao executar o seguinte cmdlet:

    $PFList = Import-Csv C:\Temp\PFList.csv

  4. Adicione permissões para cada pasta pública na variável de $PFList ao executar o seguinte cmdlet. Este cmdlet cria o registo 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

Nota: Normalmente, estes cmdlets podem ser executados durante horas ou até dias, dependendo do número de objetos que são modificados.

Mais informações

Ainda precisa de ajuda? Vá para a Microsoft Community.

Precisa de mais ajuda?

Aumente os seus conhecimentos

Explore as formações >

Seja o primeiro a obter novas funcionalidades

Aderir ao Microsoft insiders >

As informações foram úteis?

Quão satisfeito está com a qualidade do idioma?
O que afetou a sua experiência?

Obrigado pelo seu feedback!

×