Управление ролями и компонентами Windows Server из PowerShell

В Windows Server 2012R2/2016/2019 вы можете устанавливать и удалять различные роли и компоненты сервера через графический Server Manager. Однако в большинстве случаев эти же самые операции можно выполнить гораздо быстрее из консоли PowerShell. В этой статье мы рассмотрим особенности управления ролями и компонентами в актуальных версиях Windows Server.

Как вывести все установленные роли и компоненты Windows Server?

Чтобы вывести список всех доступных ролей и компонентов Windows Server используется командлет Get-WindowsFeature . Если выполнить его без параметров, появится информация обо всех компонентах.

Как вы видите, отображается название компонента (Display Name), его системное имя (Name) и состояние (Install State: Installed, Available или Removed ). Список ролей и компонентов представляет собой дерево со вложенными ролями, которое напоминает то, которые вы видите при установке ролей через графический Server Manager. Для установки и удаления ролей и компонентов через PowerShell, вам нужно знать их системное имя, которое содержится в столбце Name .

Совет . Если роль или функция находится в состоянии Removed , значит ее установочные файлы удалены из локального репозитария системы ( уменьшение размера папки WinSxS ) и вы не сможете установить эту роль.

Роли и компоненты удаляются из образа так:

Uninstall-WindowsFeature –Name DHCP –Remove

Чтобы установить удаленную роль, воспользуйтесь командлетом:

Install-WindowsFeature DHCP (понадобится доступ в Интернет)

Либо вы можете восстановить компоненты их дистрибутива с вашей версией Windows Server. Данная команда установит роль DHCP сервера .

Install-WindowsFeature DHCP -Source E:sourcessxs

Вы можете вывести список установленных компонентов сервера:

Get-WindowsFeature | Where-Object {$_. installstate -eq "installed"} | ft Name,Installstate

Судя по скриншоту, данный сервер используется как файловый сервер (роли FileAndStorage-Services, Storage-Services). Большинство оставшихся компонентов используются для управления и мониторинга сервера.

Если вы не знаете точно имя роли, можно использовать знаки подстановки. Например, чтобы проверить какие из web компонентов роли IIS установлены, выполните (немного сократим синтаксис):

Get-WindowsFeature -Name web-* | Where installed

Вы можете получить список установленных компонентов на удаленном Windows Server:

Get-WindowsFeature -ComputerName msk-prnt1 | Where installed | ft Name,Installstate

Судя по установленным ролям Print-Services и Print-Server, этот сервер используется в качестве сервера печати.

Вы можете использовать командлет Get-WindowsFeature для поиска серверов в домене, на которых установлена определенная роль. Вы можете искать на серверах в определенном OU Active Directory с помощью командлета Get-ADComputer из модуля ActiveDirectory for PowerShell , или по указанному списку серверов ( $servers = ('server1', 'server2') ). Например, нам нужно найти все файловые сервера c ролью FileAndStorage-Services в указанном контейнере AD (я использую редактор PS — Visual Studio Code )

import-module activedirectory
$Servers=get-adcomputer -properties * -Filter {Operatingsystem -notlike "*2008*" -and enabled -eq "true" -and Operatingsystem -like "*Windows Server*"} -SearchBase ‘OU=Servers,OU=MSK,DC=remontka.com,DC=ru’ |select name
Foreach ($server in $Servers)
{
Get-WindowsFeature -name FileAndStorage-Services -ComputerName $server.Name | Where installed | ft $server.name, Name, Installstate
}

В результате у нас появился список серверов, на которых установлена данная роль.

Установка ролей и компонентов Windows Server из PowerShell

Для установки ролей и компонентов в Windows Server используется командлет Install-WindowsFeature.

Чтобы установить роль DNS на текущем сервере и инструменты управления (в том числе модуль Powershell – DNSServer ), выполните:

Install-WindowsFeature DNS -IncludeManagementTools

По-умолчанию командлет устаналивает все необходимые зависимые роли и компоненты при установке роли. Чтобы вывести список зависимостей до установки воспользуйтесь параметров.
Install-WindowsFeature -name UpdateServices -whatif

Например, для установки роли сервера обновлений WSUS , необходимо установить некоторые компоненты IIS.

What if: Continue with installation?
What if: Performing installation for "[Windows Server Update Services] Windows Server Update
What if: Performing installation for "[Windows Server Update Services] WID Database".
What if: Performing installation for "[Windows Server Update Services] WSUS Services".
What if: Performing installation for "[Web Server (IIS)] Windows Authentication".
What if: Performing installation for "[Web Server (IIS)] Dynamic Content Compression".
What if: Performing installation for "[Web Server (IIS)] Performance".
What if: Performing installation for "[Web Server (IIS)] Static Content".
What if: Performing installation for "[Windows Internal Database] Windows Internal Database".
What if: The target server may need to be restarted after the installation completes.

Чтобы установить роль Remote Desktop Session Host, службу лицензирования RDS и утилиты управления RDS на удаленном сервере, воспользуйтесь командой:

Install-WindowsFeature -ComputerName msk-rds21 RDS-RD-Server, RDS-Licensing –IncludeAllSubFeature –IncludeManagementTools –Restart

C параметром –Restart сервер будет автоматически перезагружен, если установленный компонент это потребует.

Также можно установить компонент такой командой (например роль SMTP сервера ):

Get-WindowsFeature -Name SMTP-Server | Install-WindowsFeature

Деплой ролей на множество серверов Windows Server

Еще одна интересная возможность при развертывании однотипных серверов. Вы можете установить необходимые компоненты на эталонном Windows Server и экспортируете список установленных ролей в CSV файл :

Get-WindowsFeature | where{$_.Installed -eq $True} | select name | Export-Csv C:psRoles.csv -NoTypeInformation –Verbose

Потом вы можете использовать этот CSV файл для установки такого же набора ролей на других типовых серверах:

Import-Csv C:PSRoles.csv | foreach{ Install-WindowsFeature $_.name }

Если роль или компонент уже установлен, команда вернет NoChangeNeeded и продолжит установку следующей роли.

Либо для установки одинакового набора ролей сразу на нескольких серверах можно использовать такую команду:

$servers = ('srv1', 'srv2',’srv3’)
foreach ($server in $servers) {Install-WindowsFeature RDS-RD-Server -ComputerName $server}

Как удалить роль или компонент в Windows Server с помощью PowerShell?

Для удаления ролей и компонентов Windows Server используется командлет Remove-WindowsFeature .

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

Remove-WindowsFeature Print-Server -Restart

admin

Share
Published by
admin

Recent Posts

Лучшие дистрибутивы Linux

Если говорить о том, какие лучшие дистрибутивы Linux мы знаем, то этот список может быть…

1 неделя ago

Лучшие браузеры для Ubuntu

Хотя Ubuntu и поставляется со встроенным обозревателем Firefox многие пользователи считают что это не самая…

1 неделя ago

Установка Remmina Ubuntu 16.04 или 16.10

Что такое Remmina? Remmina — это совершенно бесплатный и свободный клиент так называемого удаленного рабочего…

1 неделя ago

Плюсы Ubuntu

Как мы знаем, Ubuntu это самая популярная сборка из систем на базе ядра Linux. У…

1 неделя ago

Выбираем ноутбук для Linux

Выбор ноутбука для каждого пользователя это довольно кропотливый процесс. Люди стараются подобрать ноутбук который будет…

1 неделя ago

Установка Linux рядом с Windows 10

Если вы решили ознакомиться с операционной системой Linux более детально и задались вопросом как установить…

1 неделя ago