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

Як вивести всі встановлені ролі і компоненти Windows Server?

Щоб вивести список всіх доступних ролей і компонентів Windows Server використовується командлет Get-WindowsFeature. Якщо виконати його без параметрів, з’явиться інформація про всі компоненти.

Як ви бачите, відображається назва компонента (Display Name), його системне ім’я (Name) і стан (Install State: Встановлено, доступно або видалено). Список ролей і компонентів являє собою дерево з вкладеними ролями, яке нагадує те, які ви бачите при установці ролей через графічний Server Manager. Для установки і видалення ролей і компонентів через PowerShell, вам потрібно знати їх системне ім’я, яке міститься в стовпці Ім’я.

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

Порада. Якщо роль або функція знаходиться в стані Вилучено, Значить її файли видалені з локального сховища системи (зменшення розміру папки WinSxS) і ви не зможете встановити цю роль.

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

Uninstall-WindowsFeature –Name DHCP –Remove

Щоб встановити віддалену роль, скористайтеся Командлети:

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

Або ви можете відновити компоненти їх дистрибутива з вашою версією Windows Server:

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

Leave a Reply

Your email address will not be published. Required fields are marked *