В Windows Server 2012R2/2016/2019 возможно использование PowerShell для управления ролями и компонентами, что значительно быстрее, чем использование графического функционала(а также является единственным способом при работе с установленными без графической оболочки экземплярами ОС).
Для выведения информации о всех доступных роля и компонентах Windows Server используется командлет
Get-WindowsFeature
. Если выполнить его без параметров, он выдает информацию о всех компонентах.
Отображается название компонента (Display Name), его системное имя (Name) и состояние (Install State: Installed, Available или Removed). По структуре выводимое древо похоже на графический Server Manager .
Для опреаций над ролями и компонентами необходимо использовать их имя, выводимое в графе Name (например, AD-Certificate). В случае, если состояние роли или компонента отображается как Removed , значит установочные файлы были удалены из репозитория системы, и нужно заново скачать их, используя
Install-WindowsFeature [name]
, где [name] - имя компонента, например AD-Certificate, DHCP и тп.
В случае отсутствия соединения с интернет, можно воспользоваться дистрибутивом(пусть он будет диском F:) -
Install-WindowsFeature [name] -Source F:\sources\sxs
Список только установленных(не всех доступных) компонентов сервера:
Get-WindowsFeature | Where-Object {$_. installstate -eq "installed"} | ft Name,Installstate
Для работы с удаленным сервером можно использовать(где [servername] - его имя):
Get-WindowsFeature -ComputerName [servername] | Where installed | ft Name,Installstate
Как уже было указано выше, для установки ролей и компонентов используется командлет Install-WindowsFeature.
По-умолчанию командлет устаналивает все необходимые зависимые роли и компоненты при установке роли. Чтобы вывести список зависимостей до установки воспользуйтесь параметром -whatif:
Install-WindowsFeature -name UpdateServices -whatif
Одним из удобств использования PowerShell является возможность одновременной установки на множество однотипных серверов.
Для этого создаем(или копируем с эталонного сервера) файл .csv со списком устанавливаемых ролей.
Экспорт с эталонного сервера:
Get-WindowsFeature | where{$_.Installed -eq $True} | select name | Export-Csv C:\Roles.csv -NoTypeInformation –Verbose
Результатом будет экспорт в файл C:\Roles.csv.
После чего можно использовать этот файл(при желании, можно его модифицировать вручную) для установки на множестве северов
Import-Csv C:\Roles.csv | foreach{ Install-WindowsFeature $_.name }
Если нужно установить одну роль на множество серверов:
$serv = ('server1', 'server2',’server3’)
foreach ($serv in $serv) {Install-WindowsFeature [name] -ComputerName $serv}
где $serv - переменная, содержащая список имен серверов, а [name] - имя устанавливаемой роли.
Удаление же ролей и компонентов с сервера не представляет никакой сложности, используя следующий командлет:
Remove-WindowsFeature [name] -Restart
добавление -Restart приведет к перезагрузке сервера после удаления роли.
Для просмотра возможных ролей можно также(кроме использования функционала Get-WindowsFeature) выполнить
servermanagercmd -query
, после чего получим вывод списка возможных ролей.
Источники: https://technet.microsoft.com