В Windows Server установить и удалять различные роли и компоненты можно через графический Server Manager или через веб-интерфейс Windows Admin Center. Однако гораздо быстрее выполнить добавление или удаление роли из командой строки PowerShell (особенно актуально для редакций Server Core, в которых отсутствует графический интерфейс). В этой статье мы рассмотрим особенности управления ролями и компонентами в актуальных версиях Windows Server из PowerShell.
Вывести установленные роли и компоненты в Windows Server
Чтобы вывести список всех доступных ролей и компонентов Windows Server запустите командлет без параметров:
Get-WindowsFeature
Команда вернет список, в котором содержатся название компонента (Display Name), его системное имя (Name) и состояние (Install State: Installed, Available или Removed). Список ролей и компонентов представляет собой дерево со вложенными ролями, которое напоминает то, которые вы видите при установке ролей через графический Server Manager. Для установки и удаления ролей и компонентов через PowerShell, вам нужно знать их системное имя, которое содержится в столбце Name.

Чтоб вывести только установленные роли:
Get-WindowsFeature | ? Installed -eq $true
Судя по скриншоту, данный сервер используется как файловый сервер (роли FileAndStorage-Services, Storage-Services). Большинство оставшихся компонентов используются для управления сервером (средства администрирования RSAT).

Если вы не знаете точно имя роли, можно использовать знаки подстановки. Например, чтобы проверить какие из WEB компонентов роли IIS установлены, выполните (немного сократим синтаксис):
Get-WindowsFeature -Name web-* | Where installed

С помощью параметра
-ComputerName
можно получить список установленных компонентов на удаленном хосте Windows Server
Get-WindowsFeature -ComputerName msk-prnt1 | Where installed | ft Name,Installstate
Судя по установленным ролям Print-Services и Print-Server, этот сервер используется в качестве сервера печати.

Командлет Get-WindowsFeature можно использовать для поиска серверов в домене, на которых установлена определенная роль. Можно выполнять поиск по серверах в определенном OU Active Directory с помощью командлета Get-ADComputer из модуля ActiveDirectory for PowerShell, или по указанному списку серверов (
$servers = ('server1', 'server2')
). Например, нам нужно найти все файловые сервера c ролью FileAndStorage-Services в указанном контейнере AD:
$Servers=Get-ADComputer -properties * -Filter {enabled -eq "true" -and Operatingsystem -like "*Windows Server*"} -SearchBase ‘OU=Servers,OU=MSK,DC=winitpro.ru,DC=ru’ |select name
Foreach ($server in $Servers)
{
Get-WindowsFeature -name FileAndStorage-Services -ComputerName $server.Name | Where installed | ft $server.name, Name, Installstate
}
В результате у нас появился список серверов, на которых установлена данная роль.

Установка ролей и компонентов Windows Server из PowerShell
Для установки ролей и компонентов в Windows Server используется командлет Install-WindowsFeature.
Установим роль DNS и инструменты управления (включая Powershell модуль DNSServer):
Install-WindowsFeature DNS -IncludeManagementTools
Такая команда установит все необходимые зависимые роли и компоненты.
Чтобы вывести список зависимостей до установки, воспользуйтесь параметром -WhatIf.
Install-WindowsFeature -name UpdateServices -whatif
Например, для установки роли сервера обновлений WSUS, необходимо установить некоторые компоненты веб сервера IIS.

Чтобы установить роль Remote Desktop Session Host, службу лицензирования RDS и утилиты управления RDS на удаленном сервере, воспользуйтесь командой:
Install-WindowsFeature -ComputerName msk-rds21 RDS-RD-Server, RDS-Licensing –IncludeAllSubFeature –IncludeManagementTools –Restart

C параметром
–Restart
сервер будет автоматически перезагружен, если установленный компонент это потребует.
Например, в Windows Server 2025 компонент .Net Framework 3.5 отсутствует в образе и может быть установлен по запросу как Feature on Demand.

При установке такого роли, все необходимые файлы будут загружены из Интернета:
Install-WindowsFeature NET-Framework-Core
(понадобится доступ в Интернет)
Либо вы можете восстановить компоненты их смонтированного ISO образа с дистрибутивом с вашей версией Windows Server.
Install-WindowsFeature NET-Framework-Core -Source E:\sources\sxs
Также можно установить компонент такой командой (например роль SMTP сервера):
Get-WindowsFeature -Name SMTP-Server | Install-WindowsFeature
Экспорт и импорт списка установленных ролей в Windows Server
Список установленных ролей и фич определяет текущую конфигурацию хоста Windows Server. Список установленных ролей можно экспортировать в файл и в дальнейшем использоваться в качестве шаблона при развертывание новых однотипных серверов:
Список установленных компонентов можно экспортировать в XML файл
Get-WindowsFeature | ? { $_.Installed } | Export-Clixml .\InstalledRoles.xml
Или в TXT формат (который нравится мне больше, т.к. позволяет легко отредактировать его вручную если нужно):
Get-WindowsFeature | ? { $_.Installed } | Select Name | ForEach-Object { $_.Name } | Out-File .\InstalledRoles.txt

Чтобы установить такой же набор ролей на другом сервере, скопируйте на него этот файл, и выполните:
$(Import-Clixml .\InstalledRoles.xml) | Add-WindowsFeature
или
$(Get-Content .\InstalledRoles.txt) | Add-WindowsFeature
Также можно продублировать список ролей с удаленного сервера на текущийс помощью такой команды:
Get-WindowsFeature -computername MSK-FS01| where-object {$_.installstate -eq "Installed"} | Install-WindowsFeature
Параллельный деплой ролей сразу на множество серверов Windows Server (файл эталонной конфигурации должен хранится в сетевой папке, чтобы был доступен всем хостам):
$servers = 'srv1', 'srv2', 'srv3'
$configFile = "\\fs01\conf\InstalledRoles.txt"
$jobs = @()
foreach ($server in $servers) {
$jobs += Start-Job -ScriptBlock {
param($file, $srv)
$roles = Get-Content $file
foreach ($role in $roles) {
Install-WindowsFeature $role -ComputerName $srv -Restart
}
} -ArgumentList $rolesFile, $server
}
$jobs | Wait-Job | Receive-Job
Если роль или компонент уже установлен, команда вернет NoChangeNeeded и продолжит установку следующей роли.
Как удалить роль или компонент в Windows Server с помощью PowerShell?
Для удаления ролей и компонентов Windows Server используется командлет
Remove-WindowsFeature
.
Например, чтобы удалить роль принт-сервера, выполните команду:
Remove-WindowsFeature Print-Server -Restart
Удалить роли, которые отсутствуют на исходном сервере:
Get-WindowsFeature -ComputerName MSK-FS01| ? Installed -ne $true | Remove-WindowsFeature


Спасибо тебе большое автор, через мастер не хотел, а так всё получилось.