Инвентаризация ролей и фич установленных на удаленных серверах

Коллеги из Германии запросили информацию по серверам. В том числе роли и фичи установленные на сервере. Задача не очень сложная, но серверов больше 2-х сотен.

После изучения течнета родился такой скрипт по инвентаризации ролей и фич -

$ComputerName = Get-Content "servers.txt" 
cls

foreach ($strComputer in $ComputerName) { 
write-host $strComputer
$colItems = get-wmiobject -class "Win32_ServerFeature" -namespace "root\cimv2" `
-computername $strComputer  -filter "ID = 16 or ID = 10  or ID = 8 or ID = 9  or ID = 17  or ID = 1  or ID = 12 or ID = 13 or ID = 5 or ID = 6 or ID = 20 or ID = 14 or ID = 7 or ID = 18 or ID = 2 or ID = 19  or ID = 21"
write-host ""
write-host "--== Roles ==--"

foreach ($objItem in $colItems) {
write-host $objItem.Name
}

$colItems = get-wmiobject -class "Win32_ServerFeature" -namespace "root\cimv2" `
-computername $strComputer  -filter "(ID = 3 or ID = 11 or (ID > 21)) and ParentID = 0"
write-host ""
write-host "--== Features ==--"
foreach ($objItem in $colItems) {
write-host $objItem.Name
}

write-host "=================================" 
}

Файл servers.txt содержит список серверов в формате -

servername1
servername2
servername3
servername4
servername5

На выходе получаем отчет в виде -

=================================
servername1

—== Roles ==—
File Services
Active Directory Lightweight Directory Services

—== Features ==—
.NET Framework 3.5.1 Features
SNMP Services
Remote Server Administration Tools
Remote Differential Compression
=================================

Применимо к Windows 2008 и выше