> For the complete documentation index, see [llms.txt](https://docs.plenit.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.plenit.com/docs-en/support/tutorials/windows/how-to-upgrade-windows-server-2008-to-windows-server-2019.md).

# How to upgrade Windows Server 2008 to Windows Server 2019

In this tutorial we show you how to update a server with **Windows Server 2008 or Windows Server 2008 R2 to Windows Server 2019** in an orderly and safe way. We will see which upgrade paths are possible, what preliminary steps should be taken before starting, and how to complete the process by going through the necessary intermediate versions.

### Context: end of support for Windows Server 2008/2008 R2

The operating system **Windows Server 2008 or Windows Server 2008 R2** [stopped being supported in January 2020](https://learn.microsoft.com/en-us/troubleshoot/windows-server/windows-server-eos-faq/end-of-support-windows-server-2008-2008r2) and therefore it is more than necessary **to retire** all the [servers](https://jotelulu.com/servicios/servidores) that we have deployed with this version of the giant of Redmond's server operating system.

The fact that these systems are no longer supported means that **there are no longer continuous updates** for services, roles, etc. for this operating system, which leads to a major security threat, since security updates will be minimal, if not nonexistent, while **threats will grow.**

### Why upgrade to a newer version

For this reason, the **version upgrade** must be done, to an operating system whose “end of life” or “end of support” date is as far away as possible.

In this case, we are considering jumping to the penultimate version of Windows Server released on the market, Windows Server 2019, since many technicians **tend to go one version behind to ensure a certain degree of stability**, since they do not run into problems that have not yet been documented, detected, etc.

Windows Server 2019 is very mature, it has a **support lifecycle until 2025** and an **extended support period until 2029,** with the possibility of being extended later, which would guarantee us 7 years of service under continuous updates, security patching, etc.

### Possible upgrade paths

The problem we have is that you cannot make a direct jump from Windows Server 2008 to Windows Server 2019, but instead we will have to make at least one intermediate jump.

For example, if we start from Windows Server 2008, we can jump to Windows Server 2012, from there jump to Windows Server 2016, and from this system jump to Windows Server 2019, which would be a real journey.

If we jump from Windows Server 2008 R2, we can jump to Windows Server 2012 R2 and from there jump to Windows Server 2019, which is the shortest path.

To illustrate this, and to know which route you should take to carry out the upgrade of your systems, we leave the following chart that represents it in a very simple way and that is created based on Microsoft documentation.

<figure><img src="https://3894148717-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxksPMyYRDCe4qKkhbpcY%2Fuploads%2Fy6FhR7Ozr633zpscriCg%2Fsaltos_version_windows_server_plenit_4.png?alt=media&amp;token=15dd8c5c-0f64-4bec-992b-c851674d89d0" alt=""><figcaption><p>Version jumps from Windows Server 2008 to Windows Server 2019</p></figcaption></figure>

### Previous recommendation: migrating is better than upgrading

Taking advantage of the fact that we are going to switch section, I will allow myself the license of recommending that, whenever possible, an upgrade should not be done, but rather a migration to a new server. In this way we ensure there will be no service compatibility problems (or there should not be), that there will be no service loss problems (since we can do all the necessary tests), and finally, we will put the new server into production right as we stop the old one. Lastly, we also won't run into the upgrade process leaving residual files and other junk inside the file system.

### How do you upgrade your Windows Server 2008 servers to Windows Server 2019?

#### Prerequisites or pre-configuration

To successfully complete this tutorial and be able to **upgrade your Windows Server 2008 servers to Windows Server 2019**, you will need:

* **A server** with Windows Server 2008 or Windows Server 2008 R2.
* **License for the** operating systems used.
* **Images of the CD/DVD** installation media that will be installed.
* **Backups** of the server that is going to be upgraded in case the process needs to be rolled back.

#### Step 1. Preparing the upgrade

The **installation process** is actually **quite simple**, but like anything we want to do in the world of computing, it requires some points that w**e need to plan and prepare** so that we don't get any surprises during the process.

The first thing we need to look at is whether we are going to have any **compatibility problems with the services and applications** we use. To do this, we can review the manufacturer's documentation, although it is always advisable to do a **pilot test** with a development or pre-production server to see that everything goes according to the documentation.

Of course, we must **check that the operating system specifications** to which we are going to upgrade support all the hardware we have, and that we have the necessary CPU, RAM, or disk space to be able to run the system without problems.

The next point is **to have updated backups**s. In fact, I would have a couple of them, one from a few days before and another from the moment just before carrying out the upgrade, because we all know the saying “better safe than sorry.”

Lastly, we should **extract information about the system**, including the current system version, network settings, etc. All of this will help us reconfigure the system in case any parameter gets misconfigured during the upgrade process.

In addition, **checking the current system will tell us what jumps we need to make**, although by this point we should have a fairly clear idea.

To check the operating system we have installed, there are several ways to do it, but personally I prefer to do it from the command line. Therefore, we should **go to a CMD console and run “systeminfo”** (1).

As you can see in the screenshot, **the system returns the “operating system name”** (2), which will indicate the full version, which in this example is “Windows Server 2008 R2 Standard”.

<figure><img src="https://3894148717-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxksPMyYRDCe4qKkhbpcY%2Fuploads%2FSvfc9XHBUkXTAoHsiwIO%2Fimage.png?alt=media&amp;token=0b8af619-4886-4198-947c-36ed50c763d4" alt=""><figcaption><p>Step 1. We check the operating system version we have on the machine</p></figcaption></figure>

Once we have obtained this information, we move on to collecting information about the system configuration and the network interface configuration.

We will do this in this case from CMD, but in the next jump we will see how to do it from PowerShell to look at both options.

To do this option **the following commands must be run (3)**:

```cmd
mkdir c:\info
systeminfo > c:\info\systeminfo.txt
ipconfig /all > c:\info\ipconfig.txt
```

Once this is done, we must **go to the folder** (4) to check that the files have been created and **check the contents of the files** (5) to see whether the information has been collected correctly.

<figure><img src="https://3894148717-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxksPMyYRDCe4qKkhbpcY%2Fuploads%2FmFvqTpspgAJyG1YlDmmW%2Fimage.png?alt=media&amp;token=935a22a7-d187-459a-addf-db1436c5a568" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3894148717-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxksPMyYRDCe4qKkhbpcY%2Fuploads%2FPIfMrZHL5Y3NG7XseW0u%2Fimage.png?alt=media&amp;token=d170a467-840d-44ab-b2a4-1ec7d6d461cb" alt=""><figcaption><p>Step 1. We extract information from the operating system and the network</p></figcaption></figure>

Personally, I recommend taking this information to another server to have an external copy.

#### Step 2. Upgrading from Windows Server 2008 R2 to Windows Server 2012 R2

Now we must **start the upgrade process** from Windows Server 2008 R2 to Windows Server 2012 R2.

The first thing to do is **mount the system image** or insert the CD/DVD into the server's optical drive, and then **launch the installation manually** (6) and **click on “Install now”** (7) when the setup program starts.

<figure><img src="https://3894148717-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxksPMyYRDCe4qKkhbpcY%2Fuploads%2FohubXcEyen8XVe7Dmw8J%2Fimage.png?alt=media&amp;token=0f51e2f3-ff6e-445c-bb6d-04d1ea81e3c9" alt=""><figcaption><p>Step 2. We launch the Windows Server 2012 R2 installation</p></figcaption></figure>

At this point **the setup program starts**, which will take some time to copy temporary files and load an image for installation. This process may vary in time depending on the server's characteristics (RAM, CPU, drive used, disk, etc.).

<figure><img src="https://3894148717-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxksPMyYRDCe4qKkhbpcY%2Fuploads%2FAAeyVcXckNovVqRe0sqd%2Fimage.png?alt=media&amp;token=ff4eccc9-4727-4196-aeef-eae1a3ba798f" alt=""><figcaption><p>Step 2. We wait while the temporary files are loaded</p></figcaption></figure>

The first thing the setup program will show is a window asking whether we want to use any updates available online for this system.

This window also asks whether we want to **help the installation process** of Windows, in which case we must **select a checkbox**. Personally, I like to check these boxes because Microsoft collects telemetry data from systems, installations, failures, etc., which later translates into improved systems.

I recommend **selecting the option “Connect to install updates now (recommended)”**.

When we select this option, the software installation will continue.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 2. Seleccionamos conectar para obtener las actualizaciones del sistema \*/}

After this, if the option to connect to updates has been selected, the system will connect to Microsoft's network and spend some time downloading packages. If this option has not been selected, it will move directly to the next installation window.

{% hint style="info" %}
We may find that, even after selecting the update option, the system has trouble connecting and ends up skipping the step. If this happens, nothing is wrong, since we can update later.
{% endhint %}

In the next window we are asked to **select** the operating system to be installed, which in our case will be **“Windows Server 2012 R2 Standard (GUI installer)”**.

This is the case here because we started from a Windows Server 2008 R2 Standard, but **if starting from Datacenter, Datacenter Edition should be selected.**

Another important point is that we should bear in mind that from **Windows Server 2012 onward it is possible to install the Windows Server operating system without a graphical environment**, which is called a “**Server Core**”, which is designed to work from the command line. This is why care must be taken not to choose this by mistake, since at first it will be difficult to operate with it, although there is a possible solution for cases in which we have installed one of these distributions by mistake.

Once this is done we must **click “Next**”.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 2. Seleccionamos la versión de Windows 2012r2 a la que queremos actualizar \*/}

