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

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

В Windows Server 2012R2/2016/2019 вы можете устанавливать и удалять различные роли и компоненты сервера через графический Server Manager. Однако в большинстве случаев эти же самые операции можно выполнить гораздо быстрее из консоли PowerShell. В этой статье мы рассмотрим особенности управления ролями и компонентами в актуальных версиях Windows Server.

Как вывести все установленные роли и компоненты Windows Server?

Чтобы вывести список всех доступных ролей и компонентов Windows Server используется командлет
Get-WindowsFeature
. Если выполнить его без параметров, появится информация обо всех компонентах.

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

Get-WindowsFeature вывести все роли и компоненты windows server

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

Роли и компоненты удаляются из образа так:

Uninstall-WindowsFeature –Name DHCP –Remove

Чтобы установить удаленную роль, воспользуйтесь командлетом:

Install-WindowsFeature DHCP
(понадобится доступ в Интернет)

Либо вы можете восстановить компоненты их дистрибутива с вашей версией Windows Server. Данная команда установит роль DHCP сервера.

Install-WindowsFeature DHCP -Source E:sourcessxs

Вы можете вывести список установленных компонентов сервера:

Get-WindowsFeature | Where-Object {$_. installstate -eq "installed"} | ft Name,Installstate

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

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

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

Get-WindowsFeature -Name web-* | Where installed

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

Вы можете получить список установленных компонентов на удаленном 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 (я использую редактор PS — Visual Studio Code)

import-module activedirectory
$Servers=get-adcomputer -properties * -Filter {Operatingsystem -notlike "*2008*" -and 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

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

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

What if: Continue with installation?
What if: Performing installation for "[Windows Server Update Services] Windows Server Update
What if: Performing installation for "[Windows Server Update Services] WID Database".
What if: Performing installation for "[Windows Server Update Services] WSUS Services".
What if: Performing installation for "[Web Server (IIS)] Windows Authentication".
What if: Performing installation for "[Web Server (IIS)] Dynamic Content Compression".
What if: Performing installation for "[Web Server (IIS)] Performance".
What if: Performing installation for "[Web Server (IIS)] Static Content".
What if: Performing installation for "[Windows Internal Database] Windows Internal Database".
What if: The target server may need to be restarted after the installation completes.

Чтобы установить роль 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
сервер будет автоматически перезагружен, если установленный компонент это потребует.

Также можно установить компонент такой командой (например роль SMTP сервера):

Get-WindowsFeature -Name SMTP-Server | Install-WindowsFeature

Деплой ролей на множество серверов Windows Server

Еще одна интересная возможность при развертывании однотипных серверов. Вы можете установить необходимые компоненты на эталонном Windows Server и экспортируете список установленных ролей в CSV файл:

Get-WindowsFeature | where{$_.Installed -eq $True} | select name | Export-Csv C:psRoles.csv -NoTypeInformation –Verbose

Экспорт конфигурации ролей и компоеннтов windows server в csv файл

Потом вы можете использовать этот CSV файл для установки такого же набора ролей на других типовых серверах:

Import-Csv C:PSRoles.csv | foreach{ Install-WindowsFeature $_.name }

установка ролей Windows Server по эталонному csv файлу

Если роль или компонент уже установлен, команда вернет
NoChangeNeeded
и продолжит установку следующей роли.

Либо для установки одинакового набора ролей сразу на нескольких серверах можно использовать такую команду:

$servers = ('srv1', 'srv2',’srv3’)
foreach ($server in $servers) {Install-WindowsFeature RDS-RD-Server -ComputerName $server}

Как удалить роль или компонент в Windows Server с помощью PowerShell?

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

Например, чтобы удалить роль принт-сервера, выполните команду:

Remove-WindowsFeature Print-Server -Restart

Windows Server 2012 R2
Управление ролями и компонентами Windows Server из PowerShell