Перейти к содержимому

Install windowsfeature не распознано как имя командлета

  • автор:

Невозможно установить компоненты в Windows Server 2012 R2

В этой статье описывается решение проблемы, которая не позволяет добавлять компоненты на компьютер под управлением Windows Server 2012 R2, на котором выполняется установка основных серверных компонентов.

Применяется к: Windows Server 2012 R2
Исходный номер базы знаний: 2913316

Симптомы

Рассмотрим следующий сценарий.

  • У вас есть компьютер под управлением Windows Server 2012 R2.
  • На компьютере выполняется установка основных серверных компонентов.
  • Параметр Server Core был установлен с помощью носителя корпоративного лицензирования, который не имеет доступа к клиентский компонент Центра обновления Windows.

В этом сценарии установка компонента завершается сбоем. Кроме того, появляется следующее сообщение об ошибке:

Ошибка: 0x800f081f
Не удалось найти исходные файлы. Используйте параметр «Источник», чтобы указать расположение файлов, необходимых для восстановления функции. Дополнительные сведения об указании расположения источника см. в разделе Настройка источника восстановления Windows.

Решение

Для решения этой проблемы воспользуйтесь одним из описанных ниже способов.

Способ 1. Подключение к Интернету

Если сервер может подключиться к клиентский компонент Центра обновления Windows для установки компонента, разрешите серверу установить подключение.

Способ 2. Использование установочного носителя Windows Server 2012 R2

Если серверу не удается подключиться к клиентский компонент Центра обновления Windows, скачайте новый носитель корпоративного лицензирования (выпущенный 11 декабря 2013 г.) и используйте команду Install-WindowsFeature PowerShell. Для этого выполните следующие действия:

  1. Вставьте обновленный DVD-диск Windows Server 2012 R2 в DVD-диск компьютера.
  2. Введите следующую команду, чтобы определить номер индекса, необходимый для шагов 3 и 4.

Dism /get-wiminfo /wimfile::\sources\install.wim 

Примечание. В этой команде <диск>представляет фактическую букву диска.
Пример выходных данных команды DISM:

Index : 1 Name : Windows Server 2012 R2 SERVERSTANDARDCORE Description : Windows Server 2012 R2 SERVERSTANDARDCORE Size : 6,653,342,051 bytes Index : 2 Name : Windows Server 2012 R2 SERVERSTANDARD Description : Windows Server 2012 R2 SERVERSTANDARD Size : 11,807,528,410 bytes Index : 3 Name : Windows Server 2012 R2 SERVERDATACENTERCORE Description : Windows Server 2012 R2 SERVERDATACENTERCORE Size : 6,653,031,430 bytes Index : 4 Name : Windows Server 2012 R2 SERVERDATACENTER Description : Windows Server 2012 R2 SERVERDATACENTER Size : 11,809,495,151 bytes 

Примечание. При указании <номера индекса>в командлете Install-WindowsFeature PowerShell на шаге 4 необходимо использовать номер индекса для полной (неядерной) версии установленного номера SKU. Например, если у вас установлена Windows Server 2012 R2 Datacenter, обязательный номер индекса — 4. Если у вас установлена Windows Server 2012 R2 Standard, обязательный номер индекса — 2.

Powershell.exe 
Install-WindowsFeature Server-Gui-Mgmt-Infra,Server-Gui-Shell -Source wim::\sources\install.wim:

Например, если ваш носитель находится на диске F и вы устанавливаете полную версию Datacenter, введите следующую команду:

Install-WindowsFeature Server-Gui-Mgmt-Infra,Server-Gui-Shell -Source wim:f:\sources\install.wim:4 

Дополнительные сведения

Носитель корпоративного лицензирования Windows Server 2012 R2 предназначен для того, чтобы требовать доступа к клиентский компонент Центра обновления Windows для добавления дополнительных компонентов или функций, которые не включены в параллельный репозиторий. Если у сервера нет доступа к Интернету или доступ к клиентский компонент Центра обновления Windows был ограничен, вы не сможете включить дополнительные компоненты или функции с помощью команды DISM, командлетов Windows PowerShell или диспетчер сервера.

Состояние

Корпорация Майкрософт подтвердила, что это проблема в упаковке корпоративных лицензированных носителей для Windows Server 2012 R2. Это поведение не является конструктивным и было исправлено в сборке корпоративного лицензирования, выпущенной 11 декабря 2013 г. Используйте новый носитель для любых установок Windows Server 2012 R2. Сведения об устранении этой проблемы на серверах, на которых невозможно установить компоненты, см. в разделе Решение .

Сбор данных

