Exchange 2016: Fehler bei der Installation

Falls euch bei der Installation von Exchange 2016 auch folgende Fehler passiert kann ich euch vieleicht ein bisschen Suchen ersparen:

image

Fehler:
Der folgende Fehler wurde generiert, als „$error.Clear();
Set-WERRegistryMarkers;
“ ausgeführt wurde: „Microsoft.Exchange.Provisioning.ProvisioningBrokerException: Fehler bei der Initialisierung der Bereitstellungsebene: ‚“Fehler bei der Initialisierung des Skript-Agents: „Datei nicht gefunden: ‚C:\Program Files\Microsoft\Exchange Server\V15\Bin\CmdletExtensionAgents\ScriptingAgentConfig.xml‘.““‚ —> Microsoft.Exchange.Provisioning.ProvisioningException: „Fehler bei der Initialisierung des Skript-Agents: „Datei nicht gefunden: ‚C:\Program Files\Microsoft\Exchange Server\V15\Bin\CmdletExtensionAgents\ScriptingAgentConfig.xml‘.““ —> System.IO.FileNotFoundException: „Datei nicht gefunden: ‚C:\Program Files\Microsoft\Exchange Server\V15\Bin\CmdletExtensionAgents\ScriptingAgentConfig.xml‘.“
bei Microsoft.Exchange.ProvisioningAgent.ScriptingAgentConfiguration.Initialize(String xmlConfigPath)
bei Microsoft.Exchange.ProvisioningAgent.ScriptingAgentConfiguration..ctor(String xmlConfigPath)
— Ende der internen Ausnahmestapelüberwachung —
bei Microsoft.Exchange.ProvisioningAgent.ScriptingAgentConfiguration..ctor(String xmlConfigPath)
bei Microsoft.Exchange.ProvisioningAgent.ScriptingAgentClassFactory.get_Configuration()
bei Microsoft.Exchange.ProvisioningAgent.ScriptingAgentClassFactory.GetSupportedCmdlets()
bei Microsoft.Exchange.Provisioning.ProvisioningBroker.BuildHandlerLookupTable(CmdletExtensionAgent[] enabledAgents, Exception& ex)
— Ende der internen Ausnahmestapelüberwachung —
bei Microsoft.Exchange.Provisioning.ProvisioningLayer.GetProvisioningHandlersImpl(Task task)
bei Microsoft.Exchange.Provisioning.ProvisioningLayer.GetProvisioningHandlers(Task task)
bei Microsoft.Exchange.Configuration.Tasks.Task.<BeginProcessing>b__4()
bei Microsoft.Exchange.Configuration.Tasks.Task.InvokeNonRetryableFunc(Action func, Boolean terminatePipelineIfFailed)“.

Der relevante Teil ist folgender:

Datei nicht gefunden: ‚C:\Program Files\Microsoft\Exchange Server\V15\Bin\CmdletExtensionAgents\ScriptingAgentConfig.xml‘

Hintergrund: Ich habe versucht Exchange 2016 in einer vorhandenen Exchange 2013 Organisation mit aktiviertem Scripting Agent zu installieren. Die Datei ScriptingAgentConfig.xml kann es somit auf den gerade in der Installation befindlichen Exchange 2016 Servern nicht geben.

Fehlerbehebung: Da die Installation von Exchange 2016 jetzt nur noch noch unvollständig beendet werden kann, kann die Datei ScriptingAgentConfig.xml von einem vorhandenen Exchange Server in das entsprechende Verzeichnis auf dem Exchange 2016 Server kopiert werden. Danach lässt sich das Setup fortsetzen.

Einfach die Datei aus dem oben angegebenen Pfad von einem vorhanden Exchange Server in das entsprechende Verzeichnis auf dem unvollständig installierten Server kopieren und das Setup neustarten.

image

image

Nach dem Kopieren der Datei läuft die Installation sauber durch.

image

