Powershell - установка ролей и компонентов Windows


12 июня 2019


Powershell - установка ролей и компонентов Windows

Для установки ролей и компонентов в Powershell у нас есть 2 командлета и каждый со своими особенностями. Первый WindowsFeature и второй WindowsOptionalFeature (этот пойдет на замену dism). 

Get-WindowsFeature Enbable-WindowsOptionalFeature

Т.е. в 2008 R2 эти командлеты работать будут. В Win 7 скорее всего тоже, но зависит от версии powershell.

Install-WindowsFeature

Этот командлет идет как альтернатива Server Manager и может установить все эти же роли и компоненты. Работает ли он не на серверной версии, а например с установленным RSAT - не проверял, но скорее всего да. Один из плюсов этой команды, что мы можем установить роль сразу на множество машин. Для получения всех ролей и компонентов запустим:

Get-WindowsFeature

Если мы хотим получить не такой большой вывод, а более конкретную роль или компонент, то сделаем так:

Get-WindowsFeature -Name *AD*

Способ выше будет фильтровать по колонке Name (на рис.2) - это имя нужно для установки. Если мы хотим фильтровать по полному названию или состоянию роли (установлена или нет), то нужно выполнить другие команды.

получение ролей и компонентов powershell

Если мы хотим получить роли по полному имени - выполним команду:

Get-WindowsFeature | where {$_.DisplayName -like "*Light*"}

Где Light - это имя сервиса. Звездочки по обе стороны говорят, что до и после могут находиться еще символы. 

Если хотим получить статус роли (колонка 3) сделаем такой запрос:

Get-WindowsFeature | where {$_.InstallState -eq "Installed"}

Отобразятся все установленные роли.

Далее выполним установку:

Install-WindowsFeature -Name DNS -IncludeAllSubFeature -IncludeManagementTools

Можно и так, но плохая практика т.к. может быть несколько ролей с вхождением *DNS*:

Get-WindowsFeature -Name *DNS* | Install-WindowsFeature -IncludeAllSubFeature -IncludeManagementTools

Где:
-Name - имя роли с колонки 2 на рисунке.
-IncludeAllSubFeature - говорит о том, что по умолчанию будут включены все необходимые роли и компоненты. Если вдруг забыли включить, то можно и после, по крайне мере у меня все работало на тестовых стендах, но такой вариант не очень хорошая практика.
-IncludeManagementTools - установка компонентов интерфейса.

Причем если установка уже была произведена, то переустановки или похожих действий не будет.

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

Install-WindowsFeature -Name DNS -ComputerName DC2 -IncludeAllSubFeature -IncludeManagementTools

-ComputerName - имя компьютера или IP

Если установка на другом компьютере будет под другим пользователем:

Install-WindowsFeature -Name DNS -ComputerName DC2 -IncludeAllSubFeature -IncludeManagementTools -Credential administrator

-Credential - логин пользователя

Для удаления роли или компонента используется:

Uninstall-WindowsFeature -Name DNS

Если у нас есть какие-то сомнения в работе команд выше, то мы можем использовать ключ -WhatIF, который дословно "что если я исполню эту команду". Т.е. мы ничего не поломаем, узнаем нужна ли будет перезагрузка, какие компоненты будут доустановлены и будет ли ошибка. Пример:

Powershell WhatIF

Ключ -Verbose установит компонент с детальным отображением процесса:

Powershell Verbose

Далее нужно будет настраивать роль. Для каждой роли и компонента он свой. Например для создания леса делаем Install-ADDSForest.

Через эту команду можно установить сервисы и на VHD диск или множество ролей с XML файла. 

Enable-WindowsOptionalFeature

Этот командлет включен в клиентские редакции Windows и серверные, он устанавливает компоненты через powershell. Если сравнивать с работой через интерфейс команда аналогина этому окну:

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

Для получения всех компонентов выполняем:

Get-WindowsOptionalFeature -Online

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

Что бы отфильтровать вывод по имени:

Get-WindowsOptionalFeature -FeatureName *Vir* -Online

Фильтруем по статусу:

Get-WindowsOptionalFeature -Online | where {$_.State -eq "Enabled"} |ft

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

Enable-WindowsOptionalFeature -FeatureName "TelnetClient" -Online

Если хотим отключить - меняем глагол:

Disable-WindowsOptionalFeature -FeatureName "TelnetClient" -Online

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

...

Теги: #powershell


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.