The next window shows **the license terms**, which are actually an ultra-abridged version of them, so this time we have no excuse not to read them and can finally say that we have read an EULA, disproving that myth that computer technicians do not read the licenses of what we install.

To continue with the installation, we must **accept the license terms by checking the checkbox**.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 2. Revisamos y aceptamos los términos de licencia de Windows Server 2012r2 \*/}

The next point is where we must decide what **type of installation** we want, and there are only **two options:**

* **Upgrade:** Install Windows and keep files, settings, and applications.
* **Custom:** Install Windows only (advanced).

In this case, since what we want to do is an upgrade from Windows Server 2008 to Windows Server 2012 R2, we must s**elect the option “Upgrade: Install Windows and keep files, settings, and applications”** and with this selection the installation will continue automatically.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 2. Seleccionamos como tipo de instalación la actualización del sistema a WS2012r2 \*/}

At this point, Microsoft has kindly included a small “**disclaimer**” about the “**Compatibility Report**”, which, as it tells us, has **been saved on the desktop**.

The system also recommends that we visit the information page about [“installation, upgrade or migration to Windows Server”](https://learn.microsoft.com/en-us/windows-server/get-started/install-upgrade-migrate), where we can find additional information about migration. This is not necessary in principle, because before starting, in Step 0, we are supposed to have done prior research and planning work.

In this case, it will be enough to **click “Next”** to continue with the installation.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 2. Revisamos el aviso sobre compatibilidad de aplicaciones en WS2012r2 \*/}

From here on, the **Windows upgrade has already started** and, according to Microsoft, it will be completed in five phases. The phases are:

* Copying Windows files.
* Gathering files, settings, and applications.
* Preparing files for installation.
* Installing features and updates.
* Finishing migration of files, settings, and applications.

During these steps, the system will restart several times, and **nothing should be done**, letting it operate without interruption, and without loading the CD/DVD boot media at any time, because otherwise the installation will start again.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 2. Esperamos mientras se actualizan los paquetes de WS2008r2 a WS2012r2 \*/}

After a series of restarts, the **Windows Server 2012 R2 start screen**will finally appear. At this point we should **access the system** and prepare the upgrade to WS2019.

The first thing we should do is **check that there are no problems**, that everything is properly configured, that the services are running correctly, etc. This will give us some assurance that everything will go well in the next step.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 2. En este momento arranca nuestro nuevo Windows Server 2012r2 \*/}

After checking that everything is OK, we should move on to the next point, the Windows Server 2012 R2 to Windows Server 2019 upgrade.

#### Step 3. Upgrading from Windows Server 2012 R2 to Windows Server 2019

{% hint style="info" %}
At this point we must change the mounted image to that of Windows Server 2019.
{% endhint %}

As was done before starting the upgrade from Windows Server 2008 R2 to Windows Server 2012 R2, the first thing to do is s**ave the system configurations**. In principle, this is a step we can skip, since we know where we are starting from, but it also serves to see the state we are currently in.

In this case we are going to do part of it with a couple of Powershell commands to get used to using it little by little. **The commands to use will be**:

```powershell
Set-Location c:\info
Get-ChildItem
systeminfo > c:\info\systeminfo.txt
ipconfig /all > c:\info\ipconfig.txt
Get-Content .\ipconfig.txt
```

And in this way we present the PowerShell commands:

* **Set-Location:** equivalent to `cd` in CMD. Changes the working directory.
* **Get-ChildItem:** equivalent to `dir` in CMD. Lists the contents of the directory.
* **Get-Content:** equivalent to `cat` in CMD. Shows the contents of a file.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 3. Extraemos información de configuración de WS12r2 antes de la actualización \*/}

At this point we must launch the upgrade to Windows Server 2019. To do this we must **go to the Windows Explorer, navigate to the drive** that has the image mounted and **double-click on it**.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 3. Lanzamos el instalable de Windows Server 2019.jpg \*/}

This operation will cause **the Windows Server 2019 setup program to start**. Since the way the operating system is installed changed significantly starting with Windows Server 2016, some differences can be seen. The first, for me, is **the improvement in deployment speed**. This is due to the way the binaries are packaged: they are copied compressed, decompressed on the destination machine, and then configured, unlike in older versions where large amounts of small files were copied, resulting in slower copying speed.

At this point, we will have no choice but to **wait for the packages to finish copying** and hand control back to us.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 3. Esperamos mientras arranca el programa de instalación \*/}

Now we are again offered the option to **obtain updates, drivers, and optional features** to optimize the installation process. As I mentioned earlier, I prefer to **select the option “Download updates, drivers, and optional features”**, which we can also see is marked as the recommended option. If the reader chooses the second option “Not right now,” there will not be a major impact on the installation process, although it will require a little more time in the post-installation process.

On this screen, as happened in the previous installer, we are offered to **help with the improvement program** of the installer; in our case, we are quite happy to collaborate with this type of improvement since they translate into a better user experience in future versions. If this altruistic action is chosen, we must **check the box “I want to help improve the Windows installation”**.

Once this is done, we can **click “Next”** to continue with the installation.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 3. Seleccionamos la descarga automática de actualizaciones \*/}

The next step to take is **select the image to be deployed** on the server, which in this case should be consistent with the previous choice, so in this example we must **select the option “Windows Server 2019 Standard (Desktop Experience)”** and click “Next”.

{% hint style="warning" %}
**Important:** Server Core does not include a graphical environment. It is managed via command line and PowerShell. The installer selects it by default.
{% endhint %}

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 3. Seleccionamos la versión de Windows Server 2019 que queremos instalar \*/}

At this point we will once again encounter the **license terms and applicable notices**, and there will be nothing else to do but **check “Accept”** unless you want to interrupt the installation process.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 3. Comprobamos los términos del acuerdo de licencia de WS2019 y lo aceptamos \*/}

The next point is a **critical point for the process** that is being carried out, because it is the point at which we **must select “Keep personal files and apps”**. If a mistake is made and the second option is selected, everything will be deleted because it will format the system irrecoverably, and we will have to recover the backup previously made and start the entire process again.

Once the first option is selected we must **click “Next”.**

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 3. Seleccionamos la opción de preservar los archivos existentes en el equipo \*/}

After this the **update retrieval process**will begin, a period during which we must patiently wait for it to finish and return control to us.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 3. Esperamos mientras el programa descarga actualizaciones para la instalación de WS2019 \*/}

After downloading the updated packages, the setup program is ready to begin deployment, but before doing so it gives us the opportunity to **review everything to see if we agree** with the settings we selected earlier.

The review is simple, since there are really two points to check:

* **Windows version:** choose Standard or Datacenter. Both options include Desktop Experience and Server Core.
* **Keep personal files and apps:** keep existing files and applications during the upgrade.

Once we agree, we must **click “Install”**, otherwise click “Back” to change the necessary parameters.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 3. Revisamos las opciones seleccionadas antes de proceder a la actualización a WS2019 \*/}

At this point **the system starts installing packages** and will show certain windows where you can see how much has been installed to give us an idea of how much remains. These windows are of various types, but they are not included in the tutorial so as not to extend it more than necessary.

In addition, **will restart several times**, so if we want to keep track of all the changes, restarts, etc., it may be a good idea to connect to the server via console, although as I always say, it is the best time for a cup of hot and comforting coffee.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 3. Esperamos mientras el programa de instalación de WS2019 instala los paquetes en el servidor \*/}

After a while, the server login screen will appear, where, as is logical, we must enter the administrator credentials to log in with all the necessary privileges.

{/\* 📸 IMAGEN PENDIENTE · Pie de imagen: Paso 3. Y por fin podemos disfrutar de nuestro flamante Windows Server 2019 \*/}

Now it would be time to review the state of the system, see that there are no problems with any application, role, or service that we may have installed.

Likewise, it would be more than advisable to look for updates to see that the system is fully up to date, and of course review the firewall rules and other security measures.

### Conclusions

The **Windows Server 2008 or Windows Server 2008 R2 operating system** [stopped being supported in January 2020](https://learn.microsoft.com/en-us/troubleshoot/windows-server/windows-server-eos-faq/end-of-support-windows-server-2008-2008r2), and therefore all servers running this version must be retired.

In this article we have reviewed how to **perform the upgrade** both from Windows Server 2008 to Windows Server 2012 or from Windows Server 2008 R2 to Windows Server 2012 R2 and from there to Windows Server 2019, discussing both how it would be done and small recommendations so that there are no problems during the process.

That process, as we have seen, is relatively simple if an order is followed and the stated guidelines are observed.

Thank you for joining us!

October 18, 2022


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.plenit.com/docs-en/support/tutorials/windows/how-to-upgrade-windows-server-2008-to-windows-server-2019.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
