One of my Windows Server 2012 R2 Standard servers installed a large number of updates +200 all at once (so unfortunately I’ve no idea which one caused this problem).
After the reboot the server was stuck on the start-up splash screen stating “Updating your system 8%”. I tried the following
- Waiting several hours
- Rebooting in Safe Mode (press F8 immediately as the server boots to access this boot option)
- Rebooting using Last Known Good Configuration (press F8 immediately as the server boots to access this boot option)
None of the above worked.
- Reboot the server, press F8 to access advanced boot options. NB If your server is a Hyper-V VM you may be having problems getting the F8 prompt to work, if so see this link for details on how to resolve this.
- Select the Option “Repair Your Computer”
- In the Options screen select Troubleshoot > Command Prompt > Click Administrator user
- Enter the Local Administrator password.
- The server boots into a limited command prompt at the X drive:
- Get a list of all the available drives, type “wmic logicaldisk get name“. This is important as whilst in the repair environment the drive mappings often get changed around i.e. I was panicking when I changed to the C drive only to find it was empty. In fact the system drive was mapped to the D drive. There’s no obvious way to tell, you just have to change to each drive mapping a run a Dir command.
- Navigate to the \Windows\Winsxs folder. Once here you need to find all the files called pending.xml* and rename them all by adding .OLD to the end of the file name. (In my server I had two pending.xml and pending.xml.random_number – I added .OLD to the end of both of these). The reason for this is it’s in one of these there is a corruption that’s the cause of the problem.
- Create a new blank pending.xml file in the \Windows\Winsxs folder; echo > pending.xml
- Create a scratch folder in the \Windows directory; mkdir D:\windows\scratch (This is a requirement for step 19, otherwise you will get a 3017 error, which complains the default temporary location for the scratch folder is too small.)
- Next up is to run a DISM command to remove/revert all pending actions from the image, in our case these updates attempting to install. Run the following command (NB my system drive was mapped to the D drive); DISM /Image:D:\ /Cleanup-Image /RevertPendingActions /scratchdir:D:\Windows\Scratch
- Once step 19 is complete rename the \windows\SoftwareDistribution to SoftwareDistributionOLD:
- ren D:\windows\SoftwareDistribution SoftwareDistributionOLD
- Finally, run sfc /scannow – the System File Checker tool to repair missing or corrupted system files
- Reboot the server. The start-up splash screen should show spinning dots for a minute or two then boot normally. In my instance it then reported updates couldn’t be installed and so reverted those that had been installed. It then forced another reboot.
- At this stage the server is ready to have updates installed, but this time only do a few at a time to locate the faulty update.
Disclaimer: provided “AS IS” with no warranties and confer no rights