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

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

зміст:

  • Як вивести всі встановлені ролі і компоненти Windows Server?
  • Установка ролей і компонентів Windows Server з PowerShell
  • Деплой ролей на безліч серверів Windows Server
  • Як видалити роль або компонент в Windows Server за допомогою PowerShell?

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

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

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

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

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

Uninstall-WindowsFeature -Name DHCP -Remove

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

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

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

Install-WindowsFeature DHCP -Source E: \ sources \ sxs

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

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

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

Якщо ви не знаєте точно ім'я ролі, можна використовувати знаки підстановки. Наприклад, щоб перевірити які з web компонентів ролі IIS встановлені, виконайте (трохи скоротимо синтаксис):

Get-WindowsFeature -Name web- * | Where installed

Ви можете отримати список встановлених компонентів на віддаленому 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 (я використовую редактор 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 з 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

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: \ ps \ Roles.csv -NoTypeInformation -Verbose

Потім ви можете використовувати цей CSV файл для установки такого ж набору ролей на інших типових серверах:

Import-Csv C: \ PS \ Roles.csv | foreach Install-WindowsFeature $ _. name

Якщо роль або компонент вже встановлений, команда поверне 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