Используем модуль Active Directory PowerShell для администрирования домена

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

Как установить модуль Active Directory для PowerShell в Windows 10 и 11?

Вы можете установить модуль RSAT-AD-PowerShell не только на серверах, но и на рабочих станциях. Этот модуль входит в состав пакета RSAT (Remote Server Administration Tools) для Windows.

В современных билдах Windows 11 и Windows 10 компоненты RSAT устанавливаются онлайн в виде Features on Demand. Вы можете установить модуль с помощью команды:

Add-WindowsCapability -online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0

установить модуль ad powershell в windows 10 или 11

Или через панель Settings -> Apps -> Optional features -> Add a feature -> RSAT: Active Directory Domain Services and Lightweight Directory Services Tools.

установка модуля powershell rsat adds tools

Для предыдущих версий Windows пакет RSAT нужно было качать и устанавливать вручную. После этого нужно активировать модуль AD для PowerShell из панели управления (Control Panel -> Programs and Features -> Turn Windows features on or off -> Remote Server Administration Tools-> Role Administration Tools -> AD DS and AD LDS Tools).

Для использования командлетов AD в PowerShell Core 6.x, 7.x сначала нужно установить модуль WindowsCompatibility:

Install-Module -Name WindowsCompatibility

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

Import-Module -Name WindowsCompatibility
Import-WinModule -Name ActiveDirectory

Import-WinModule загрузка модуля activedirectory в powershell core 7

Теперь вы можете использовать командлеты AD в ваших скриптах на PowerShell Core 7.

Установка модуля RSAT-AD-PowerShell в Windows Server

В Windows Server вы можете установить модуль Active Directory для Windows PowerShell из графической консоли Server Manager или с помощью PowerShell.

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

Get-WindowsFeature -Name «RSAT-AD-PowerShell»

Если модуль отсутствует, установите его:

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

Install-WindowsFeature -Name "RSAT-AD-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 module for Windows PowerShell в windows server 2016

Не обязательно использовать контроллер домена для администрирования Active Directory с помощью модуля RSAT-AD-PowerShell. Этот модуль можно установить на любом сервере или рабочей станции. На контроллерах домена AD модуль устанавливается автоматически при развертывании роли ADDS (при повышении сервера до DC).

Модуль взаимодействует с AD через службу Active Directory Web Services, которая должна быть запущена на контроллере домена и доступна клиентам по порту TCP 9389. Проверьте, что порт доступен на DC с помощью командлета Test-NetConnection:

tnc MSK-DC01 -port 9389

Основные командлеты модуля Active Directory для PowerShell

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

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

Get-Module -Name ActiveDirectory –ListAvailable

Перед использованием командлетов модуля, его нужно импортировать в сессию PowerShell (начиная с Windows Server 2012 R2/ Windows 8.1 и выше модуль импортируется автоматически):

Import-Module ActiveDirectory

Проверьте, что модуль AD загружен в вашу сессию PowerShell:
Get-Module

проверить что модуль activedirectory загружен в сессию

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

Get-Command –module activedirectory

Общее количество команд в модуле:

Get-Command –module activedirectory |measure-object

Get-Command –module activedirectory

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

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

Есть специфические командлеты PowerShell для управления только определенными компонентами AD:

  • Enable-ADOptionalFeature – включить компоненты AD (например, корзину AD для восстановления удаленных объектов)
  • Install-ADServiceAccountнастроить учетную запись для службы (MSA, gMSA)
  • Search-ADAccount – позволяет найти в AD отключенные, неактивные, заблокированные учетные записи пользователей и компьютеров
  • Enable-ADAccount / Disable-ADAccount / Unlock-ADAccount – включить/отключить/ разблокировать учетную запись

По умолчанию командлеты PowerShell подключаются к вашему ближайшему контроллеру в вашем домене (LOGONSERVER). С помощью параметра -Server вы можете подключиться к ADDS на другом контроллере домена или в другом домене (список DC в другом домене можно вывести с помощью команды nltest /dclist:newdomain.com). Параметр -Server доступен почти для всех командлетов модуля. Например:

Get-ADuser aaivanov -Server msk-dc01.winitpro.ru

Также вы можете указать учетную запись для подключения к AD с помощью параметра -Credential.

$creds = Get-Credential
Get-ADUser -Filter * -Credential $creds

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

get-help New-ADComputer

get-help New-ADComputer

Примеры использования командлетов Active Directory можно вывести так:

(get-help Set-ADUser).examples

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

powershell ise подсказки

Импорт модуля Active Directory PowerShell с удаленного компьютера

Не обязательно устанавливать модуль AD PowerShell на все компьютеры. Администраора может удаленно импортировать это модуль с контроллера домена (нужны права администратора домена) или с любого другого компьютера.

Для подключения к удаленном компьютеру исопьзуется PowerShell Remoting. Это требует, чтобы на удаленном компьютере был включен и настроен Windows Remote Management (WinRM).

Создайте новую сесиию с удаленнм компьютером, на котором установлен модуль AD PowerShell:

$rs = New-PSSession -ComputerName DC_or_Comp_with_ADPosh

Импортируйте модуль ActiveDirectory с удаленного компьютера в вашу локальную сессию:

