Управление ролями и функциями Windows Server с помощью PowerShell
Как через PowerShell вывести список всех установленных ролей и функций Windows Server
Используйте командлет Get-WindowsFeature, чтобы отобразить список всех доступных ролей и компонентов Windows Server. Если вы запустите его без параметров, вы увидите информацию обо всех компонентах Windows Server.
|
1
|
Get-WindowsFeature |
Отображаются имя компонента (Display Name), его системное имя (Name) и состояние (Install State: Installed, Available или Removed). Список ролей и функций выглядит как дерево с вложенными ролями, подобное тому, которое вы видите при установке ролей в графическом интерфейсе Server Manager. Чтобы установить и удалить любые роли или компоненты с помощью PowerShell, вы должны знать их системные имена, указанные в столбце «Имя».
Подсказка: Если роль или функция удалены, это означает, что её установочные файлы удалены из системного компонента sote (для уменьшения размера папки WinSxS), и вы не сможете установить роль без доступа в Интернет или установочного ISO диска с Windows Server.
Вы можете удалить роли или компоненты из хранилища следующим образом:
|
1
|
Uninstall-WindowsFeature -Name DHCP -Remove |
Чтобы установить удалённую роль DHCP, используйте этот командлет (вам понадобится прямой доступ в Интернет):
|
1
|
Install-WindowsFeature DHCP |
Или вы можете восстановить двоичные файлы компонентов из ISO-образа Windows Server:
|
1
|
Install-WindowsFeature DHCP -Source E:\sources\sxs |
Вы можете перечислить установленные функции сервера:
|
1
|
Get-WindowsFeature | Where-Object {$_. installstate -eq "installed"} | ft Name,Installstate |
Судя по приведённому ниже снимку экрана, этот сервер используется в качестве контроллера домена (установлена роль AD-Domain-Services), DNS сервера (установлена роль DNS) и файлового сервера (установлены роли FileAndStorage-Services, Storage-Services). Большинство других компонентов используются для управления или мониторинга сервера.
Если вы точно не знаете имя роли, вы можете использовать подстановочные знаки. Например, чтобы проверить, какие веб-компоненты роли IIS установлены, выполните эту команду (синтаксис немного сокращён):
|
1
|
Get-WindowsFeature -Name web-* | Where installed |
Вы можете получить список установленных компонентов на удалённом сервере Windows:
|
1
|
Get-WindowsFeature -ComputerName ИМЯ_КОМПЬЮТЕРА | Where installed | ft Name,Installstate |
Вы можете использовать командлет Get-WindowsFeature для поиска серверов в вашем домене, на которых установлена определённая роль. Вы можете выполнять поиск на своих серверах в конкретном подразделении Active Directory с помощью командлета Get-ADComputer из модуля PowerShell ActiveDirectory или по предоставленному списку серверов ($ servers = ('server1', 'server2')).
Например, вы хотите найти все файловые серверы с ролью FileAndStorage-Services в указанном организационном подразделении AD, то используйте следующий скрипт:
|
1
2
3
4
5
6
|
Import-Module ActiveDirectory$Servers=Get-ADComputer -Properties * -Filter {Operatingsystem -notlike "*2008 R2*" -and enabled -eq "true" -and Operatingsystem -like "*Windows Server*"} | select nameForeach ($server in $Servers){ Get-WindowsFeature -name FileAndStorage-Services -ComputerName $server.Name | Where installed | ft $server.name, Name, Installstate} |
Пример поиска контроллера домена:
|
1
2
3
4
5
6
|
Import-Module ActiveDirectory$Servers=Get-ADComputer -Properties * -Filter {Operatingsystem -notlike "*2008 R2*" -and enabled -eq "true" -and Operatingsystem -like "*Windows Server*"} | select nameForeach ($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) на текущий сервер, выполните следующую команду:
|
1
|
Install-WindowsFeature DNS -IncludeManagementTools |
Установка роли «Active Directory Domain Services»:
|
1
|
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools |
По умолчанию командлет устанавливает все зависимые роли и компоненты. Чтобы отобразить список зависимостей перед установкой, используйте опцию -WhatIf:
|
1
|
Install-WindowsFeature -Name UpdateServices -WhatIf |
Чтобы установить роль узла сеанса удалённого рабочего стола, роль лицензирования RDS и инструменты удалённого управления RDS, используйте следующую команду:
|
1
|
Install-WindowsFeature -ComputerName ИМЯ_КОМПЬЮТЕРА RDS-RD-Server, RDS-Licensing -IncludeAllSubFeature -IncludeManagementTools -Restart |
Если вы добавите параметр -Restart, ваш сервер при необходимости будет автоматически перезагружен.
Вы также можете установить компонент с помощью следующей команды. Например, чтобы установить роль SMTP-сервера:
|
1
|
Get-WindowsFeature -Name SMTP-Server | Install-WindowsFeature |
Как с помощью PowerShell развернуть роли на нескольких удалённых серверах Windows?
Есть ещё один интересный вариант при развёртывании типовых серверов. Вы можете установить необходимые функции на эталонном сервере Windows и экспортировать список установленных ролей в файл CSV:
|
1
2
|
Get-WindowsFeature | where{$_.Installed -eq $True} | select name | Export-Csv C:\PS\InstalledRoles.csv -NoTypeInformation -VerboseGet-Content C:\PS\InstalledRoles.csv |
После этого вы сможете использовать этот CSV-файл для установки того же набора ролей на других типичных серверах:
|
1
|
Import-Csv C:\PS\Roles.csv | foreach{ Install-WindowsFeature $_.name } |
Если роль или функция уже установлены, команда вернёт NoChangeNeeded и продолжит установку следующей роли.
Или, чтобы установить один и тот же набор ролей на нескольких удалённых серверах, вы можете использовать эту команду:
|
1
2
|
$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.
Например, чтобы удалить роль сервера печати, выполните команду:
|
1
|
Remove-WindowsFeature Print-Server -Restart |





