Sintomi
Quando si eseguono script o cmdlet usando Microsoft Exchange Online powershell remoto per modificare set di dati di grandi dimensioni, si verifica uno o entrambi i sintomi seguenti:
-
L'esecuzione di script o cmdlet può richiedere molto tempo.
-
In PowerShell viene visualizzato il messaggio di avviso di limitazione Exchange Online seguente:
AVVISO: micro ritardo applicato. Ritardo effettivo: <X> msec, ...
AVVISO: micro ritardo applicato. Ritardo effettivo: <X> msec, Applicato
Causa
Si tratta di un comportamento correlato alla progettazione del prodotto. La limitazione viene usata per impedire attacchi dannosi o involontari contro il servizio che potrebbero influire sui contratti di servizio. È possibile ignorare il messaggio di avviso.
Soluzione alternativa
Per risolvere questo problema, provare le opzioni seguenti nell'ordine specificato.
Opzione 1
Eseguire una diagnostica self-help nell'Microsoft 365 di amministrazione per aggiornare i criteri Exchange di limitazione remota di PowerShell per il tenant. Per informazioni dettagliate, vedere Diagnostica self-help peri problemi in Exchange Online e Outlook .
Opzione 2
Usare Exchange Online cmdlet di PowerShell V2 per eseguire il processo. Per informazioni dettagliate, vedere Informazioni sul modulo Exchange Online PowerShell V2.
Opzione 3
Aggiungere l'elemento di sospensione seguente agli script o ai cmdlet. Questo elemento rallenta lo script o il cmdlet entro i limiti del limite di limitazione.
Start-Sleep -m <Time in milliseconds>
Nell'esempio seguente l'elenco delle cassette postali recuperate con il cmdlet Get-Mailbox viene archiviato in una variabile. Questa variabile viene usata per eseguire un'azione su tutte le cassette postali. Questo tipo di lavoro è in genere limitato. Aggiungendo l'elemento sleep al cmdlet, è possibile provare a rimanere entro i limiti del limite di limitazione.
$MB=get-mailbox -resultsize unlimited $MB | %{Set-Mailbox $_.identity -CustomAttribute8 "Test"; Start-Sleep -m 500}
Opzione 4
Usare il modulo RobustCloudCommand per eseguire gli script o i cmdlet. È possibile installare questo modulo usando il cmdlet Install-Module .
Ecco un esempio del processo che usa il modulo RobustCloudCommand per aggiungere autorizzazioni a più cartelle pubbliche:
-
Esportare l'elenco di cartelle pubbliche nel file PFList.csv eseguendo il cmdlet seguente:
Invoke-Command -Scriptblock {Get-PublicFolder -Recurse -Resultsize Unlimited | Select-Object -property Name,Identity} -Session (Get-Pssession) |Export-csv -Path C:\Temp\PFList.csv -NoTypeInformation -
Installare il modulo RobustCloudCommand eseguendo il cmdlet seguente:
Install-Module -Name RobustCloudCommand -Force -
Importare l'elenco delle cartelle pubbliche generato nel passaggio 1 nella variabile $PFList eseguendo il cmdlet seguente:
$PFList = Import-Csv C:\Temp\PFList.csv -
Aggiungere le autorizzazioni per ogni cartella pubblica nella variabile $PFList eseguendo il cmdlet seguente. Questo cmdlet crea il log LogFileName che contiene i dettagli del cmdlet e gli eventuali errori che possono verificarsi.
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: In genere, questi cmdlet possono essere eseguiti per ore o persino giorni, a seconda del numero di oggetti modificati.
Ulteriori informazioni
Serve ancora assistenza? Passare a Microsoft Community.