DISM unable to repair Server 2016

dismwindows-server-2016windows-update

I've been fighting this for a few days now and could really use some help from the community. This started out as a failure to install windows updates on a Server 2016 Datacenter, which led to indications that there was an issue with CBS store corruption. SFC /ScanNow comes back clean, dism /Online /Cleanup-Image /CheckHealth shows that the component store is repairable.
CheckHealth

Running dism.exe /Online /Cleanup-Image /RestoreHealth /Source:WIM:C:\temp\install.wim:1 /LimitAccess /Loglevel:4 eventually fails with Error: 0x800f081f.
Source WIM

For reference install.wim:1 is confirmed as the Windows Server 2016 Datacenter wim, from Microsoft's portal.
Wim Index Verification

Attempting the repair without specifying a source results in an almost more unusual Error: 14 "Not enough storage is available to complete this operation."; the OS drive has 44 GB of space free.
Error 14

The dism.log doesn't seem to have much of value, but CBS.log has "Failed to download updates [HRESULT = 0x8007000e – E_OUTOFMEMORY]" which on the Timeline matches the Error 14.

Also from CBS.log:

Checking System Update Readiness.

(p) CSI Payload Corrupt         amd64_microsoft-windows-msmq-powershell_31bf3856ad364e35_10.0.14393.1066_none_3ecfc4b3ae7c6dae\Microsoft.Msmq.Runtime.Interop.dll
Repair failed: Missing replacement payload.
(p) CSI Payload Corrupt         amd64_microsoft-windows-msmq-powershell_31bf3856ad364e35_10.0.14393.1066_none_3ecfc4b3ae7c6dae\Microsoft.Msmq.Activex.Interop.dll
Repair failed: Missing replacement payload.
(p) CSI Payload Corrupt         amd64_microsoft-windows-msmq-powershell_31bf3856ad364e35_10.0.14393.1066_none_3ecfc4b3ae7c6dae\Microsoft.Msmq.PowerShell.Commands.dll
Repair failed: Missing replacement payload.
(p) CSI Payload Corrupt         x86_microsoft-windows-msmq-powershell_31bf3856ad364e35_10.0.14393.1066_none_e2b1292ff61efc78\Microsoft.Msmq.Activex.Interop.dll
Repair failed: Missing replacement payload.
(p) CSI Payload Corrupt         x86_microsoft-windows-msmq-powershell_31bf3856ad364e35_10.0.14393.1066_none_e2b1292ff61efc78\Microsoft.Msmq.PowerShell.Commands.dll
Repair failed: Missing replacement payload.
(p) CSI Payload Corrupt         amd64_microsoft-windows-fsrm-service_31bf3856ad364e35_10.0.14393.1378_none_167ee64821565098\srmsvc.dll
Repair failed: Missing replacement payload.

These appear to be my culprits, but I cannot find these in the winsxs directory on a brand new Server 2016 that I have also attempted to use as the source for the repair.

I'm not sure what else to try, Microsoft's documentation on this is running me in circles saying that sfc and DISM are the answer.

Best Answer

Ultimately the solution for the dism restorehealth failures was identifying the KB associated with the missing files in the winsxs folder. In my case these missing files were from KB4015217, which is no longer available on the windows update catalog. Fortunately I was able to find another server that was built around the same time that had received this particular KB. I copied the "missing" files from the source server to my affected system and re-ran the dism commands to restore health.