5 Gedanken zu „Exchange 2016: Fehler bei der Installation“

  1. Guten Morgen,
    ein ähnliches Problem, das jedoch dazu passt – und vielleicht hilft es ja jemandem vor dem Verzweifeln weiter.

    Update auf CU20 brach mehrfach ab – fehlende Dateien:
    C:\Program Files\Microsoft\Exchange Server\V15\bin\ManageScheduledTask.ps1
    C:\Program Files\Microsoft\Exchange Server\V15\bin\de-DE\ManageScheduledTask.Strings.psd1
    C:\Program Files\Microsoft\Exchange Server\V15\bin\EnterpriseServiceEndpointsConfig.xml

    Diese konnten im Installationsimage des CU20 gefunden werden, wobei es kein „de-DE“-Verzeichnis gab (anlegen). Bei der Datei war auch die DE-Version im Image zu nehmen.

    Anschließend lief es dann.
    Sonnige Grüße – Karsten

    Antworten
  2. Hallo Frank,
    folgender Fehler kommt bei der Installation, bitte um Unterstützung.
    Fehler:
    Der folgende Fehler wurde generiert, als „$error.Clear();
    if ($RoleIsDatacenter -ne $true -and $RoleIsDatacenterDedicated -ne $true)
    {
    if (Test-ExchangeServersWriteAccess -DomainController $RoleDomainController -ErrorAction SilentlyContinue)
    {
    $sysMbx = $null;
    $name = „SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}“;
    $dispName = „Microsoft Exchange“;
    Write-ExchangeSetupLog -Info („Retrieving mailboxes with Name=$name.“);
    $mbxs = @(Get-Mailbox -Arbitration -Filter {name -eq $name} -IgnoreDefaultScope -ResultSize 1 );
    if ($mbxs.Length -eq 0)
    {
    Write-ExchangeSetupLog -Info („Retrieving mailbox databases on Server=$RoleFqdnOrName.“);
    $dbs = @(Get-MailboxDatabase -Server:$RoleFqdnOrName -DomainController $RoleDomainController);
    if ($dbs.Length -ne 0)
    {
    Write-ExchangeSetupLog -Info („Retrieving users with Name=$name.“);
    $arbUsers = @(Get-User -Filter {name -eq $name} -IgnoreDefaultScope -ResultSize 1);
    if ($arbUsers.Length -ne 0)
    {
    Write-ExchangeSetupLog -Info („Enabling mailbox $name.“);
    $sysMbx = Enable-Mailbox -Arbitration -Identity $arbUsers[0] -DisplayName $dispName -database $dbs[0].Identity;
    }
    }
    }
    else
    {
    if ($mbxs[0].DisplayName -ne $dispName )
    {
    Write-ExchangeSetupLog -Info („Setting DisplayName=$dispName.“);
    Set-Mailbox -Arbitration -Identity $mbxs[0] -DisplayName $dispName -Force;
    }
    $sysMbx = $mbxs[0];
    }

    # Set the Organization Capabilities needed for this mailbox
    if ($sysMbx -ne $null)
    {
    # We need 1 GB for uploading large OAB files to the organization mailbox
    Write-ExchangeSetupLog -Info („Setting mailbox properties.“);
    set-mailbox -Arbitration -identity $sysMbx -UMGrammar:$true -OABGen:$true -GMGen:$true -ClientExtensions:$true -MailRouting:$true -MessageTracking:$true -PstProvider:$true -MaxSendSize 1GB -Force;

    Write-ExchangeSetupLog -Info („Configuring offline address book(s) for this mailbox“);
    Get-OfflineAddressBook | where {$_.ExchangeVersion.CompareTo([Microsoft.Exchange.Data.ExchangeObjectVersion]::Exchange2012) -ge 0 -and $_.GeneratingMailbox -eq $null} | Set-OfflineAddressBook -GeneratingMailbox $sysMbx.Identity;
    }
    else
    {
    Write-ExchangeSetupLog -Info („Cannot find arbitration mailbox with name=$name.“);
    }
    }
    else
    {
    Write-ExchangeSetupLog -Info „Skipping creating E15 System Mailbox because of insufficient permission.“
    }
    }
    “ ausgeführt wurde: „Microsoft.Exchange.Data.DataValidationException: ‚Database‘ ist für ‚UserMailbox‘ verbindlich.“.

    Fehler:
    Der folgende Fehler wurde generiert, als „$error.Clear();
    if ($RoleIsDatacenter -ne $true -and $RoleIsDatacenterDedicated -ne $true)
    {
    if (Test-ExchangeServersWriteAccess -DomainController $RoleDomainController -ErrorAction SilentlyContinue)
    {
    $sysMbx = $null;
    $name = „SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}“;
    $dispName = „Microsoft Exchange“;
    Write-ExchangeSetupLog -Info („Retrieving mailboxes with Name=$name.“);
    $mbxs = @(Get-Mailbox -Arbitration -Filter {name -eq $name} -IgnoreDefaultScope -ResultSize 1 );
    if ($mbxs.Length -eq 0)
    {
    Write-ExchangeSetupLog -Info („Retrieving mailbox databases on Server=$RoleFqdnOrName.“);
    $dbs = @(Get-MailboxDatabase -Server:$RoleFqdnOrName -DomainController $RoleDomainController);
    if ($dbs.Length -ne 0)
    {
    Write-ExchangeSetupLog -Info („Retrieving users with Name=$name.“);
    $arbUsers = @(Get-User -Filter {name -eq $name} -IgnoreDefaultScope -ResultSize 1);
    if ($arbUsers.Length -ne 0)
    {
    Write-ExchangeSetupLog -Info („Enabling mailbox $name.“);
    $sysMbx = Enable-Mailbox -Arbitration -Identity $arbUsers[0] -DisplayName $dispName -database $dbs[0].Identity;
    }
    }
    }
    else
    {
    if ($mbxs[0].DisplayName -ne $dispName )
    {
    Write-ExchangeSetupLog -Info („Setting DisplayName=$dispName.“);
    Set-Mailbox -Arbitration -Identity $mbxs[0] -DisplayName $dispName -Force;
    }
    $sysMbx = $mbxs[0];
    }

    # Set the Organization Capabilities needed for this mailbox
    if ($sysMbx -ne $null)
    {
    # We need 1 GB for uploading large OAB files to the organization mailbox
    Write-ExchangeSetupLog -Info („Setting mailbox properties.“);
    set-mailbox -Arbitration -identity $sysMbx -UMGrammar:$true -OABGen:$true -GMGen:$true -ClientExtensions:$true -MailRouting:$true -MessageTracking:$true -PstProvider:$true -MaxSendSize 1GB -Force;

    Write-ExchangeSetupLog -Info („Configuring offline address book(s) for this mailbox“);
    Get-OfflineAddressBook | where {$_.ExchangeVersion.CompareTo([Microsoft.Exchange.Data.ExchangeObjectVersion]::Exchange2012) -ge 0 -and $_.GeneratingMailbox -eq $null} | Set-OfflineAddressBook -GeneratingMailbox $sysMbx.Identity;
    }
    else
    {
    Write-ExchangeSetupLog -Info („Cannot find arbitration mailbox with name=$name.“);
    }
    }
    else
    {
    Write-ExchangeSetupLog -Info „Skipping creating E15 System Mailbox because of insufficient permission.“
    }
    }
    “ ausgeführt wurde: „Microsoft.Exchange.Data.DataValidationException: ‚Database‘ ist für ‚UserMailbox‘ verbindlich.
    bei Microsoft.Exchange.Configuration.Tasks.Task.ThrowError(Exception exception, ErrorCategory errorCategory, Object target, String helpUrl)
    bei Microsoft.Exchange.Configuration.Tasks.Task.WriteError(Exception exception, ErrorCategory category, Object target, Boolean reThrow)
    bei Microsoft.Exchange.Configuration.Tasks.DataAccessTask`1.Validate(TDataObject dataObject)
    bei Microsoft.Exchange.Configuration.Tasks.SetTaskBase`1.InternalValidate()
    bei Microsoft.Exchange.Configuration.Tasks.SetRecipientObjectTask`3.InternalValidate()
    bei Microsoft.Exchange.Management.Common.SetMailEnabledRecipientObjectTask`3.InternalValidate()
    bei Microsoft.Exchange.Management.RecipientTasks.SetUserBase`3.InternalValidate()
    bei Microsoft.Exchange.Management.RecipientTasks.SetMailboxBase`3.InternalValidate()
    bei Microsoft.Exchange.Management.RecipientTasks.SetMailbox.InternalValidate()
    bei Microsoft.Exchange.Configuration.Tasks.Task.b__91_1()
    bei Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)“.

    Antworten

Schreibe einen Kommentar