Síntomas
Al ejecutar scripts o cmdlets mediante Microsoft Exchange Online a través de PowerShell remoto para modificar conjuntos de datos grandes, experimenta uno o ambos de los siguientes síntomas:
-
Los scripts o cmdlets pueden tardar mucho tiempo en ejecutarse.
-
Verá el siguiente mensaje de advertencia de limitación en Exchange Online PowerShell:
ADVERTENCIA: Se ha aplicado microtras retrasada. Retraso real: <X> msecs, ...
ADVERTENCIA: Se ha aplicado microtras retrasada. Real delayed: <X> msecs, Enforced
Causa
Este comportamiento es una característica del diseño de la aplicación. La limitación se usa para evitar ataques malintencionados o no intencionados contra el servicio que podrían afectar a los contratos de nivel de servicio. Puede ignorar de forma segura el mensaje de advertencia.
Solución alternativa
Para evitar este comportamiento, pruebe las siguientes opciones en el orden dado.
Opción 1
Ejecute un diagnóstico de auto-ayuda en el centro de administración de Microsoft 365 para actualizar la directiva de limitación de PowerShell Exchange remoto para el inquilino. Para obtener más información, vea Diagnósticosde auto help para problemas en Exchange Online y Outlook .
Opción 2
Use Exchange Online cmdlets de PowerShell V2 para ejecutar el trabajo. Para obtener más información, vea Acerca de Exchange Online módulo de PowerShell V2.
Opción 3
Agregue el siguiente elemento de suspensión a los scripts o cmdlets. Este elemento ralentiza el script o cmdlet dentro de los límites del límite de limitación.Start-Sleep -m <Time in milliseconds> En el ejemplo siguiente, la lista de buzones que se recuperan mediante el cmdlet Get-Mailbox se almacenan en una variable. Esta variable se usa para ejecutar una acción en todos los buzones. Este tipo de trabajo normalmente se limita. Al agregar el elemento de suspensión al cmdlet, puede intentar mantenerse dentro de los límites del límite de limitación.$MB=get-mailbox -resultsize unlimited $MB | %{Set-Mailbox $_.identity -CustomAttribute8 "Test"; Start-Sleep -m 500}
Opción 4
Use el módulo RobustCloudCommand para ejecutar los scripts o cmdlets. Puede instalar este módulo mediante el cmdlet Install-Module integrado. Este es un ejemplo del proceso que usa el módulo RobustCloudCommand para agregar permisos a varias carpetas públicas:
-
Exporte la lista de carpetas públicas al archivo PFList.csv mediante el siguiente 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 el módulo RobustCloudCommand ejecutando el siguiente cmdlet: Install-Module -Name RobustCloudCommand -Force
-
Importe la lista de carpetas públicas que se generó en el paso 1 a la variable $PFList mediante la ejecución del siguiente cmdlet: $PFList = Import-Csv C:\Temp\PFList.csv
-
Agregue permisos para cada carpeta pública en $PFList variable ejecutando el siguiente cmdlet. Este cmdlet crea el registro LogFileName que contiene los detalles del cmdlet y los errores que se pueden producir.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, estos cmdlets pueden ejecutarse durante horas o incluso días, dependiendo del número de objetos que se modifiquen.
Más información
¿Aún necesita ayuda? Visite Comunidad Microsoft.