Sintomas
Quando executa scripts ou cmdlets com Microsoft Exchange Online através do PowerShell remoto para modificar grandes conjuntos de dados, pode deparar-se com um ou ambos os seguintes sintomas:
-
Os scripts ou cmdlets demoram muito tempo a ser executados.
-
Verá a seguinte mensagem de aviso de limitação no Exchange Online PowerShell:
AVISO: Micro atraso aplicado. Real delayed: <X> msecs, ... AVISO: Micro atraso aplicado. Atraso real: <X> msecs, Imposto
Causa
Este comportamento é por predefinição. A limitação é utilizada para evitar ataques maliciosos ou não intencionais contra o serviço que possam afetar os Contratos de Nível de Serviço. Pode ignorar com segurança a mensagem de aviso.
Solução
Para contornar este comportamento, experimente as seguintes opções pela ordem indicada.
Opção 1
Execute um diagnóstico de ajuda autónoma no centro de administração do Microsoft 365 para atualizar a política de limitação do PowerShell Remoto do Exchange para o seu inquilino. Para obter detalhes, veja Diagnósticos de ajuda autónoma para problemas no Exchange Online e no Outlook.
Opção 2
Utilize Exchange Online cmdlets do PowerShell V2 para executar a tarefa. Para obter detalhes, veja About the Exchange Online PowerShell V2 module (Acerca do módulo Exchange Online PowerShell V2).
Opção 3
Adicione o seguinte elemento de suspensão aos scripts ou cmdlets. Este elemento atrasa o script ou o 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 obtidas com o cmdlet Get-Mailbox é armazenada numa variável. Esta variável é utilizada para executar uma ação em todas as caixas de correio. Este tipo de tarefa é normalmente limitado. Ao adicionar o elemento de suspensão ao cmdlet, pode tentar manter-se 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 com o cmdlet Install-Module incorporado.Eis um exemplo do processo que utiliza o módulo RobustCloudCommand para adicionar permissões a várias pastas públicas:
-
Exporte a lista de pastas públicas para o ficheiro PFList.csv 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
-
Instale o módulo RobustCloudCommand ao executar o seguinte cmdlet:Install-Module -Name RobustCloudCommand -Force
-
Importe a lista de pastas públicas que foram geradas no passo 1 para a variável $PFList ao executar o seguinte cmdlet:$PFList = Import-Csv C:\Temp\PFList.csv
-
Adicione permissões para cada pasta pública na variável $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 mesmo dias, dependendo do número de objetos que são modificados.
Mais informações
Ainda precisa de ajuda? Aceda à Comunidade Microsoft.