No PowerShell:
Get-WMIObject Win32_OptionalFeature | where Name -eq 'Server-Gui-Shell' | Select InstallState
retorna 1 em um servidor completo e 2 em uma instalação principal do servidor.
Editar:
Embora minha resposta acima esteja correta, há dois problemas:
-
Ao usar este comando em uma estação de trabalho, ele não retorna nada, então você precisa adicionar uma verificação extra para isso.
-
É lento, quando eu tentei, demorei entre 600 e 3500 milissegundos.
Portanto, a abordagem mais pragmática é apenas verificar a existência de um determinado arquivo:
(Test-Path "$env:windir\explorer.exe")
Isso retorna $false
para instalações do Núcleo do Servidor e $true
para todos os outros e leva um milissegundo para ser executado.