Если вам нужна помощь со стороны службы поддержки Майкрософт, мы рекомендуем собирать сведения, выполнив действия, описанные в разделе Сбор сведений с помощью TSS для проблем, связанных с развертыванием.

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

Для установки ролей и компонентов в Powershell есть 3 основные команды Install-WindowsFeature, Enable-WindowsOptionalFeature и Add-WindowsCapability. Каждая из этих команд имеет свое применение и может отличаться в разных релизах Windows. В этой статье будет рассмотрен процесс установки ролей и компонентов используя обе команды на примерах.

Навигация по посту

  • Типы команд устанавливающие роли с Powershell
  • Получение списка ролей и их установка с Powershell Install-WindowsFeature
  • Установка компонентов с Enable-WindowsOptionalFeature и их получение
  • Установка компонентов с Add-WindowsCapability

Типы команд устанавливающие роли с 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: системное администрирование и программирование

Всё о PowerShell в Windows и на Linux. Системное администрирование Windows

Как установить и использовать Модуль Active Directory для Windows PowerShell

Модуль Active Directory для Windows PowerShell — один из основных инструментов для администрирования домена, управления объектами в Active Directory и получения различной информации о компьютерах AD, пользователях, группах и т. д. Любой администратор Windows должен знать, как использовать как графическую оснастку AD (обычно это ADUC — Active Directory Users & Computers) и командлеты модуля RSAT-AD-PowerShell для выполнения повседневных задач администрирования Active Directory. В этой статье мы рассмотрим, как установить модуль PowerShell Active Directory в Windows, познакомимся с его основными функциями и популярными командлетами, которые полезны для управления и взаимодействия с AD.

Установка модуля Powershell Active Directory на Windows Server

Active Directory для Windows PowerShell уже встроен в операционные системы Windows Server (начиная с Windows Server 2008 R2), но по умолчанию не включен.

В Windows Server 2016, 2019 и 2022 вы можете установить модуль AD для PowerShell из Диспетчера серверов (Добавить роли и компоненты → Функции → Инструменты удалённого администрирования сервера → Инструменты администрирования ролей → Инструменты AD DS и AD LDS → Модуль Active Directory для Windows PowerShell).

В англоязычной версии сервера это соответственно в Server Manager: Add Roles and Features → Features → Remote Server Administration Tools → Role Administration Tools → AD DS and AD LDS Tools → Active Directory module for Windows PowerShell.

Если вы уже установили роль Active Directory Domain Services, то это означает, что модуль Powershell Active Directory уже активирован и дополнительных действий предпринимать не нужно.

Вы также можете установить модуль из консоли PowerShell с помощью команды:

Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature

Вы можете установить RSAT-AD-PowerShell не только на контроллеры домена. Подойдёт любой рядовой сервер домена или даже рабочая станция. Модуль PowerShell Active Directory устанавливается автоматически при развёртывании роли доменных служб Active Directory (AD DS) (при повышении уровня сервера до контроллера домена AD).

Модуль взаимодействует с AD через веб-службу Active Directory, которая должна быть установлена на вашем контроллере домена (связь осуществляется через TCP-порт 9389).

Как установить модуль Active Directory PowerShell в командной строке

Вы можете установить модуль RSAT-AD-PowerShell не только на Windows Server, но и на свои рабочие станции.

Если вы попытаетесь выполнить приведённую выше PowerShell команду:

Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature

то получите сообщение об ошибке:

Install-WindowsFeature: Целевым объектом указанного командлета не может быть клиентская операционная система Windows.

Причём независимо от того, какая у вас редакция Windows: Home, Pro, Enterprise.

Тем не менее, в Windows 10 build 1809 или новее пакет RSAT интегрирован в образ Windows (как компоненты по запросу), поэтому вы можете использовать эту команду PowerShell для установки модуля Active Directory:

Add-WindowsCapability -online -Name "Rsat.ActiveDirectory.DS-LDS.Tools"

Предыдущую команду нужно выполнять в командной строке с правами администратора.

Как установить модуль Active Directory PowerShell в Windows 11 в графическом интерфейсе

Для установки модуля Active Directory PowerShell в графическом интерфейсе в Windows 11 откройте «Settings» (Параметры), для этого нажмите Win+i и выберите вкладку «Apps» (Приложения), а затем перейдите в «Optional Features» (Дополнительные компоненты).

Теперь выберите «View features» (Просмотр компонентов) в строке «Add an optional feature» (Добавить компонент).

Для установки средств удалённого администрирования Active Directory найдите «RSAT: Active Directory Domain Services and Lightweight Directory Services Tools» (Средства удалённого администрирования сервера: средства доменных служб Active Director и служб облегчённого доступа к каталогам), поставьте галочку и нажмите на кнопку «Next» (Далее),

