Управление ролями и функциями 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
Связанные статьи:
- Снижение уровня контроллеров домена в Windows Server в PowerShell и графическом интерфейсе (87.5%)
- Как установить Active Directory Domain Services с помощью PowerShell (62.5%)
- Как установить и использовать Модуль Active Directory для Windows PowerShell (62.5%)
- Как настроить Windows Server 2022 с помощью PowerShell (50%)
- Аналог Add-Computer в PowerShell 7 (50%)
- Устранение неполадок, связанных с медленной обработкой GPO и снижением скорости входа в систему (RANDOM - 50%)