Problembeschreibung
Wenn Sie Skripts oder Cmdlets mithilfe von Microsoft Exchange Online über Remote-PowerShell ausführen, um große Datensätze zu ändern, treten entweder die folgenden Symptome oder beide auf:
-
Die Ausführung von Skripts oder Cmdlets dauert sehr lange.
-
In PowerShell wird die folgende Einschränkungswarnung Exchange Online angezeigt:
WARNUNG: Es wird eine Mikroverzögerung angewendet. Tatsächlich verzögert: <X> Msec, ...
WARNUNG: Es wird eine Mikroverzögerung angewendet. Tatsächlich verzögert: <X> MSEC, Erzwungen
Ursache
Es handelt sich hierbei um ein beabsichtigtes Verhalten. Die Einschränkung wird verwendet, um böswillige oder unbeabsichtigte Angriffe auf den Dienst zu verhindern, die sich auf Vereinbarungen zum Servicelevel auswirken können. Sie können die Warnmeldung bedenkenlos ignorieren.
Problemumgehung
Um dieses Verhalten zu probieren, probieren Sie die folgenden Optionen in der angegebenen Reihenfolge aus.
Option 1
Führen Sie eine Self-Help-Diagnose im Microsoft 365 Admin Center aus, um die Richtlinie Exchange Remote-PowerShell-Einschränkungsrichtlinie für Ihren Mandanten zu aktualisieren. Details finden Sie unter Selbsthilfediagnose für Probleme inExchange Online und Outlook.
Option 2
Verwenden Exchange Online PowerShell V2-Cmdlets zum Ausführen des Auftrags. Details finden Sie unter Informationen zum Exchange Online PowerShell V2-Moduls.
Option 3
Fügen Sie den Skripts oder Cmdlets das folgende Ruhezustandelement hinzu. Durch dieses Element wird das Skript oder Cmdlet innerhalb der Grenzen der Einschränkungsgrenze verlangsamt.
Start-Sleep -m <Time in milliseconds>
Im folgenden Beispiel wird die Liste der Postfächer, die mit dem cmdlet Get-Mailbox abgerufen werden, in einer Variablen gespeichert. Diese Variable wird zum Ausführen einer Aktion für alle Postfächer verwendet. Diese Art von Auftrag wird in der Regel gedrosselt. Durch Hinzufügen des Ruhezustandelements zum Cmdlet können Sie versuchen, die Grenzen des Einschränkungslimits zu überschreiten.
$MB=get-mailbox -resultsize unlimited $MB | %{Set-Mailbox $_.identity -CustomAttribute8 "Test"; Start-Sleep -m 500}
Option 4
Verwenden Sie das RobustCloudCommand-Modul, um die Skripts oder Cmdlets auszuführen. Sie können dieses Modul mithilfe des integrierten Install-Module installieren.
Hier sehen Sie ein Beispiel für den Prozess, bei dem das RobustCloudCommand-Modul zum Hinzufügen von Berechtigungen zu mehreren öffentlichen Ordnern verwendet wird:
-
Exportieren Sie die Liste der öffentlichen Ordner in die PFList.csv, indem Sie das folgende Cmdlet ausführen:
Invoke-Command -Scriptblock {Get-PublicFolder -Recurse -Resultsize Unlimited | Select-Object -property Name,Identity} -Session (Get-Pssession) |Export-csv -Path C:\Temp\PFList.csv -NoTypeInformation -
Installieren Sie das RobustCloudCommand-Modul, indem Sie das folgende Cmdlet
ausführen:Install-Module -Name RobustCloudCommand -Force -
Importieren Sie die in Schritt 1 generierte Liste der öffentlichen Ordner in die Variable $PFList, indem Sie das folgende Cmdlet ausführen:
$PFList = Import-Csv C:\Temp\PFList.csv -
Fügen Sie Berechtigungen für jeden öffentlichen Ordner in der Variablen $PFList hinzu, indem Sie das folgende Cmdlet ausführen. Dieses Cmdlet erstellt das LogFileName-Protokoll mit den Details des Cmdlets und allen Fehlern, die möglicherweise auftreten.
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
Hinweis: In der Regel können diese Cmdlets abhängig von der Anzahl der geänderten Objekte stunden- oder sogar tagelang ausgeführt werden.
Weitere Informationen
Weitere Hilfe erforderlich? Besuchen Sie die Microsoft Community.