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:
-
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 -
Instale o módulo RobustCloudCommand ao executar o seguinte cmdlet:
Install-Module -Name RobustCloudCommand -Force -
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 -
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.