Для установки ролей и компонентов в Powershell есть 3 основные команды Install-WindowsFeature, Enable-WindowsOptionalFeature и Add-WindowsCapability. Каждая из этих команд имеет свое применение и может отличаться в разных релизах Windows. В этой статье будет рассмотрен процесс установки ролей и компонентов используя обе команды на примерах.
Типы команд устанавливающие роли с Powershell
В Windows есть множество команд, с помощью которых можно установить роль или компонент. Если учесть все команды, которые можно использовать в Powershell - получится следующий список:
- Add-WindowsCapability;
- Enable-WindowsOptionalFeature;
- Install-WindowsFeature;
- Add-WindowsFeature;
- dism.exe;
- pkgmgr.exe.
Командлеты, которые относятся только к Powershell разделяются на 3 типа:
- WindowsFeature - относится к модулю ServerManager. Имеет возможности относящиеся только Windows Server и установке и удалению ролей и компонентов;
- WindowsOptionalFeature - относится к модулю DISM, который наследует функционал аналогичной cmd утилиты. Основное предназначение - работа с компонентами Windows. Компоненты доступные через эти команды можно увидеть в GUI "Включение или отключение компонентов Windows". Это старый функционал и его компоненты переезжают в интерфейс Windows 10;
- WindowsCapability - так же относятся к DISM. Команда, которая постепенно заменяет 'WindowsOptionalFeature'. Имеет возможность установки компонентов из Windows Update. Если какие-то компоненты не получается найти через предыдущую команду, используйте эту.
Вывести все командлеты можно посмотреть так:
Get-Command -Noun 'WindowsFeature'
Get-Command -Noun 'WindowsOptionalFeature'
Get-Command -Noun 'WindowsCapability'
Если вы пользуетесь старыми версиями ОС, то какие-то модули могут быть не доступны. 2019 сервер одинаков с 2016:
Буква А обозначает алиас. Add-WindowsFeature, в 2016+ эта та же команда, что и Install-WondowsFeature.
Сама установка ролей не обозначает и ее настройку. После установки, обычно, появляется множество команд для настройки роли.
Получение списка ролей и их установка с Powershell Install-WindowsFeature
Что бы получить список ролей можно использовать Get-WindowsFeature. Эта команда, как и все 'WindowsFeature', может работать локально и удаленно. По умолчанию она возвращает роли и компоненты. Несколько примеров выполнения командлета:
# получаем список всех ролей
Get-WindowsFeature
# получаем список только установленных ролей
Get-WindowsFeature | where Installed -eq $True
# вывод подробной информации о роли на примере Active Directory
Get-WindowsFeature -Name 'AD-Domain-Services' | select *
# вывод ролей с удаленного компьютера
Get-WindowsFeature -ComputerName 'localhost'
# получение списка компонентов (Features)
Get-WindowsFeature | where FeatureType -eq 'Feature'
# получение только ролей (roles)
Get-WindowsFeature | where FeatureType -eq 'Role'
# получаем роли содержащие AD в названии
Get-WindowsFeature -Name '*AD*'
Имена для установки роли берутся из колонки 'Name'. Если вы до сих пор плохо понимаете что именно получает и устанавливает эта команда - откройте 'Server Manager' на 'Windows Server' и посмотрите меню установки:
Сам пакет WindowsFeature (модуль ServerManager) может быть установлен на Windows 10 с RSAT.
Базовая установка роли, но не совсем верная, на примере Active Directory Domain Services, будет следующей:
Install-WindowsFeature -Name 'AD-Domain-Services'
Перед использованием командлета обратите внимание на 2 параметра, которые вы можете указать:
- IncludeManagementTools - добавляет к установке модули Powershell и панели администрирования;
- IncludeAllSubFeature - подразумевает, что вы устанавливаете не одну роль, а всю вложенную ветку.
Если вы забудете указать параметры указанные выше, то команду можно будет выполнить повторно с их включением.
Так же доступны следующие параметры:
- LogPath - путь до файла, в который вы хотите сохранить лог установки;
- Restart - перезагрузить компьютер если это понадобится после установки;
- Source - внешний источник для установки роли;
- Vhd - установка на vhd диск;
- ConfigurationFilePath - перед установкой роли в Server Manager он предлагает сохранить конфигурацию. Это конфигурацию можно использовать здесь.
Если бы я устанавливал Active Directory на обычный GUI сервер, удаленно, то это бы выглядело так:
Install-WindowsFeature -Name 'AD-Domain-Services' -ComputerName 'AD1' -IncludeManagementTools -LogPath 'C:\ad1.log'
Если удаленный сервер работает под другими учетными данными, то передать их можно использовав команду 'Get-Credential'. В 'ComputerName' можно указывать как DNS имя, так и IP адрес.
Пример установки нескольких ролей подряд, удаленно и под другими учетными данными:
$cred = Get-Credential
'XPS-Viewer', 'AD-Domain-Services' | Install-WindowsFeature -ComputerName 'AD1' -IncludeManagementTools -Credential $cred
Удалить роль можно так:
Uninstall-WindowsFeature -Name 'DNS' -IncludeManagementTools
'DNS', 'AD-Domain-Services' | Uninstall-WindowsFeature -IncludeManagementTools
Если добавить параметр 'Remove', то роль будет удалена еще и с папки 'WinSxS'. Остальные параметры аналогичны.
Установка компонентов с Enable-WindowsOptionalFeature
Список компонентов, с которыми можно работать команда группы 'WindowsOptionalFeature' аналогичны следующем окну:
Учитывая, что это окно уже является наследием более старых систем (до Windows 10), вы можете не найти все компоненты. Например RSAT, который раньше можно было найти в этом окне, теперь доступен через интерфейс 'Приложения и возможности' Windows 10. Команды в этих случаях тоже отличаются.
Для получения всех компонентов нужно выполнить следующую команду:
Get-WindowsOptionalFeature -Online
Параметр '-Online' говорит, что пакеты будут искаться на этом же компьютере. Можно поставить '-Path', с указанием пути до образа Windows, что бы увидеть какие компоненты доступны там.
Несколько вариантов выполнения команды:
# получение списка всех включенных компонентов
Get-WindowsOptionalFeature -Online | where state -eq 'Enabled'
# получаем компоненты в которых встречается 'hyper'
Get-WindowsOptionalFeature -Online -FeatureName '*hyper*'
Учитывая, что команды относятся к модулю 'DISM', мы можем работать с образами используя параметры 'PackagePath' и 'Path'. Такая возможность есть во всех командах 'WindowsOptionalFeature'.
Для того, что бы включить компонент нужно выполнить следующую команду:
Enable-WindowsOptionalFeature -FeatureName "TelnetClient" -Online
В следующей команде указано, что нам нужно собрать все логи (а не только ошибки) и сохранить их по указанному пути:
Enable-WindowsOptionalFeature -FeatureName "TelnetClient" -Online -LogLevel 'WarningsInfo' -LogPath 'C:\feature.log'
Отключение приложения выполняется следующим образом:
Disable-WindowsOptionalFeature -FeatureName "TelnetClient" -Online
WindowsOptionalFeature так же используется для подготовки Nano сервера т.к. там нет WindowsFeature и пакеты с ролями сначала импортируются, а затем включаются.
Установка компонентов с Add-WindowsCapability
В предыдущем разделе было упомянуто о переезде многих компонентов в интерфейс Windows 10. Командлеты 'WindowsCapability' работают именно с ними. Если мы выполним следующую команду, которая очень похожа на предыдущую, то мы увидим совершенно разные пакеты:
Get-WindowsCapability -Online
Эти компоненты соответствуют следующему окну в Windows 10:
Некоторый варианта выполнения программы:
# получение списка всех установленных компонентов
Get-WindowsCapability -Online | where State -eq 'Installed'
# получаем компоненты в которых встречается 'RSAT'
Get-WindowsCapability -Online -FeatureName '*RSAT*'
В отличие от предыдущей команды - эта программа может устанавливать компоненты из Windows Update. Поэтому в ней можно увидеть значения 'DownloadSize' и 'InstallSize'. В остальном это одинаковые команды.
Установка:
Add-WindowsCapability -Name 'Rsat.WSUS.Tools~~~~0.0.1.0' -Online
УУдаление:
Remove-WindowsCapability -Name 'Rsat.WSUS.Tools~~~~0.0.1.0' -Online
...
Подписывайтесь на наш Telegram канал
Теги: #powershell