затем нажмите «Install» (Установить).

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

Чтобы в этом убедиться в строке поиска под надписью «Installed features» (Установленные компоненты) введите название искомого компонента.

Также помните, что в английской и локализованных версиях Windows данные компоненты называются по-разному!

Как установить модуль Active Directory PowerShell в Windows 10 в графическом интерфейсе

Для установки модуля Active Directory PowerShell в графическом интерфейсе, нажмите Win+x, затем в открывшемся меню выбираем «Apps and Features» (Приложения и возможности).

Далее выбираем «Optional Features» (Дополнительные компоненты).

Теперь выбираем «Add a feature» (Добавить компонент).

Для установки средств удалённого администрирования Active Directory выбираем «RSAT: Active Directory Domain Services and Lightweight Directory Services Tools» (Средства удалённого администрирования сервера: средства доменных служб Active Director и служб облегчённого доступа к каталогам) и нажимаем на кнопку «Install» (Установить).

Командлеты Active Directory PowerShell

В модуле Active Directory для Windows PowerShell есть множество командлетов для взаимодействия с AD. Каждая новая версия RSAT содержит больше командлетов, чем предыдущая. В Windows Server 2022 доступно 147 командлетов PowerShell для Active Directory.

Перед использованием командлетов модуля Active Directory вам необходимо импортировать его в сеанс PowerShell:

Import-Module ActiveDirectory

Начиная с Windows Server 2012 R2, Windows 8.1 и в последующих версиях модуль импортируется автоматически.

Если модуль Active Directory не установлен на вашем компьютере, вы можете импортировать его со своего контроллера домена (для этого вам нужны права администратора домена) или с другого настольного компьютера:

$psSess = New-PSSession -ComputerName ИМЯ_КОМПЬЮТЕРА Import-Module -PSsession $psSess -Name ActiveDirectory

В этих командах ИМЯ_КОМПЬЮТЕРА — это компьютер, который является Контроллером Домена, либо компьютером, на котором установлен модуль Powershell Active Directory.

Вы можете отобразить полный список доступных командлетов Active Directory с помощью команды:

Get-Command -module ActiveDirectory

Чтобы посчитать общее количество командлетов в модуле AD выполните команду:

Get-Command -module ActiveDirectory | measure-object | select count

Большинство командлетов RSAT-AD-PowerShell начинаются с префиксов Get-, Set- или New-.

  • Командлеты Get- класса используются для получения различной информации из Active Directory (Get-ADUser — свойства пользователя, Get-ADComputer — настройки компьютера, Get-ADGroupMember — членство в группе и так далее). Чтобы запустить их, вам не нужно быть администратором домена. Любой пользователь домена может запускать команды PowerShell для получения значений атрибутов объекта AD (кроме конфиденциальных, как в примере с LAPS);
  • Командлеты класса Set- используются для установки (изменения) параметров объекта в Active Directory. Например, вы можете изменить свойства пользователя (Set-ADUser), настройки компьютера (Set-ADComputer), добавить пользователя в группу и так далее. Для этого у вашей учётной записи должны быть разрешения на изменение свойств объекта;
  • Команды, начинающиеся с New- позволяют создавать объекты AD (создать пользователя – New-ADUser, создать группу – New-ADGroup);
  • Командлеты Remove- используются для удаления объектов AD.

Так вы можете получить помощь по любому командлету:

Get-Help КОМАНДЛЕТ Get-Help КОМАНДЛЕТ -Full

Вы можете отобразить примеры использования командлетов Active Directory следующим образом:

(Get-Help КОМАНДЛЕТ).examples
Get-Help КОМАНДЛЕТ -Examples

Всплывающие подсказки удобно использовать при вводе параметров командлета в PowerShell ISE.

Администрирование Active Directory с помощью модуля RSAT-AD-PowerShell

Давайте посмотрим на некоторые типичные задачи администратора, которые вы можете выполнять с помощью командлетов Active Directory для PowerShell.

Вы можете найти больше полезных примеров использования командлетов PowerShell для AD на веб-сайте pwsh.ru. Чтобы получить подробные инструкции и примеры использования, переходите по ссылкам, присутствующим в кратком описании каждого командлета.

New-ADUser: создание пользователей AD

Чтобы создать нового пользователя AD, вы можете использовать командлет New-ADUser. Вы можете создать пользователя с помощью следующей команды:

New-ADUser -Name "Mila Beck" -GivenName "Mila" -Surname "Beck" -SamAccountName "mbeck" -UserPrincipalName "mbeck@hackware.ru" -Path "OU=Users,OU=Berlin,OU=DE,DC=ds,DC=hackware,DC=ru" -AccountPassword(Read-Host -AsSecureString "Input User Password") -Enabled $true

Get-ADComputer: получение свойств компьютера

Чтобы отобразить информацию о свойствах компьютера в конкретном подразделении (имя компьютера и дата последнего входа в систему), используйте командлет Get-ADComputer:

Get-ADComputer -SearchBase 'OU=CA,OU=USA,DC=ds,DC=hackware,DC=ru' -Filter * -Properties * | FT Name, LastLogonDate -Autosize

Add-AdGroupMember: добавить пользователя AD в группы

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

Add-AdGroupMember -Identity LondonSales -Members e.braun, l.wolf

Отобразить список пользователей в группе AD и экспортировать его в файл CSV:

Get-ADGroupMember LondonSales -recursive | ft samaccountname | Out-File c:\ps\export_ad_users.csv

В предыдущей команде «ft» это командлет Format-Table.

Set-ADAccountPassword: сброс пароля пользователя в AD

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

Set-ADAccountPassword m.lorenz -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "Ne8Pa$$0rd1" -Force -Verbose) -PassThru

Как разблокировать, включить и отключить учётную запись AD?

Чтобы отключить учётную запись пользователя AD:

Disable-ADAccount m.lorenz

Чтобы включить учётную запись:

Enable-ADAccount m.lorenz

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

Unlock-ADAccount m.lorenz

Search-ADAccount: как найти неактивные и отключённые объекты?

Чтобы найти и отключить все компьютеры в домене AD, которые не входили в систему более 90 дней, используйте командлет Search-ADAccount:

$timespan = New-Timespan -Days 90 Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan $timespan | Disable-ADAccount

New-ADOrganizationalUnit: создание организационной единицы в AD

Чтобы быстро создать типичную структуру организационной единицы в AD, вы можете использовать сценарий PowerShell. Предположим, вы хотите создать несколько подразделений с именами состояний и создать в них типичные контейнеры объектов. Создание этой структуры AD вручную с помощью графической оснастки ADUC занимает довольно много времени. Модуль AD для PowerShell позволяет сделать это за секунды (кроме времени на написание скрипта):

$fqdn = Get-ADDomain $fulldomain = $fqdn.DNSRoot $domain = $fulldomain.split(".") $Dom = $domain[0] $Ext = $domain[1] $Sites = ("Nevada","Texas","California","Florida") $Services = ("Users","Admins","Computers","Servers","Contacts","Service Accounts") $FirstOU ="USA" New-ADOrganizationalUnit -Name $FirstOU -Description $FirstOU -Path "DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false ForEach-Object ($S in $Sites) < New-ADOrganizationalUnit -Name $S -Description "$S" -Path "OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false ForEach-Object ($Serv in $Services) < New-ADOrganizationalUnit -Name $Serv -Description "$S $Serv" -Path "OU=$S,OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false >>

После запуска сценария в Active Directory появляется следующая структура подразделений.

Move-ADObject: перемещение объектов между контейнерами AD

Чтобы перемещать объекты между контейнерами AD, вы можете использовать командлет Move-ADObject:

$TargetOU = "OU=Sales,OU=Computers,DC=ds,DC=hackware,DC=ru" Get-ADComputer -Filter 'Name -like "SalesPC*"' | Move-ADObject -TargetPath $TargetOU

Get-ADReplicationFailure: проверка сбоев репликации AD

Используя командлет Get-ADReplicationFailure, вы можете проверить состояние репликации между контроллерами домена AD:

Get-ADReplicationFailure -Target NY-DC01,NY-DC02

Get-ADDomainController: Получение информации о контроллерах домена

Чтобы получить информацию обо всех контроллерах домена в домене, используйте командлет Get-AdDomainController:

Get-ADDomainController -filter * | select hostname,IPv4Address,IsGlobalCatalog,IsReadOnly,OperatingSystem | format-table -auto

Итак, мы рассмотрели основные возможности модуля Active Directory PowerShell для администрирования домена AD. Я надеюсь, что это побудит вас продолжить изучение других функций модуля и автоматизировать большую часть задач управления AD.

Пытаемся автоматизировать процессы с помощью Powershell

В этой статье рассмотрим почему мы все любим Powershell на паре рабочих примеров. Все это будет полезно при инвентаризации, поиске конкретного компьютера и прочих делах. Powershell оборудован удобными и запоминающимися командлетами, автодополнение всего и интуитивные названия делают его наверное самым простым в освоении языком.

