Как узнать какие роли выполняются на серверах с Windows Server?
Для 2008+ серверов есть WMI класс  Win32_ServerFeature.
Так что можно использовать  Get-WmiObject -Class Win32_ServerFeature -ComputerName $computerName.
Для 2003 даже не знаю. Не использую их давно.
Нужно понимать, что установленная служба - еще не означает что серверу назначена какая-то роль. Эта служба может быть отключена например. 
ИМХО тупиковая идея. Лучше один раз нормально ревизию сделать.
А так, софта валом. Скриптов полно. Но они выдают только список Установленного ПО. 
Опять же, это просто когда серверы в домене. А если нет, возникают различные сложности.