Добавить/удалить роли и компоненты Windows Server из PowerShell

В 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 вывести все роли и компоненты windows server

Чтоб вывести только установленные роли:

Get-WindowsFeature | ? Installed -eq $true

Судя по скриншоту, данный сервер используется как файловый сервер (роли FileAndStorage-Services, Storage-Services). Большинство оставшихся компонентов используются для управления сервером (средства администрирования RSAT).

Get-WindowsFeature installed - список установленных ролей windows server 2025

Если вы не знаете точно имя роли, можно использовать знаки подстановки. Например, чтобы проверить какие из WEB компонентов роли IIS установлены, выполните (немного сократим синтаксис):

Get-WindowsFeature -Name web-* | Where installed

Get-WindowsFeature установленные компоненты iis

С помощью параметра -ComputerName можно получить список установленных компонентов на удаленном хосте Windows Server

Get-WindowsFeature -ComputerName msk-prnt1 | Where installed | ft Name,Installstate

Судя по установленным ролям Print-Services и Print-Server, этот сервер используется в качестве сервера печати.

получить список установленны ролей на удаленном windows serevr 2016

Командлет 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 с установленными ролями в ActiveDirectory

Установка ролей и компонентов Windows Server из PowerShell

Для установки ролей и компонентов в Windows Server используется командлет Install-WindowsFeature.

Установим роль DNS и инструменты управления (включая Powershell модуль DNSServer):

Install-WindowsFeature DNS -IncludeManagementTools

Такая команда установит все необходимые зависимые роли и компоненты.

Чтобы вывести список зависимостей до установки, воспользуйтесь параметром -WhatIf.
Install-WindowsFeature -name UpdateServices -whatif

Например, для установки роли сервера обновлений WSUS, необходимо установить некоторые компоненты веб сервера IIS.

Install-WindowsFeature whatif вывести зависимые роли и компоненты которы будут установлены вместе с ролью

Чтобы установить роль Remote Desktop Session Host, службу лицензирования RDS и утилиты управления RDS на удаленном сервере, воспользуйтесь командой:

Install-WindowsFeature -ComputerName msk-rds21 RDS-RD-Server, RDS-Licensing –IncludeAllSubFeature –IncludeManagementTools –Restart

Install-WindowsFeature установка роли Windows Server POwerShell

C параметром –Restart сервер будет автоматически перезагружен, если установленный компонент это потребует.

Совет. Если роль или функция находится в состоянии Removed, значит ее установочные файлы удалены из локального репозитария (уменьшение размера папки WinSxS).

Например, в Windows Server 2025 компонент .Net Framework 3.5 отсутствует в образе и может быть установлен по запросу как Feature on Demand.

Установка removed роли в Windows Server

При установке такого роли, все необходимые файлы будут загружены из Интернета:

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


Предыдущая статья Следующая статья


Комментариев: 1 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)