Síntomas
Al ejecutar scripts o cmdlets mediante Microsoft Exchange Online a través de PowerShell remoto para modificar conjuntos de datos grandes, experimenta cualquiera de los siguientes síntomas o ambos:
-
Los scripts o cmdlets tardan mucho tiempo en ejecutarse.
-
Verá el siguiente mensaje de advertencia de limitación en Exchange Online PowerShell:
ADVERTENCIA: Microtrabado aplicado. Retraso real: <X> msecs, ... ADVERTENCIA: Microtrabado aplicado. Retraso real: <X> msecs, aplicado
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 el mensaje de advertencia de forma segura.
Solución alternativa
Para evitar este comportamiento, pruebe las siguientes opciones en el orden especificado.
Opción 1
Ejecute un diagnóstico de autoayuda en la Centro de administración de Microsoft 365 para actualizar la directiva de limitación de PowerShell remoto de Exchange para su espacio empresarial. Para obtener más información, vea Diagnósticos de autoayuda 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, consulte Acerca de la 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 suele limitarse. Al agregar el elemento sleep 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 integrado de Install-Module .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 ejecutando 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
-
Para instalar el módulo RobustCloudCommand, ejecute el siguiente cmdlet:Install-Module -Name RobustCloudCommand -Force
-
Importe la lista de carpetas públicas generada en el paso 1 a la variable $PFList ejecutando el siguiente cmdlet:$PFList = Import-Csv C:\Temp\PFList.csv
-
Para agregar permisos a cada carpeta pública de la variable de $PFList , ejecute el cmdlet siguiente. 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, según el número de objetos modificados.
Más información
¿Aún necesita ayuda? Visite Comunidad Microsoft.