Import-Module -PSsession $rs -Name ActiveDirectory

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

Вы можете добавить эти команды в ваш файл профиля PowerShell (например, notepad $profile.CurrentUserAllHosts), чтобы автоматически импортировать модуль из удаленной сессии при запуске консоли powershell.exe.

Завершить удалённую сессию можно командой:

Remove-PSSession -Session $rs

Этот же способ с импортом модуля AD через PoweShell implicit remoting позволит вам использовать командлеты PowerShell с хостов Linux and macOS, на которые нельзя установить локальную копию модуля.

Также вы можете использовать модуль Active Directory для PowerShell без установки RSAT. Для этого достаточно скопировать с компьютера с установленным модулем RSAT-AD-PowerShell:

  • Каталог C:\Windows\System32\WindowsPowerShell\v1.0\Modules
  • Файл ActiveDirectory.Management.dll
  • Файл ActiveDirectory.Management.resources.dll

Затем нужно импортировать модуль в сессию:

Import-Module C:\path\Microsoft.ActiveDirectory.Management.dll
Import-Module C:\path\Microsoft.ActiveDirectory.Management.resources.dll

После этого вы можете использовать все командлеты из модуля AD без установки RSAT.

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

Рассмотрим несколько типовых задач администратора, которые можно выполнить с помощью команд модуля AD для PowerShell.

Полезные примеры использования различных командлетов модуля AD для PowerShell уже описаны на сайте. Следуйте ссылкам по тексту за подробными инструкциями.

New-ADUser: Создать пользователя в AD

Для создания нового пользователя в AD используется использовать командлет New-ADUser. Создать пользователя можно командой:

New-ADUser -Name "Andrey Petrov" -GivenName "Andrey" -Surname "Petrov" -SamAccountName "apetrov" -UserPrincipalName "[email protected] " -Path "OU=Users,OU=Ufa,DC=winitpro,DC=loc" -AccountPassword(Read-Host -AsSecureString "Input Password") -Enabled $true

Более подробно о команде New-ADUser (в том числе пример массового создания учетных записей в домене) читайте в статье .

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

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

Get-ADComputer -SearchBase ‘OU=Russia,DC=winitpro,DC=ru’ -Filter * -Properties * | FT Name, LastLogonDate -Autosize

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

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

Add-AdGroupMember -Identity MskSales -Members apterov, divanov

Вывести список пользователей в группе AD и выгрузить его в файл:

Get-ADGroupMember MskSales -recursive| ft samaccountname| Out-File c:\script\export_users.csv

Более подробно об управлении группами AD из PowerShell.

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

Чтобы сбросить пароль пользователя в AD из PowerShell, выполните:

Set-ADAccountPassword apterov -Reset -NewPassword (ConvertTo-SecureString -AsPlainText “P@ssw0rd1” -Force -Verbose) –PassThru

Блокировка/разблокировка пользователя

Отключить учетную запись:

Disable-ADAccount apterov

Включить учетную запись:

Enable-ADAccount apterov

Разблокировать аккаунт после блокировки парольной политикой:

Unlock-ADAccount apterov

Search-ADAccount: Поиск неактивных компьютеров в домене

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

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

New-ADOrganizationalUnit: Создать структуру OU в AD

Чтобы быстро создать типовую структуры Organizational Unit в AD, можно воспользоваться скриптом PowerShell. Допустим, нам нужно создать несколько OU с городами, в которых создать типовые контейнеры. Вручную через графическую консоль ADUC такую структуру создавать довольно долго, а модуль AD для PowerShell позволяет решить такую задачу за несколько секунд (не считая время на написание скрипта):

$fqdn = Get-ADDomain
$fulldomain = $fqdn.DNSRoot
$domain = $fulldomain.split(".")
$Dom = $domain[0]
$Ext = $domain[1]
$Sites = ("SPB","MSK","Sochi")
$Services = ("Users","Admins","Computers","Servers","Contacts")
$FirstOU ="Russia"
New-ADOrganizationalUnit -Name $FirstOU -Description $FirstOU -Path "DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
foreach ($S in $Sites)
{
New-ADOrganizationalUnit -Name $S -Description "$S" -Path "OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
foreach ($Serv in $Services)
{
New-ADOrganizationalUnit -Name $Serv -Description "$S $Serv" -Path "OU=$S,OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
}
}

После выполнения скрипта у нас в AD появилась такая структура OU.

New-ADOrganizationalUnit

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

$TargetOU = "OU=Buhgalteriya,OU=Computers,DC=corp,DC=winitpro,DC=ru"
Get-ADComputer -Filter 'Name -like "BuhPC*"' | Move-ADObject -TargetPath $TargetOU

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

С помощью командлета Get-ADReplicationFailure можно проверить состояние репликации между контроллерами домена AD:

Get-ADReplicationFailure -Target DC01,DC02

Можно использовать эту команду для проверки состояния контроллеров домена и AD.

Получить информацию обо всех DC в домене с помощью командлета Get-AdDomainController:

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

Get-ADDomainController

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


Предыдущая статья Следующая статья


Комментариев: 1 Оставить комментарий

Оставить комментарий

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

Я не робот( Обязательно отметьте)