none
Exchange 2016 Fehler bei der Installation der Postfachrolle RRS feed

  • Frage

  • Hallo.

    Wir haben bei einem Kunden einen virtuellen Windows 2012 Standard Server aufgesetzt, um dort Exchange 2016 aufzuspielen.

    Leider bricht die Installation beim Setup mit folgender Meldung ab:

    Fehler:
    Der folgende Fehler wurde generiert, als "$error.Clear();
              if (!$RoleIsDatacenter -and !$RoleIsDatacenterDedicated)
              {
                $createNewOab = $false;
                $oabName = $null;
                $oabAddressList = $null;
                $oabVdirs = $null;
                $oabGlobalWebDistribution = $false;
                $oabConfiguredAttributes = $null;

                Write-ExchangeSetupLog -Info ("Looking for an existing default OAB");
                $defaultOab = Get-OfflineAddressBook -DomainController:$RoleDomainController | where {$_.IsDefault};
                if ($defaultOab -ne $null)
                {
                  Write-ExchangeSetupLog -Info ("Found a default OAB: " + $defaultOab.Name + "; checking its version");
                  if ($defaultOab.ExchangeVersion.CompareTo([Microsoft.Exchange.Data.ExchangeObjectVersion]::Exchange2012) -lt 0)
                  {
                    $e15Oab = Get-OfflineAddressBook -DomainController:$RoleDomainController | where {$_.ExchangeVersion.CompareTo([Microsoft.Exchange.Data.ExchangeObjectVersion]::Exchange2012) -eq 0};
                    if ($e15Oab -eq $null)
                    {
                      Write-ExchangeSetupLog -Info ("Existing OAB is Exchange 2010 or older; will create a new OAB");
                      $createNewOab = $true;
                      $oabName = $defaultOab.Name + " (Ex2013)";
                      $oabAddressList = $defaultOab.AddressLists;
                      $oabGlobalWebDistribution = $defaultOab.GlobalWebDistributionEnabled;
                      $oabConfiguredAttributes = $defaultOab.ConfiguredAttributes;
                    }
                    else
                    {
                      Write-ExchangeSetupLog -Info ("Already has an existing Exchange 2013 OAB:" + $e15Oab.Name + "; will not create a new OAB");
                    }
                  }
                  else
                  {
                    Write-ExchangeSetupLog -Info ("Existing OAB is Exchange 2013 or newer; will not create a new OAB");
                  }
                }
                else
                {
                  Write-ExchangeSetupLog -Info ("Did not find a default OAB; will create one");
                  $createNewOab = $true;
                  
                  $oabName = [Microsoft.Exchange.Data.Directory.SystemConfiguration.OfflineAddressBook]::DefaultName;
                  $nonDefaultOabWithDefaultName = Get-OfflineAddressBook $oabName -DomainController:$RoleDomainController -ErrorAction SilentlyContinue | where {$_.IsDefault -eq $false};
                  if ($nonDefaultOabWithDefaultName -ne $null)
                  {
                    $createNewOab = $false;
                    Write-ExchangeSetupLog -Warning `
                      ("Offline address book " + `
                      $nonDefaultOabWithDefaultName.Name + `
                      " already exists: " + `
                      $nonDefaultOabWithDefaultName.DistinguishedName + `
                      ". Use administrative tools to change it to default OAB.");
                  }

                  $allGals = @(Get-GlobalAddressList -DomainController:$RoleDomainController | where {$_.IsDefaultGlobalAddressList});
                  if ($allGals -eq $null -or $allGals.Count -eq 0)
                  {
                    $createNewOab = $false;
                    Write-ExchangeSetupLog -Warning `
                      ("Couldn't find the default global address list. The default offline address book can't be created.");
                  }
                  elseif ($allGals.Count -gt 1)
                  {
                    $createNewOab = $false;
                    Write-ExchangeSetupLog -Warning `
                      ("Found " + $allGals.Count + " default global address lists. You can have only one default global address list in your organization. The default offline address book will not be created.");
                  }
                  else
                  {
                    $oabAddressList = $allGals[0];
                    Write-ExchangeSetupLog -Info ("OAB will be based on default GAL: " + $oabAddressList.Name);
                  }
                }

                if ($createNewOab)
                {
                  if ($oabGlobalWebDistribution -eq $false)
                  {
                    $currentAdSiteDn = (Get-ExchangeServer $RoleFqdnOrName -DomainController:$RoleDomainController).Site.DistinguishedName;
                    $allOabVdirs = @(Get-OabVirtualDirectory -ADPropertiesOnly -DomainController:$RoleDomainController);
                    $e15MinimumServerVersion = New-Object Microsoft.Exchange.Data.ServerVersion([Microsoft.Exchange.Data.Directory.SystemConfiguration.Server]::E15MinVersion);
                    if ($allOabVdirs -ne $null -and $allOabVdirs.Count -gt 0)
                    {
                      foreach ($oabVdir in $allOabVdirs)
                      {
                        if ([Microsoft.Exchange.Data.ServerVersion]::Compare($oabVdir.AdminDisplayVersion, $e15MinimumServerVersion) -gt 0)
                        {
                          $oabVdirSiteDn = (Get-ExchangeServer $oabVdir.Server -DomainController:$RoleDomainController).Site.DistinguishedName;
                          if ($oabVdirSiteDn -eq $currentAdSiteDn)
                          {
                            $oabVdirs = $oabVdir;
                            break;
                          }
                          elseif ($oabVdirs -eq $null)
                          {
                            $oabVdirs = $oabVdir;
                          }
                        }
                      }
                    }

                    if ($oabVdirs -ne $null)
                    {
                      Write-ExchangeSetupLog -Info ("OAB will be distributed to OAB virtual directory " + $oabVdirs.Name);
                    }
                    else
                    {
                      Write-ExchangeSetupLog -Info ("Could not find any OAB virtual directories; OAB will be configured without distribution.");
                    }
                  }

                  try
                  {
                    Write-ExchangeSetupLog -Info ("Creating new default OAB.");
                    $newOab = New-OfflineAddressBook `
                      -Name $oabName `
                      -AddressLists $oabAddressList `
                      -VirtualDirectories $oabVdirs `
                      -GlobalWebDistributionEnabled $oabGlobalWebDistribution `
                      -IsDefault $true `
                      -DomainController:$RoleDomainController;
                  }
                  catch [Microsoft.Exchange.Data.Directory.ADObjectAlreadyExistsException]
                  {
                    Write-ExchangeSetupLog -Warning ("Tried to create new default OAB but the object already exists; it may have been created by another instance of setup.");
                  }

                  if ($oabConfiguredAttributes -ne $null)
                  {
                    Write-ExchangeSetupLog -Info ("Setting OAB ConfiguredAttributes to: " + $oabConfiguredAttributes);
                    Set-OfflineAddressBook $newOab -ConfiguredAttributes $oabConfiguredAttributes -DomainController:$RoleDomainController;
                  }
                }
              }
            " ausgeführt wurde: "Microsoft.Exchange.Data.DataValidationException: 'Database' ist für 'UserMailbox' verbindlich.
       bei Microsoft.Exchange.Data.Directory.ADDataSession.ObjectsFromEntries[TResult](SearchResultEntryCollection entries, String originatingServerName, IEnumerable`1 properties, ADRawEntry dummyInstance)
       bei Microsoft.Exchange.Data.Directory.ADGenericPagedReader`1.GetNextPage()
       bei Microsoft.Exchange.Data.Directory.ADGenericPagedReader`1.<GetEnumerator>d__0.MoveNext()
       bei System.Linq.Buffer`1..ctor(IEnumerable`1 source)
       bei System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
       bei Microsoft.Exchange.Data.Directory.Recipient.ADRecipientObjectSession.FindOrganizationMailboxByCapability(OrganizationCapability capability, QueryFilter optionalFilter)
       bei Microsoft.Exchange.Data.Directory.OrganizationMailboxHelper.InternalGetOrganizationMailboxesByCapability(IRecipientSession session, OrganizationCapability capability, QueryFilter optionalFilter)
       bei Microsoft.Exchange.ProvisioningAgent.NewOfflineAddressbookProvisioningHandler.FindGeneratingMailbox(String domainController, OrganizationId orgId)
       bei Microsoft.Exchange.ProvisioningAgent.NewOfflineAddressbookProvisioningHandler.ProvisionDefaultProperties(IConfigurable readOnlyIConfigurable)
       bei Microsoft.Exchange.Provisioning.ProvisioningLayer.ProvisionDefaultPropertiesImpl(Task task, IConfigurable temporaryObject, IConfigurable dataObject, Boolean checkProvisioningLayerAvailability)
       bei Microsoft.Exchange.Provisioning.ProvisioningLayer.ProvisionDefaultProperties(Task task, IConfigurable temporaryObject, IConfigurable dataObject, Boolean checkProvisioningLayerAvailability)
       bei Microsoft.Exchange.Configuration.Tasks.NewTaskBase`1.InternalStateReset()
       bei Microsoft.Exchange.Configuration.Tasks.NewTenantADTaskBase`1.InternalStateReset()
       bei Microsoft.Exchange.Configuration.Tasks.Task.<ProcessRecord>b__b()
       bei Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)".

    Alle vorbereitende Maßnahmen sind problemlos durchgelaufen.

    Der virtuelle Server ist nur Mitglied der Domäne und bekommt nur den Exchange als "Dienstmerkmal".

    Aufgrund verschiedener Probleme musste der virtuelle Server neu aufgesetzt werden.

    Falls weitere Informationen benötigt werden, sagt bitte Bescheid.

    Ich hofe, dass Ihr mir helfen könnt.

    Freundliche Grüße,
    Jens

    Montag, 19. September 2016 06:09