В этом руководстве рассмотрим несколько крутых по мнению автора команд и расскажем почему это круто. Начнем со снипетов.

Полезные снипеты:

Заносим компьютер в TrustedHosts

Пригодится при подключении к серверу по WinRm. Команда перезапишет предыдущее значение, будьте осторожны, добавляйте ip или имена хостов через запятую. Если все ваши хосты находятся в AD, трогать этот файл не нужно.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value '192.168.0.1'

Wildcard тоже работает, если не хотите каждый раз добавлять новый хост в TrustedHosts.

Set-Item WSMan:\localhost\Client\TrustedHosts -Value '*'

Храним пароль в зашифрованном виде в файле:

Пригодится для автоматизации, сильно облегчает жизнь при выполнении скриптов из планировщика, но при этом пароль хранится в безопасном виде.

Если выполнять скрипты из под зашедшего пользователя, будут использоваться креды этого пользователя.

Read-Host -AsSecureString | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .\Password.txt

Забираем зашифрованный пароль из файла:

$Password = Get-Content C:\Password.txt | ConvertTo-SecureString

Тоже самое можно проделать и с Credentials, заменим Read-Host на Get-Credential.

Get-Credential | ConvertTo-SecureString -AsPlainText -Force | ConvertFrom-SecureString | Out-File -FilePath .\Credential.txt

Получаем дату последней загрузки ОС.

(gcim win32_operatingsystem).LastBootUpTime

Тем же самым способом получаем еще и аптайм.

Get-CimInstance Win32_operatingsystem -ComputerName $computers | Select-Object LastBootUpTime, @> 

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

Именно программ, а не компонентов:

 Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize 

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

Get-PSDrive -PSProvider filesystem | where-object | Select-Object -property Root,@>, @>, @> 

Останавливаем процесс по его имени.

В этом примере останавливаем Chrome. Wildcard тоже подойдет, если хотите завершить всё.

Get-Process -Name "chrome" | Stop-Process

Копируем настройки доступа к папкам на дочерние папки

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

Копируем ACL у папки:

$Acl = Get-Acl -Path C:\folder\

Вставляем ACL на все файлы и подпапки:

Get-ChildItem -Path C:\Folder\ -Recurse | Set-Acl $Acl 

Полезные скрипты:

Вот тут начинается самое страшное веселье. Если вам нужно провести инвентаризацию, будет очень полезно глянуть. Если ваши компьютеры не в AD, то скрипт станет немного сложнее, итерировать придется по заранее составленному файлу, а пароли нужно будет брать из файла или через Get-Credential. Вся разница:

$ADComputers = (Get-ADComputer -filter *).DNSHostName
$Credentials = Get-Credential $Computers = Get-Content -Path C:\servers.txt

Получаем аптайм дату последней загрузки каждого из компьютеров в AD:

 $ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) < Invoke-Command $i < Get-CimInstance Win32_operatingsystem | Select-Object LastBootUpTime, @> > > 

Получаем все установленные программы на всех компьютерах AD:

$ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) < Invoke-Command -computername $i < gcim win32_product -computername $env:computername | Sort-Object -property Vendor,Name | Select-Object -property Vendor,Name, Caption >>

Тоже самое можно будет получить и для компонентов, подставив в Invoke-Command:

Get-WindowsFeature | Where-Object -Property "Installed" -EQ "Installed"

Получаем компьютеры, где запущен нужный нам процесс:

Если вы забыли на каком компьютере запущена та или иная программа, можно получить её таким способом. Рассмотрим на примере браузера:

$ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) < Invoke-Command -computername $i < Get-Process -Name "Chrome" -ErrorAction SilentlyContinue >>

Убить браузер можно будет так же легко, как и получить процесс:

$ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) < Invoke-Command -computername $i < Get-Process -Name "Chrome" | Stop-Process -ErrorAction SilentlyContinue >>

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

Кокретно в этом случае Java. Поможет при проведении инвентаризации можно будет посмотреть имена компьютеров где она была установлена.

$ADComputers = (Get-ADComputer -filter *).DNSHostName foreach ($i in $ADComputers) < Invoke-Command -computername $i < gcim win32_product -computername $env:computername | Select-String -Pattern "Java" -AllMatches | Sort-Object -property Vendor,Name | Format-Table -ErrorAction SilentlyContinue >>

Если у вас возникнут предложения, будем рады добавить их в эту статью. Надеемся, эти примеры были для вас полезны.

Предлагаем обновлённый тариф UltraLite Windows VDS за 99 рублей с установленной Windows Server 2019 Core.

  • Powershell
  • автоматизация
  • Блог компании UltraVDS
  • Системное администрирование
  • PowerShell

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *