Windows Server 2012 R2 update stuck after restart at 9%

Solution 1:

Try to access cmd from troubleshooting or SafeMode console, then run the following command:

dism.exe /image:C:\ /cleanup-image /revertpendingactions

Solution 2:

The below text is copied from https://www.craythorne.co.za/server-2012-stuck-at-updating-your-system-8/:


The Scenario:

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).


The 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
  • 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.


The Solution:

  • Reboot the server, press F8 to access advanced boot options
  • Select the Option "Repair Your Computer"
  • In the Options screen select Troubleshoot > Command Prompt
  • 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 E drive. There’s no obvious way to tell, you just have to change to each drive mapping a run a Dir command. (To know for sure, you can cd to every drive listed above and check if that has Windows related directory. )
  • 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. ren pending.xml pending.xml.old
    • If you have a lot of files with the name and a sequence of numbers, you can use the following from the commandline: for /r %i in (pending.xml*) do move %i %i.old
  • Create a new blank pending.xml file in the \Windows\Winsxs folder; echo > pending.xml
  • 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. However before doing so you must create a scratch folder for the temporary files to be stored in. If you don’t complete this step you will get a 3017 error, which complains the default temporary location for the scratch folder is too small. Create the scratch folder in the \Windows directory; mkdir \windows\scratch
  • Run the following command (NB my system drive was mapped to the E drive); DISM /Image:E:\ /Cleanup-Image /RevertPendingActions /scratchdir:E:\Windows\Scratch
  • Once complete rename the \windows\SoftwareDistribution to SoftwareDistributionOLD; ren E:\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.