Управление ролями и функциями Windows Server с помощью PowerShell


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

Как через PowerShell вывести список всех установленных ролей и функций Windows Server

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

Get-WindowsFeature

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

Подсказка: Если роль или функция удалены, это означает, что её установочные файлы удалены из системного компонента sote (для уменьшения размера папки WinSxS), и вы не сможете установить роль без доступа в Интернет или установочного ISO диска с Windows Server.

Вы можете удалить роли или компоненты из хранилища следующим образом:

Uninstall-WindowsFeature -Name DHCP -Remove

Чтобы установить удалённую роль DHCP, используйте этот командлет (вам понадобится прямой доступ в Интернет):

Install-WindowsFeature DHCP

Или вы можете восстановить двоичные файлы компонентов из ISO-образа Windows Server:

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

Вы можете перечислить установленные функции сервера:

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

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


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

Get-WindowsFeature -Name web-* | Where installed

Вы можете получить список установленных компонентов на удалённом сервере Windows:

Get-WindowsFeature -ComputerName ИМЯ_КОМПЬЮТЕРА | Where installed | ft Name,Installstate

Вы можете использовать командлет Get-WindowsFeature для поиска серверов в вашем домене, на которых установлена определённая роль. Вы можете выполнять поиск на своих серверах в конкретном подразделении Active Directory с помощью командлета Get-ADComputer из модуля PowerShell ActiveDirectory или по предоставленному списку серверов ($ servers = ('server1', 'server2')).


Например, вы хотите найти все файловые серверы с ролью FileAndStorage-Services в указанном организационном подразделении AD, то используйте следующий скрипт:

Import-Module ActiveDirectory
$Servers=Get-ADComputer -Properties * -Filter {Operatingsystem -notlike "*2008 R2*" -and enabled -eq "true" -and Operatingsystem -like "*Windows Server*"} | select name
Foreach ($server in $Servers)
{
	Get-WindowsFeature -name FileAndStorage-Services -ComputerName $server.Name | Where installed | ft $server.name, Name, Installstate
}

Пример поиска контроллера домена:

Import-Module ActiveDirectory
$Servers=Get-ADComputer -Properties * -Filter {Operatingsystem -notlike "*2008 R2*" -and enabled -eq "true" -and Operatingsystem -like "*Windows Server*"} | select name
Foreach ($server in $Servers)
{
	Get-WindowsFeature -name AD-Domain-Services -ComputerName $server.Name | Where installed | ft $server.name, Name, Installstate
}

В результате вы получите список серверов, на которых установлена конкретная роль.

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

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

Чтобы установить роль DNS-сервера и инструменты управления (включая модуль Powershell DNSServer) на текущий сервер, выполните следующую команду:

Install-WindowsFeature DNS -IncludeManagementTools

Установка роли «Active Directory Domain Services»:

Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools

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

Install-WindowsFeature -Name UpdateServices -WhatIf

Чтобы установить роль узла сеанса удалённого рабочего стола, роль лицензирования RDS и инструменты удалённого управления RDS, используйте следующую команду:

Install-WindowsFeature -ComputerName ИМЯ_КОМПЬЮТЕРА RDS-RD-Server, RDS-Licensing -IncludeAllSubFeature -IncludeManagementTools -Restart

Если вы добавите параметр -Restart, ваш сервер при необходимости будет автоматически перезагружен.

Вы также можете установить компонент с помощью следующей команды. Например, чтобы установить роль SMTP-сервера:

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

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

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

Get-WindowsFeature | where{$_.Installed -eq $True} | select name | Export-Csv C:\PS\InstalledRoles.csv -NoTypeInformation -Verbose
Get-Content C:\PS\InstalledRoles.csv

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

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

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

Или, чтобы установить один и тот же набор ролей на нескольких удалённых серверах, вы можете использовать эту команду:

$servers = ('ny-rds1', 'ny-rds2',’ny-rds3’,’ny-rds4’)
foreach ($server in $servers) {Install-WindowsFeature RDS-RD-Server -ComputerName $server}

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

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

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

Remove-WindowsFeature Print-Server -Restart

Рекомендуется Вам:

Добавить комментарий

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