Как в Powershell установить роли и компоненты используя Install-WindowsFeature и Add-WindowsCapability


02 июня 2020


Установка ролей и компонентов Windows с Powerhsell Add-WindowsCapability и Install-WindowsFeature

Для установки ролей и компонентов в 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'

Варианты модулей и команд для установки ролей и компонентов в Powershell

Если вы пользуетесь старыми версиями ОС, то какие-то модули могут быть не доступны. 2019 сервер одинаков с 2016:

Варианты модулей и команд для установки ролей Powershell в зависимости от ОС

Буква А обозначает алиас. 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*'

Получение списка установленных ролей с Powershell

Имена для установки роли берутся из колонки 'Name'. Если вы до сих пор плохо понимаете что именно получает и устанавливает эта команда - откройте 'Server Manager' на 'Windows Server' и посмотрите меню установки:

Список установленных ролей с Powershell

Список установленных компонентов Powershell

Сам пакет WindowsFeature (модуль ServerManager) может быть установлен на Windows 10 с RSAT.

Базовая установка роли, но не совсем верная, на примере Active Directory Domain Services, будет следующей:

Install-WindowsFeature -Name 'AD-Domain-Services'

Установка роли с Powershell Install-WindowsFeature

Перед использованием командлета обратите внимание на 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'

Установка роли с Powershell Install-WindowsFeature удаленно и логами

Если удаленный сервер работает под другими учетными данными, то передать их можно использовав команду 'Get-Credential'.  В 'ComputerName' можно указывать как DNS имя, так и IP адрес.

Пример установки нескольких ролей подряд, удаленно и под другими учетными данными:

$cred = Get-Credential
'XPS-Viewer', 'AD-Domain-Services' | Install-WindowsFeature -ComputerName 'AD1' -IncludeManagementTools -Credential $cred

Установка роли с Powershell Install-WindowsFeature под другим пользователем

Удалить роль можно так:

Uninstall-WindowsFeature -Name 'DNS' -IncludeManagementTools
'DNS', 'AD-Domain-Services' | Uninstall-WindowsFeature -IncludeManagementTools

Если добавить параметр 'Remove', то роль будет удалена еще и с папки 'WinSxS'. Остальные параметры аналогичны.

 

 

Установка компонентов с Enable-WindowsOptionalFeature

Список компонентов, с которыми можно работать команда группы 'WindowsOptionalFeature' аналогичны следующем окну:

Включение компонентов Windows

Учитывая, что это окно уже является наследием более старых систем (до Windows 10), вы можете не найти все компоненты. Например RSAT, который раньше можно было найти в этом окне, теперь доступен через интерфейс 'Приложения и возможности' Windows 10. Команды в этих случаях тоже отличаются.

Для получения всех компонентов нужно выполнить следующую команду:

Get-WindowsOptionalFeature -Online

Получение списка компонентов Windows с Powershell Get-WindowsOptionalFeature

Параметр '-Online' говорит, что пакеты будут искаться на этом же компьютере. Можно поставить '-Path', с указанием пути до образа Windows, что бы увидеть какие компоненты доступны там.

Несколько вариантов выполнения команды:

# получение списка всех включенных компонентов
Get-WindowsOptionalFeature -Online | where state -eq 'Enabled'

# получаем компоненты в которых встречается 'hyper'
Get-WindowsOptionalFeature -Online -FeatureName '*hyper*'

Получение списка включенных компонентов Windows с Powershell Get-WindowsOptionalFeature

Учитывая, что команды относятся к модулю 'DISM', мы можем работать с образами используя параметры 'PackagePath' и 'Path'. Такая возможность есть во всех командах 'WindowsOptionalFeature'.

Для того, что бы включить компонент нужно выполнить следующую команду:

Enable-WindowsOptionalFeature -FeatureName "TelnetClient" -Online

В следующей команде указано, что нам нужно собрать все логи (а не только ошибки) и сохранить их по указанному пути:

Enable-WindowsOptionalFeature -FeatureName "TelnetClient" -Online -LogLevel 'WarningsInfo' -LogPath 'C:\feature.log'

Включение компонента Windows с Powershell Enable-WindowsOptionalFeature

Отключение приложения выполняется следующим образом:

Disable-WindowsOptionalFeature -FeatureName "TelnetClient" -Online

WindowsOptionalFeature так же используется для подготовки Nano сервера т.к. там нет WindowsFeature и пакеты с ролями сначала импортируются, а затем включаются.

 

Установка компонентов с Add-WindowsCapability

В предыдущем разделе было упомянуто о переезде многих компонентов в интерфейс Windows 10. Командлеты 'WindowsCapability' работают именно с ними. Если мы выполним следующую команду, которая очень похожа на предыдущую, то мы увидим совершенно разные пакеты:

Get-WindowsCapability -Online

Получение списка компонентов Powershell с Get-WindowsCapability

Эти компоненты соответствуют следующему окну в Windows 10:

Некоторый варианта выполнения программы:

# получение списка всех установленных компонентов
Get-WindowsCapability -Online | where State -eq 'Installed'

# получаем компоненты в которых встречается 'RSAT'
Get-WindowsCapability  -Online -FeatureName '*RSAT*'

Получение списка установленных компонентов с Powershell Get-WindowsCapability

В отличие от предыдущей команды - эта программа может устанавливать компоненты из 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

Установка и удаление компонентов с Powershell Add-WindowsCapability 

...

Теги: #powershell


Каналы
Telegram FixMyPc Telegram Лента FixMyPC RSS Rss
Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, приобретённого опыта и лучшие практики в системном администрировании и программировании.