We are installing Exchange 2019 CU4 into Server Core 2019 for the first time in a greenfield setting.
We a strange snag that turned up very little in the way of search results on the error.
The organization name, First,Organization, can’t be used because it contains invalid characters.
The setup command from PowerShell was straightforward but nothing we could find led to the “solution”.
In the end, it was actually quite simple, we broke down the command structure into multiple steps instead of trying to run it all at once.
.\Setup.exe /IAcceptExchangeServerLicenseTerms /PrepareSchema .\Setup.exe /IAcceptExchangeServerLicenseTerms /PrepareAD /OrganizationName:"First Organization" .\Setup.exe /m:install /roles:m /IAcceptExchangeServerLicenseTerms /InstallWindowsComponents ` /TargetDir:"E:\ProgramFiles\Microsoft\Exchange Server\V15\" ` /LogFolderPath:"L:\ProgramFiles\Microsoft\Exchange Server\V15\LOGS" ` /MdbName:"M:\ProgramFiles\Microsoft\Exchange Server\V15\Mailboxes\Mailbox Database 2020011801" The following is what we will see once the third step has started and is running:
Another strange behaviour we hit when running the Setup GUI, and started our adventure down the above rabbit hole, was this:
Exchange 2019 Setup GUI on Windows Server 2019 Core: Browse For Folder Blank
The above was what we found no matter what we tried. The partitions were prepared ahead of time for each of the Exchange components as shown in the above PowerShell but to no avail could we get the installer to show any drive options. This one must be a bug that we suspect is related to installing on Server Core. 🙁
Prerequisites for Exchange 2019 CU4 to install:
- .NET 4.8 Framework
- Server Core Install Start NOTE: ndp48-x86-x64-allos-enu.exe /Q
- The installer must be run with the /Quiet switch on Server Core
- A reboot will indicate the process is complete.
- Visual C++ Redistributable Packages for Visual Studio 2013
- Unified Communications Managed API 4.0
- When installing on Windows Server Core, you must use the installation package located in \UCMARedist on distributed media.
We chose to use the option to install the necessary OS components in the above command line so no additional steps were required. It worked quite well.
Once complete, to launch the Exchange Management Shell we run the following from the command line _after_ logging off and back on again:
LaunchEMS
From there we move into setting up Exchange for the e-mail domain(s).
The VM setup that we are using is as follows:
- Hyper-V VM
- Generation 2
- 2x vCPUs
- 16GB vRAM
- VHDX layout:
- OS
- Application Install Location
- Mailbox Databases
- Log Files
Exchange 2019 Install Routine Status via Task Manager (TaskMgr.EXE)
At 16GB of virtual RAM, Exchange is not weighing in too heavy relative to the virtual RAM we would typically assign to a Remote Desktop Session Host for example.
Two virtual CPUs (vCPUs) may be a bit light though. The next install run we’ll double that to four vCPUs with the same amount of memory. With Exchange 2016 we are able to back off the amount of vRAM
Exchange Logs
We keep the logs on their own as they can cause a lot of fragmentation over time within a VHDX with a single partition.
Once the fragmentation threshold has been reached the Exchange Mailbox Database will refuse to mount.
When it does, the simplest thing to do is to set up a new VHDX and partition and move the database to that partition. It will then mount without issue.
Conclusion
Exchange 2019 Successfully Installed!
Now that we have our Exchange server installed it’s on to configure the e-mail domains and the URI settings for all of the services.
Thanks for reading! 🙂
Philip Elder
Microsoft High Availability MVP
MPECS Inc.
www.s2d.rocks !
Our Web Site
PowerShell and CMD Guides