Antworten

  • So, der Support hat es jetzt hinbekommen, leider habe ich nicht ganz mitbekommen, was die Lösung des Problems war. Es wurden aber einige Einträge mehr im ADSI Editor und in der Registrierung gelöscht.

    Danach ist das Setup endlich durchgelaufen.Gruß,
    Jens

    Dienstag, 20. September 2016 08:27

Alle Antworten

  • Moin,

    drei Fragen:

    1. - war da schon eine Installation, sprich, das ist der 2te Versuch?

    2. - ist in der Umgebung ein Exchange, wenn ja, welchen Stand hat der?

    3. - was ist die Installationsquelle, das CU3 aus einem Verzeichnis, per CMD oder GUI?

    ;)


    Gruß Norbert

    Montag, 19. September 2016 06:13
    Moderator
  • Moin, moin.

    Ja, der virtuelle Server mit einer Exchange Installation musste neu aufgesetzt werden.
    Nein, es ist der einzige Exchange Server.
    Die Installationsquelle ist die GUI, sprich das ISO wurde eingebunden und von dort aus das Setup gestartet.

    Freundliche Grüße,
    Jens

    Montag, 19. September 2016 06:30
  • Moin,

    3. - was ist die Installationsquelle, das CU3 aus einem Verzeichnis, per CMD oder GUI?

    ;)


    Gruß Norbert

    Pssst.. das gibts doch noch gar nicht ;>

    Der Fehler ist: Microsoft.Exchange.Data.DataValidationException: 'Database' ist für 'UserMailbox' verbindlich. Anscheinend hast du bereits einen Exchange User der die Exchange Attribute hat, aber keinen Inhalt.

    Montag, 19. September 2016 08:23
  • Hmm, okay.
    Welche Möglichkeit habe ich denn herauszufinden, welcher User dieser inne hat und kann ich diese ggf. entfernen, damit die Installation durchläuft..?

    Danke dir.

    Grüße,
    Jens

    Montag, 19. September 2016 08:33
  • Im Default User Container hast du ein paar Systemmailboxen, da würde ich als erstes mal schauen..
    Montag, 19. September 2016 09:02
  • Moin,

    sorry für die Verwirrung, ich meinte natürlich das CU2 , das CU3 erscheint demnächst.

    Bitte das ISO mounten, in ein Verzeichnis kopieren und das Setup von dort starten, es sei denn, der Server ist in EN.
    Steht übrigens auf der Seite vom Exchange-Team:
    https://blogs.technet.microsoft.com/exchange/2016/06/21/released-june-2016-quarterly-exchange-updates/

    Wenn das der Einzige (erste) Exchange ist, würde ich den Container aus dem AD werfen, ist offiziell aber so nicht supportet.

    ;)


    Gruß Norbert

    Montag, 19. September 2016 09:12
    Moderator
  • Ja, danke.
    Hatte bereits kontrolliert und einige Mailboxen gefunden, die ich nun gelöscht habe.
    Führe nun den Befehl: setup.exe /preparead /iacceptexchangeserverlicenseterms erneut aus und starte dann das Setup neu.

    Melde mich, wenn ich mehr Ergebnisse habe.

    Grüße,
    Jens

    Montag, 19. September 2016 09:12
  • OK, bin gespannt.

    ;)


    Gruß Norbert

    Montag, 19. September 2016 09:50
    Moderator
  • Leider ist erneut ein Fehler aufgetreten.
    Der Inhalt ist etwas anders, es wird aber auch wieder obiges aufgeführt:

    Fehler:
    Der folgende Fehler wurde generiert, als "$error.Clear();
              if (!$RoleIsDatacenter -and !$RoleIsDatacenterDedicated)
              {
              $mailboxId = [Microsoft.Exchange.Management.Migration.MigrationService.Batch.MigrationBatchIdParameter]::MigrationMailboxName;
              $dispName = "Microsoft Exchange Migration";
              $mbxs = @(Get-Mailbox -Arbitration -DomainController $RoleDomainController -Filter {Name -eq $mailboxId});
              $migrationMailbox = $null;

              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=$mailboxId.");
              $arbUsers = @(Get-User -Filter {Name -eq $mailboxId} -IgnoreDefaultScope -ResultSize 1);
              if ($arbUsers.Length -ne 0)
              {
              Write-ExchangeSetupLog -Info ("Enabling mailbox $mailboxId.");
              $migrationMailbox = Enable-Mailbox -Arbitration -Identity $arbUsers[0] -DisplayName $dispName -database $dbs[0].Identity;
              }
              }
              }
              else
              {
              $migrationMailbox = $mbxs[0];
              }

              # Set the Organization Capabilities and quotas needed for this mailbox
              if ($migrationMailbox -ne $null)
              {
              Set-Mailbox -Arbitration -Identity $migrationMailbox -ProhibitSendReceiveQuota 300MB -ProhibitSendQuota 300MB -IssueWarningQuota 150MB -RecoverableItemsQuota 30GB -RecoverableItemsWarningQuota 20GB -UseDatabaseQuotaDefaults $false -SCLDeleteEnabled $false -SCLJunkEnabled $false -SCLQuarantineEnabled $false -SCLRejectEnabled $false -HiddenFromAddressListsEnabled $true -DisplayName $dispName -Management:$true -Force;
              }
              else
              {
              Write-ExchangeSetupLog -Info ("Cannot find migration mailbox with name=$mailboxId.");
              }
              }
            " ausgeführt wurde: "Microsoft.Exchange.Data.DataValidationException: 'Database' ist für 'UserMailbox' verbindlich.".

    Fehler:
    Der folgende Fehler wurde generiert, als "$error.Clear();
              if (!$RoleIsDatacenter -and !$RoleIsDatacenterDedicated)
              {
              $mailboxId = [Microsoft.Exchange.Management.Migration.MigrationService.Batch.MigrationBatchIdParameter]::MigrationMailboxName;
              $dispName = "Microsoft Exchange Migration";
              $mbxs = @(Get-Mailbox -Arbitration -DomainController $RoleDomainController -Filter {Name -eq $mailboxId});
              $migrationMailbox = $null;

              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=$mailboxId.");
              $arbUsers = @(Get-User -Filter {Name -eq $mailboxId} -IgnoreDefaultScope -ResultSize 1);
              if ($arbUsers.Length -ne 0)
              {
              Write-ExchangeSetupLog -Info ("Enabling mailbox $mailboxId.");
              $migrationMailbox = Enable-Mailbox -Arbitration -Identity $arbUsers[0] -DisplayName $dispName -database $dbs[0].Identity;
              }
              }
              }
              else
              {
              $migrationMailbox = $mbxs[0];
              }

              # Set the Organization Capabilities and quotas needed for this mailbox
              if ($migrationMailbox -ne $null)
              {
              Set-Mailbox -Arbitration -Identity $migrationMailbox -ProhibitSendReceiveQuota 300MB -ProhibitSendQuota 300MB -IssueWarningQuota 150MB -RecoverableItemsQuota 30GB -RecoverableItemsWarningQuota 20GB -UseDatabaseQuotaDefaults $false -SCLDeleteEnabled $false -SCLJunkEnabled $false -SCLQuarantineEnabled $false -SCLRejectEnabled $false -HiddenFromAddressListsEnabled $true -DisplayName $dispName -Management:$true -Force;
              }
              else
              {
              Write-ExchangeSetupLog -Info ("Cannot find migration mailbox with name=$mailboxId.");
              }
              }
            " ausgeführt wurde: "Microsoft.Exchange.Data.DataValidationException: 'Database' ist für 'UserMailbox' verbindlich.
       bei Microsoft.Exchange.Configuration.Tasks.Task.WriteError(Exception exception, ErrorCategory category, Object target, Boolean reThrow, 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.<ProcessRecord>b__b()
       bei Microsoft.Exchange.Configuration.Tasks.Task.InvokeRetryableFunc(String funcName, Action func, Boolean terminatePipelineIfFailed)".

    Gruß,
    Jens
    • Bearbeitet Jens aunds Montag, 19. September 2016 11:56
    Montag, 19. September 2016 11:56
  • Guten Morgen.

    Ich habe jetzt des Microsoft Support kontaktiert, die sich gerade der Sache angenommen haben. Mal sehen, was die dazu sagen werden.

    Gruß,
    Jens

    Dienstag, 20. September 2016 06:27
  • So, der Support hat es jetzt hinbekommen, leider habe ich nicht ganz mitbekommen, was die Lösung des Problems war. Es wurden aber einige Einträge mehr im ADSI Editor und in der Registrierung gelöscht.

    Danach ist das Setup endlich durchgelaufen.Gruß,
    Jens

    Dienstag, 20. September 2016 08:27
  • Moin,

    danke für die Rückmeldung.

    Weiterhin viel Erfolg.

    ;)


    Gruß Norbert

    Dienstag, 20. September 2016 09:14
    Moderator