У 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