The error (9327, 9323 offline address list) is often found in the event log of the Exchange server that generates the offline address book:
MSExchangeSA
9327Some entries in the offline address list "\Global address list" of OALGen have been omitted. To determine which entries are affected, the event logging for the offline address generator must be set to at least "Medium".
- \Default offline address book
To determine what is causing the warning, the diagnostic level must be raised, in some cases this message then appears as the cause:
MSExchangeSA
9323Entry 'User' has invalid or expired e-mail certificates. These certificates are not included in the offline address list for '\Global address list'.
- \Default offline address book
So the cause is expired certificates that have been published in the Active Directory, now you can of course go through every user that is reported and delete the corresponding certificates, or you can use the script that I have created.
The Quest Active Directory Tools are required to execute the script. The tools can be downloaded here free of charge:
http://www.quest.com/powershell/activeroles-server.aspx
In addition, the Exchange Management Shell must be installed on the computer that executes the script.
The script increases the diagnosis level and then starts a generation of the offline address book. It then searches for all affected users and removes the invalid certificates if required.
In principle, the script should also work with Exchange 2013, but I have not yet tested this.
You can download the script here:
[wpdm_file id=6]
Hallo Frank,
also auch in der QuestShell bekomme ich nur Fehler:
Set-EventLogLevel : The Event Source ‚MSExchangeSA‘ was not found.
At C:\Service\Clean-ExpiredCertificates.ps1:23 char:13
+ $loglevel = Set-EventLogLevel -Identity $generator -level medium
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (\MSExchangeSA\OAL Generator:ECIdParameter) [Set-EventLogLevel], DataSource
OperationException
+ FullyQualifiedErrorId : [Server=APP006,RequestId=b02d07ba-1d13-4782-b1e9-a2224952549a,TimeStamp=19.12.2018
12:05:13] [FailureCategory=Cmdlet-DataSourceOperationException] C10D6994,Microsoft.Exchange.Management.EventLogTas
ks.SetEventLogLevel
Starte OAB Generierung auf Server
Warte bis das OAB erzeugt wurde
Get-EventLog : Cannot validate argument on parameter ‚ComputerName‘. The argument is null or empty. Provide an
argument that is not null or empty, and then try the command again.
At C:\Service\Clean-ExpiredCertificates.ps1:31 char:44
+ $checkevent = Get-EventLog -ComputerName $oabserver -LogName Applic …
+ ~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-EventLog], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.GetEventLogCommand
Hast du eine Idee warum das so sein mag?
Vielen Dank
Guten Abend,
gibt es zu den Questtools evtl. einen neuen Link? Dieser im Beitrag scheint nicht mehr richtig zu sein.
Hallo Roland,
die Quest Tools gibt es mittlerweile so nicht mehr. Bei Gelegenheit werde ich das Script umbauen, damit die Quest Tools nicht mehr erforderlich sind. Hier gibt es die Tools noch zum Download:
https://www.powershelladmin.com/wiki/Quest_ActiveRoles_Management_Shell_Download
Gruß,
Frank
Hallo Frank,
ich erhalte diese Meldungen:
Get-EventLog : Keine Übereinstimmungen gefunden.
Bei C:\users\xxxxxxxGLOBAL\desktop\Clean-ExpiredCertificates.ps1:50 Zeichen:24
+ $events = Get-EventLog <<<< -ComputerName $oabserver -LogName Application -InstanceId 2147492971 -after $now
+ CategoryInfo : ObjectNotFound: (:) [Get-EventLog], ArgumentException
+ FullyQualifiedErrorId : GetEventLogNoEntriesFound,Microsoft.PowerShell.Commands.GetEventLogCommand
In einem NULL-Array kann kein Index erstellt werden.
Bei C:\users\xxxxxxxxxGLOBAL\desktop\Clean-ExpiredCertificates.ps1:53 Zeichen:36
+ $user = $event.ReplacementStrings[ <<<< 0]
+ CategoryInfo : InvalidOperation: (0:Int32) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
Get-QADUser : Invalid identity
Bei C:\users\xxxxxxxGLOBAL\desktop\Clean-ExpiredCertificates.ps1:54 Zeichen:29
+ $expiredcerts = Get-QADUser <<<< "$user" | Get-QADCertificate -Valid:$false
+ CategoryInfo : NotSpecified: (:) [Get-QADUser], Exception
+ FullyQualifiedErrorId : Quest.ActiveRoles.ArsPowerShellSnapIn.Powershell.Cmdlets.GetUserCmdlet
Guten Morgen,
nettes Tool was sicherlich hilfreich ist, jedoch erhalte ich folgende Fehler nach „OAB Generierung ist abgeschlossen [in grün]“:
Get-EventLog : Keine Übereinstimmungen gefunden.
…..
[ : In einem NULL-Array kann kein Index erstellt werden.
….
Get-QADUser : Die Benennung „Get-QADUser“ wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder
es ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern
halten), und wiederholen Sie den Vorgang. …..
Irgend eine Idee?
Hallo,
Du musst wie im Artikel beschrieben die Quest Tools runterlaufen und installieren, dann das Script aus der Quest Shell ausführen.
Gruß, Frank