Windows Server Troubleshooting: Not able to convert Core Server back to GUI
Introduction
There are many articles available online which provides lots of information regards to this issue.
However, this article is talking about specific issue which deals with the situation, where someone has removed PowerShell or .NetFrame work to troubleshoot some other piece of problem and ended up making a GUI Server into Core Server.
FYI, from Windows Server 2012 onward, Server-Gui-Mgmt-Infra and Server-Gui-Shell features are interdependent with .NetFrame work and PowerShell. So, someone has to think twice while troubleshooting other two components as server may ended to core server.
Troubleshooting
Situation I experienced, when I tried to convert Core Server to GUI Server on one of the P1 case it was reverting back.
Few tips which may help you to troubleshoot the problem:
1. Get-WindowsFeature
Use Get-WindowsFeature command, to check if Server-Gui-Mgmt-Infra and Server-Gui-Shell features are still available on server.
In example below, we see these features are available and part of windows component store, however there could be a situation where these are not available and we find them in "Removed" state. If it is in removed state we need external media install.wim file to provide components required to make server full GUI.
This article deals with same situation: https://blogs.technet.microsoft.com/john_taylor/2013/01/08/converting-from-server-2012-core-install-to-full-gui/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. Run Dism /online /cleanup-image /RestoreHealth
This is an on-box utility to repair corruption in CBS store and if it ends up by saying cannot repair corruption, collect CBS logs and check which file is corrupted.
3. SFC /SCANNOW
Collect CBS logs if it says corruption cannot be repaired.
4. Reproduce the problem and collect CBS.
While analyzing logs, I found below excerpt, where I see access denied on poqexec file, which is responsible for resolve pending transaction after a reboot has been made to a server. Common problem to this could be Anti-Virus, and this behavior is seen more if we met with an accident like converting GUI to core server.
2016-08-02 03:41:38, Error CSI 00000008 (F) Error: ResolvePendingTransactions called after poqexec failure (call 1)
Status = STATUS_ACCESS_DENIED, Operation = SetFileInformation, DiagString = [l:72{36}]"\??\C:\Program Files (x86), N/A, N/A" //---- Something was blocking a poqexec
[gle=0x80004005]
Use command, FLTMC to check if we have any Antivirus filter driver sitting on storage stack.
Filter Name Num Instances Altitude Frame
------------------------------ ------------- ------------ -----
carbonblackk 5 386720 0
ParityDriver 5 329050 0
TmPreFilter 5 328500 0 //--TrendMicro Filter
npsvctrig 1 46000 0
While dealing with antivirus I always tend to remove it completely, however that was not possible on this core server, so asked my client to do it from registry by making TmPreFilter driver value 4, after booting into recovery environment. However, for some reason that was not possible. So I used command ,
FLTMC unload TmPreFilter, which helped to remove Trendmicro filter driver.
Note: Usually Anti-Virus doesn't allow to do it, and we have to do it from Recovery Environment.
After this, I was able to convert Core server into GUI using below commands.
DISM.exe /online /enable-feature /all /featurename:NetFx4
DISM.exe /online /enable-feature /all /featurename:MicrosoftWindowsPowerShell
Install-WindowsFeature Server-Gui-Shell, Server-Gui-Mgmt-Infra
Restart-Computer
References
Some more article reference on same concern and will try to keep it up to date.