Windows Deployment Services (WDS) is an advanced and more functional version of the Remote Installation Services (RIS), which was available in previous versions of Windows Server. This service allows operating systems to be automatically installed on computers via a central server over a network.
WDS is especially used in large organizations and companies to perform standardized and rapid system installations on numerous computers. By supporting PXE (Preboot Execution Environment) technology, it enables client computers to boot over the network without the need for additional devices.
In this article, the setup and basic configuration steps of the Windows Deployment Services will be explained.
Prerequisites
- Windows Server 2019
- Administrator permissions on the server
- Windows Server network connection

Configuration steps
First, we open the "Server Manager" section on Windows Server, then click on "Manage" in the top right corner and select "Add Roles and Features" to install the WDS Server role. Note that a DHCP server is also required, so we will install and configure it as well.

From the Role services, we select "Deployment Server" and "Transport Server" and continue the installation.

DHCP Server Configuration
Right-click on IPv4 and select "New Scope". Then click Next, give a name to the Scope, proceed, and in the next section, we will define the IP range.

Here, we define the IP range. Our IP range will start from 192.168.74.1 and go up to 192.168.74.254. Afterward, we can exclude any unwanted IP addresses from the given IP range.


Here, we set the lease time for the IP addresses assigned to devices. I set it to 8 hours. Then, we are asked if we want to configure our DHCP server now. By selecting "Yes" and continuing, we proceed with the configuration.


We enter and add our Default gateway address. Then, we specify the DNS servers by typing the server name, and when we click "Resolve", the system can automatically recognize it. Alternatively, we can also enter the DNS server's IP address.


Here, we can also recognize the older version of DNS, known as NetBIOS servers. However, since NetBIOS is not in use anymore, we will not add it and will continue. Then, we are asked if we want to activate this Scope (Scope Range) now. We click Next to proceed. Once the Scope is activated, users in the domain will lease their IP addresses. After activation, we finish configuring the DHCP Server.


WDS Service Configuration
From Server Manager, we select "Windows Deployment Services" in the "Tools" section. In the opened window, under the "Servers" section, we see our domain name. We right-click on it and click "Configure Server". In the next window, we click Next, and on the following screen, we select "Integrated with Active Directory", meaning we want it to depend on and integrate with AD DC.


In the first window here, it shows the location where Remote Installation will be installed. It asks if there is a DHCP service. If the DHCP service is running, it instructs us to select both. We click Next to continue.


Here, we need to select which systems the PXE (Preboot Execution Environment) service will respond to. We select "Respond to all client computers (known and unknown)", meaning we want it to respond to both known and unknown devices. After clicking Next, the installation will load and complete.

Now, we will add the installation disk to our WDS service. Before adding the disk to the service, we extract the contents of the ISO file to a normal folder because a standard ISO file contains an "install.esd" file instead of the "install.wim" file, which will not work for us, as the WDS Server accepts only files with the ".wim" extension.
We open cmd in administrator mode and use the "cd" command to navigate to the folder where we extracted the files. Then, we run the
Command:
dism /Get-WimInfo /WimFile:install.esd


We need Windows 10 Pro, so we will create a wim file for it. As we can see here, the Index number for Windows 10 Pro is 6. Our command will be as follows, and we will create the install.wim file.
Command:
<dism /export-image /SourceImageFile:install.esd /SourceIndex:6 /DestinationImageFile:install.wim /Compress:max /CheckIntegrity>


In the WDS service, we right-click on "Install Images" and select "Add Install Image". A screen like this will appear, where we give a name to the Image and click Next to proceed to the next step.


Here, we need to select the install.wim file from our Windows 10 ISO. The install.wim file is located in the sources folder inside the ISO file. In the next section, we will see the Windows 10 Pro and Home versions. Since I had previously downloaded the Home version as well, it appears for me. Then, we click Next and continue with the installation.
NOTE: We can add any Windows versions we want into a single install.wim file.


Since the Windows 10 images are ready, we now need to upload the Boot images. We right-click and select "Add Boot Image". In the opened window, we click on "Browse", select the boot.wim file, and click "Open".


Here, we can give a name to the Image. We click Next, and in the next section, we click Next again, and the Boot image will be uploaded and ready.



In the WDS settings, under the "Boot" section, we need to choose when the PXE boot should be distributed over the network. We select the option to always start it, i.e., "Always continue the PXE boot". Then, in the DHCP settings, we enable the option to listen for DHCP ports because our server has a DHCP service, and we will configure it separately.


In the Advanced section, we allow the WDS server to work with DHCP, and our work on the WDS server is complete. Now, we move on to the configuration of the DHCP service. Under IPv4, we right-click on "Scope Options" and select "Configure Options".


Here, we enable option 066, "Boot Server Host Name", and in the value field, we enter the hostname of our WDS service. Then, we enable option 067, "Bootfile Name", and in the value field, we write this code: "boot\x64\wdsmgfw.efi". This code is for the x64-bit UEFI boot system in the operating system we will create. Below, I will also write the codes for other operating systems. Of course, we could create this as a BIOS boot, but since older systems are now rarely used, we will proceed with UEFI. Now that our configurations are ready, we can boot a system without an operating system over the network and see that it works.
Boot code for x64 UEFI:
boot\x64\wdsmgfw.efi
Boot code for x86 UEFI:
boot\x86\wdsmgfw.efi
Boot code for x64 Legacy BIOS:
boot\x64\wdsnbp.com
Boot code for x86 Legacy BIOS:
boot\x86\wdsnbp.com


Now, let's boot a system without an operating system that is simply connected to the same network as the domain. Since I am doing this in a Virtual Machine, the system gives such a notification. We click Yes and continue. The system automatically accepted the operating system over the network and started loading.


As we can see, the system loaded via the UEFI Firmware interface, and the Windows Setup window appeared. I will not proceed with Windows 10 Setup because, in addition to this, we can configure boot loading for both UEFI and BIOS. The system will automatically detect which boot system it should use and will accept the corresponding one.



Now, we will configure for both Boot systems, meaning the computer will load the operating system based on which Firmware interface it uses. First, we delete both configurations we created. Then, we right-click on IPv4 and select "Define Vendor Classes".


Here, we click the "Add" button, give a name to the configuration we will create, and the important part is the ASCII code field. In this section, we write the code for UEFI, which is:
PXEClient:Arch:00007
PXEClient:Arch:00000


In this screen, we create a policy, give it a name, and click Next, then click the Add button.



In the "Criteria" section, we select "Vendor Class", and in the "Value" field, we select the "UEFI Boot" we created. Then, we check the second box and click Add. In the second part, it asks if we want it to be based on an IP range, to which we select "No" and continue so that it responds to all devices on the network. In the next section, we enter the WDS server name and the boot file, click Next, and then click Finish.



Now, we create the same policy for the BIOS Firmware interface.
Boot code for x64 Legacy BIOS:
boot\x64\wdsnbp.com
Boot code for x86 Legacy BIOS:
boot\x86\wdsnbp.com



Our policies are now ready, and devices will load the OS according to their Boot Firmware interface. We can verify this once more.

Conclusion
In this article, I discussed how the WDS Server is installed, configured, and works. Let's imagine a company with 100 devices. All of them need to have the operating system installed simultaneously. Installing the operating system manually on each of these 100 devices would take several days. Therefore, the WDS Server loads the operating system image over the network to all devices, and what would normally take several days is completed in just a few minutes.