A resposta foi encontrada graças a este artigo do blog msdn .
Usando o powershell, liste todos os componentes opcionais instalados:
$(foreach ($feature in Get-WmiObject -Class Win32_OptionalFeature -Namespace root\CIMV2 -Filter "InstallState = 1") {$feature.Name}) | sort
Listar todos os componentes opcionais não instalados:
$(foreach ($feature in Get-WmiObject -Class Win32_OptionalFeature -Namespace root\CIMV2 -Filter "InstallState != 1") {$feature.Name}) | sort