Удалить компьютер из ad powershell

Обновлено: 06.07.2024

Мы рассмотрим пример корректного удаление роли Active Directory Domain Services для Windows Server 2012 / 2012 R2 / 2016 / 2019.

Процесс полного удаления разобьем на несколько этапов:

Подготовка системы

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

Перенос ролей контроллера домена

Active Directory насчитывает 5 FSMO ролей, которые отвечают за корректную работу службы каталогов. Смотрим, на каких серверах запущены данные роли с помощью команд в Powershell:

Get-ADForest dmosk.local | ft DomainNamingMaster, SchemaMaster

Get-ADDomain dmosk.local | ft InfrastructureMaster, PDCEmulator, RIDMaster

* где dmosk.local — домен, для которого нужно узнать назначенные роли FSMO.

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

Move-ADDirectoryServerOperationMasterRole <имя сервера, куда переносим> <название роли>

Проверка состояния AD

На любом из контроллеров домена вводим команду:

Понижение контроллера домена

Первым шагом понизим наш сервер до рядового сервера. Это можно сделать с помощью графического интерфейса, Powershell или командной строки.

Графика

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

Переходим к удалению ролей и компонентов

Если откроется окно с приветствием, то просто нажимаем Далее (при желании, можно поставить галочку Пропускать эту страницу по умолчанию):

Пропускаем стартовую страницу

В окне «Выбор целевого сервера» выбираем сервер, для которого мы будем понижать уровень AD:

Выбираем сервер для удаление роли

. и нажимаем Далее.

Снимаем галочку Доменные службы Active Directory. откроется окно в котором отобразится список компонентов для удаления — нажимаем Удалить компоненты:

Отмечаем для удаления роль Доменные службы Active Directory

Система вернет ошибку с предупреждением, что сначала нужно понизить AD — кликаем по ссылке Понизить уровень этого контроллера домена:

Переходим к понижению уровня контроллера домена

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

Знакомимся с предупреждением и идем далее

Система отобразит роли AD, которые будут удалены. Ставим галочку Продолжить удаление и нажимаем Далее:

Ставим галочку для продолжения удаления

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

Вводим пароль для административной учетной записи

Кликаем по Понизить уровень:

Кликаем по Понизить уровень

Процесс займет какое-то время. После мы увидим «Уровень контроллера домена Active Directory успешно понижен»:

Результат понижения уровня AD

Сервер автоматически будет перезагружен.

Powershell

Открываем консоль Powershell от администратора и вводим:

Система запросит пароль для локальной учетной записи администратора, которая будет использоваться после понижения — задаем новый пароль дважды:

LocalAdministratorPassword: **********
Подтвердить LocalAdministratorPassword: **********

Мы получим предупреждение о перезагрузки сервера. Соглашаемся:

После завершения этой операции сервер будет автоматически перезапущен. Когда вы удалите доменные службы Active
Directory на последнем контроллере домена, этот домен перестанет существовать.
Вы хотите продолжить эту операцию?
[Y] Да - Y [A] Да для всех - A [N] Нет - N [L] Нет для всех - L [S] Приостановить - S [?] Справка
(значением по умолчанию является "Y"): A

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

Удаление роли AD DS

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

Графика

В диспетчере серверов кликаем снова по Управление - Удалить роли и компоненты:

Переходим к удалению ролей и компонентов

Среди серверов выбираем тот, на котором будем удалять роль:

Выбираем сервер для удаление роли

* сервер может быть только один. Тогда выбираем его.

Снимаем галочку Доменные службы Active Directory, в открывшемся окне кликаем по Удалить компоненты:

Отмечаем для удаления роль Доменные службы Active Directory

Галочка для доменных служб будет снята:

Галочка на роли AD DS снята

. кликаем по Далее несколько раз.

В последнем окне ставим галочку Автоматический перезапуск конечного сервера, если требуется и подтверждаем действие ответом Да:

Ставим галочку для автоматической перезагрузки сервера

Роль будет удалена, а сервер отправлен в перезагрузку.

Powershell

Запускаем Powershell от администратора и вводим:

Remove-WindowsFeature -Name AD-Domain-Services

ПРЕДУПРЕЖДЕНИЕ: Чтобы завершить удаление, вам необходимо перезапустить этот сервер.

Вывод сервера из домена

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

Графика

Открываем свойства системы (команда control system или свойства Компьютера) и кликаем по Изменить параметры:

Переходим к изменению имени компьютера и его принадлежности к домену

В открывшемся окне нажимаем на Изменить:

Изменяем имя и домен

И переводим компьютер в рабочую группу:

Переводим сервер в рабочую группу

* в данном примере в группу с названием WORKGROUP.

Система запросит логин и пароль от пользователя Active Directory, у которого есть права на вывод компьютеров из домена — вводим данные.

Если все сделано верно, мы должны увидеть окно:

После перезагружаем сервер или выключаем его.

Powershell

Запускаем Powershell от имени администратора и вводим:

Remove-Computer -UnjoinDomaincredential dmosk\master -PassThru -Verbose

* где dmosk\master — учетная запись в домене с правами вывода компьютеров из AD.

Соглашаемся продолжить, ознакомившись с предупреждением:

Подтверждение
Чтобы войти в систему на этом компьютере после его удаления из домена, вам потребуется пароль учетной записи локального
администратора. Вы хотите продолжить?
[Y] Да - Y [N] Нет - N [S] Приостановить - S [?] Справка (значением по умолчанию является "Y"): Y

Вопросы и ответы

Дополнительные сведения относительно понижения и удаления AD.

1. Как удалить дочерний домен?

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

2. Как понизить режим работы домена?

Данный режим не понизить — это односторонняя операция. Максимум, что можно сделать, это восстановить службу AD из резервной копии, когда режим был нужного уровня.

3. Что делать, если умер основной контроллер домена?

Рассмотрим несколько вариантов:

  • Если есть резервная копия, восстанавливаемся из нее.
  • Если в среде несколько контроллеров домена, захватываем FSMO-роли (подробнее в инструкции Управление FSMO ролями Active Directory с помощью Powershell) и вручную удаляем уже несуществующий контроллер. После можно поднять новый контроллер, сделав его резервным.
  • Хуже, когда нет ни копий, ни второго контроллера. В таком случае, поднимаем новый контроллер, создаем новый лес, домен и переводим все компьютеры в него.

4. Что делать, если контроллер домена возвращает ошибку при понижении?

Самый лучший способ, разобраться с ошибкой, решив проблему, которая ее вызывает. Если это не удалось сделать, принудительно понижаем сервер командой:

Управление Active Directory (AD) с помощью Windows PowerShell – это проще, чем Вы думаете, и я хочу доказать Вам это. Вы можете просто взять приведенные ниже скрипты и с их помощью решить ряд задач по управлению AD.

Требования

Чтобы использовать PowerShell для управления AD, нужно соблюсти несколько требований. Я собираюсь продемонстрировать, как командлеты для AD работают на примере компьютера на Windows 7.
Чтобы использовать командлеты, контроллер домена у Вас должен быть уровня Windows Server 2008 R2, или же Вы можете скачать и установить Active Directory Management Gateway Service на наследуемых контроллерах домена (legacy DCs). Внимательно прочитайте документацию перед установкой; требуется перезагрузка КД.
На стороне клиента, скачайте и установите Remote Server Administration Tools (RSAT) либо для Windows 7, либо для Windows 8. В Windows 7, Вам необходимо будет открыть в Панели управления (Control Panel) раздел Программы (Programs) и выбрать Включить или выключить функции Windows (Turn Windows Features On or Off). Найдите Remote Server Administration Tools и раскройте раздел Role Administration Tools. Выберите подходящие пункты для AD DS and AD LDS Tools, особенно обратите внимание на то, что должен быть выбран пункт Active Directory Module for Windows PowerShell, как показано на рисунке 1. (В Windows 8 все инструменты выбраны по умолчанию). Теперь мы готовы работать.



Рис.1 Включение AD DS и AD LDS Tools

Я вошел в систему под учетной записью с правами доменного администратора. Большинство командлетов, которые я буду показывать, позволят Вам уточнить альтернативные полномочия (credentials). В любом случае я рекомендую прочитать справку (Get-Help) и примеры, которые я буду демонстрировать ниже.
Начните сессию PowerShell и импортируйте модуль:

В результате импорта создается новый PSDrive, но мы не будем использовать его. Однако, Вы можете посмотреть, какие команды имеются в импортированном модуле.

Прелесть этих команд в том, что если я могу использовать команду для одного объекта AD, то ее можно использовать для 10, 100 и даже 1000. Посмотрим, как некоторые из этих командлетов работают.

Задача 1: Сброс пароля пользователя

Давайте начнем с типичной задачи: сброс пароля пользователя. Сделать это легко и просто можно через командлет Set-ADAccountPassword. Сложная часть заключается в том, что новый пароль должен быть уточнен как защищенная строка: фрагмент текста, который зашифрован и хранится в памяти на протяжении PowerShell сессии. Во-первых, создадим переменную с новым паролем:


Затем, введем новый пароль:

Теперь мы можем извлечь учетную запись (использование samAccountname – лучший вариант) и задать новый пароль. Вот пример для пользователя Jack Frost:

К сожалению, в случае с этим командлетом наблюдается баг: -Passthru, -Whatif, и –Confirm не работают. Если Вы предпочитаете короткий путь, попробуйте следующее:

В итоге мне необходимо, чтобы Jack сменил пароль при следующем входе в систему, и я модифицирую учетную запись используя Set-ADUser.

Результаты выполнения командлета не пишутся в консоль. Если это необходимо сделать, используйте –True. Но я могу узнать, успешно или нет прошла операция, произведя извлечения имени пользователя с помощью командлета Get-ADUser и уточнив свойство PasswordExpired, как показано на рисунке 2.



Рис. 2. Результаты работы командлета Get-ADUser Cmdlet со свойством PasswordExpired

Итог: сбросить пароль пользователя с помощью PowerShell совсем не сложно. Признаюсь, что сбросить пароль также просто через оснастку Active Directory Users and Computers консоли Microsoft Management Console (MMC). Но использование PowerShell подходит в том случае, если Вам необходимо делегировать задачу, Вы не хотите разворачивать вышеупомянутую оснастку или сбрасываете пароль в ходе большого автоматизированного ИТ-процесса.

Задача 2: Активировать и деактивировать учетные записи

А теперь давайте деактивируем учетную запись. Продолжим работать с Jack Frost. Этот код использует параметр –Whatif, который Вы можете встретить в других комадлетах, которые осуществляют изменения, чтобы проверить мою команду не запуская ее.

А теперь деактивируем по-настоящему:

А когда настанет время активировать учетную запись, какой командлет нам поможет?

Эти командлеты могут быть использованы в конвейерном выражении (pipelined expression), позволяя активировать или деактивировать столько учетных записей, сколько душе угодно. Например, этот код деактивирует все учетные записи в отделе продаж (Sales)

Конечно, писать фильтр для Get-ADUser довольно-таки сложно, но именно здесь использование параметра –Whatif вместе с командлетом Disable-ADAccount приходит на помощь.

Задача 3: Разблокировать учетную запись пользователя

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

Командлет также поддерживает параметры -Whatif и -Confirm.

Задача 4: Удалить учетную запись

Неважно, сколько пользователей Вы удаляете, — это просто осуществить с помощью командлета Remove-ADUser. Мне не хочется удалять Jack Frost, но если бы я захотел, то использовал бы такой код:

Или я могу ввести несколько пользователей и удалить их с помощью одной простой команды:

С помощью этой команды будут найдены и удалены все деактивованные учетные записи подразделения (OU) Employees, которые не менялись в течение 180 и более дней.

Задача 5: Поиск пустых групп

Управление группами – занятие бесконечное и неблагодарное. Существует множество способов найти пустые группы. Некоторые выражения могут работать лучше, чем другие, в зависимости от Вашей организации. Код, приведенный ниже, позволит найти все группы в домене, включая встроенные (built-in).

Если у Вас есть группы с сотнями членов, тогда использование этой команды может занять много времени; Get-ADGroupMember проверяет каждую группу. Если Вы можете ограничить или настроить, это будет лучше.
Вот еще один подход:


Эта команда находит все универсальные группы (Universal groups), которые не имеют членство в OU Groups и выводит некоторые из свойств. Результат приведен на рисунке 3.

Рис. 3. Поиск и фильтрация универсальных групп

Задача 6: Добавление пользователей в группу

Давайте добавим Jack Frost в группу Chicago IT:

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

Я использовал вводное конвейерное выражение (parenthetical pipelined expression), чтобы найти всех пользователей, у которых имеется свойство City в Chicago. Код в скобках выполняется, и полученные объекты передаются в параметр –Member. Каждый пользовательский объект добавляется в группу Chicago Employees. Неважно, имеем ли мы дело с 5 или 5000 пользователей, обновление членства в группах занимает всего несколько секунд. Это выражение может также быть написано с использованием ForEach-Object, что может быть удобнее:

Задача 7: Выводим список членов группы

Вы возможно захотите узнать, кто находится в определенной группе. Например, Вы должны периодически узнавать, кто входит в группу доменных администраторов (Domain Admins):

На рисунке 4 приведен результат.



Рис. 4. Члены группы Domain Admins

Командлет выводит объект AD для каждого члена группы. А что делать с вложенными группами? Моя группа Chicago All Users является коллекцией вложенных групп. Чтобы получить список всех учетных записей, я всего лишь должен использовать параметр –Recursive.

Если Вы хотите пойти другим путем – найти, в каких группах пользователь состоит, — используйте свойство пользователя MemberOf:

Я использовал параметр -ExpandProperty, чтобы вывести имена MemberOf как строки.

Задача 8: Найти устаревшие учетные записи компьютеров

Мне часто задают этот вопрос: “Как найти устаревшие учетные записи компьютеров?”. И я всегда отвечаю: “А что для вас является устаревшим?” Компании по-разному определяют то, когда учетная запись компьютера (или пользователя, неважно), признается устаревшей и не подлежит дальнейшему использованию. Что касается меня, то я обращаю внимание на те учетные записи, у которых пароли не менялись в течение определенного периода времени. Этот период для меня составляет 90 дней – если компьютер не сменил пароль вместе с доменом за этот период, скорее всего он находится оффлайн и является устаревшим. Используется командлет Get-ADComputer:

Фильтр замечательно работает с жестким значением, но этот код будет обновляться для всех учетных записей компьютеров, которые не изменили своих паролей с 1 января 2012 года. Результаты приведены на рисунке 5.



Рис. 5. Находим устаревшие учетные записи компьютеров

Другой вариант: предположим, вы хотя бы на функциональном уровне домена Windows 2003. Поставьте фильтр по свойству LastLogontimeStamp. Это значение – число 100 наносекундных интервалов с 1 января, 1601 года, и храниться в GMT, поэтому работа с этим значением слегка сложно:

Я взял на себя ответственность и добавил кастомное свойство, которое берет значение LastLogontimeStamp и конвертирует его в привычный формат. На рисунке 6 показан результат.



Рис. 6. Конвертируем значение LastLogonTimeStamp в привычный формат

Чтобы создать фильтр, мне необходимо конвертировать дату, например, 1 января 2012, в корректный формат. Конвертация осуществляется в FileTime:

Теперь я могу использовать эту переменную в фильтре для Get-ADComputer:

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

Задача 9: Деактивировать учетную запись компьютера

Возможно, когда Вы найдете неактивные или устаревшие учетные записи, Вы захотите деактировать их. Сделать это довольно просто. Мы будем использовать тот же командлет, что использовали в работе с учетными записями пользователей. Вы можете уточнить его, использовав samAccountname учетной записи.

Или же использовав конвейерное выражение:

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

Задача 10: Найти компьютеры по типу

Мне также часто задают вопрос, как найти учетные записи компьютеров по типу, например, серверы или рабочие станции. С вашей стороны это требует определенной креативности. В AD нет ничего такого, чтобы отличало сервер от клиента, разве что ОС. Если Ваш компьютер работает под Windows Server 2008, придется слегка сделать несколько дополнительных действий.
Для начала необходимо получить список ОС, а затем осуществляем фильтрацию учетных записей по имеющимся ОС.

Результаты показаны на рисунке 7.



Рис. 7. Извлечение списка ОС

Я хочу найти все компьютеры, на которых стоит серверная ОС:

Результаты приведены на рисунке 8.


Как и другими командлетами AD Get, Вы можете настроить поисковые параметры и ограничить запрос отдельными OU, если это необходимо. Все выражения, которые я показал, могут быть интегрированы в большие PowerShell выражения. Например, Вы можете сортировать, группировать, применять фильтры, экспортировать в CSV или создавать и отправлять на почту HTML отчеты – и все это из PowerShell! При этом Вам не придется писать ни единого скрипа.
Вот Вам бонус: отчет о возрасте пароля пользователя (user password-age report), сохраненный в HTML файле:

Хотя это выражение может выглядеть слегка пугающим, при минимальном знании PowerShell им легко воспользоваться. И остается лишь последний совет: как определить кастомное свойство под названием PasswordAge. Значение представляет собой промежуток между сегодняшним днем и свойством PasswordLastSet. Затем я сортирую результаты для моего нового свойства. На рисунке 9 показан выход для моего небольшого тестового домена.

Учетные записи компьютеров представляют собой устройства, подключенные к AD. Они хранятся в базе данных AD после того, как их подключат к домену. Это необходимо для применения к ним различных GPO и отслеживания их обновлений, если у вас установлен WSUS. И что еще более важно, это нужно для установки безопасной аутентификации для пользователей, входящих в Windows.

Чтобы управлять компьютерами, вам нужны права администратора домена, оператора учетной записи (Account Operators) или делегированные права на OU в котором хранятся компьютеры. Управлять можно с рабочей станции с установленными инструментами RSAT или на контроллере домена.

Как создать учетную запись компьютера в AD

Давайте создадим учетную запись компьютера, используя несколько методов. Эта учетная запись может быть использована для присоединения к ней устройства.

Создание учетной записи компьютера с помощью ADUC

Запустите ADUC (dsa.msc).

Перейдите к OU, в которой вы хотите хранить такие объекты, щелкните правой кнопкой мыши на этой OU -> New-> Computer:


Или вы можете сделать это, нажав на Action -> New -> Computer.

В окне New Object – Computer введите имя компьютера и имя pre Windows 2000 в соответствии с вашей политикой именования. Выберите, какая группа может ввести эту машину в домен и нажмите OK.


Поздравляю учетная запись компьютера создана!

Создание учетной записи компьютера с помощью ADAC

Запустите ADAC(dsac.exe), щелкните правой кнопкой мыши на имени домена, выберите New->Computer. Появится окно Create Computer, где вам нужно ввести имя компьютера, имя NetBIOS, в соответствии с вашей политикой именования. Укажите OU, где вы хотите хранить компьютер, нажав на Change. Вы также можете указать, какая группа может ввести этот компьютер в домен и защитить его от удаления. В конце нажмите OK.


Создание учетной записи компьютера с помощью Cmd.exe

Для этой задачи нам необходимо использовать dsadd.exe. Используйте следующую команду для создания объекта компьютера в Active Directory:

dsadd.exe computer "CN=WKS033,CN=Computers,DC=office,DC=local"

Создание учетной записи компьютера с помощью PowerShell

Используйте следующие строки кода PowerShell для создания учетной записи компьютера с именем "WKS033" в домене office.local.

Import-Module ActiveDirectory
New-ADComputer -Name "WKS033" -sAMAccountName " WKS033" -Path "CN=Computers,DC=office,DC=local"

Как удалить учетную запись компьютера в AD

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

Удаление учетной записи компьютера из AD с помощью ADUC

Запустите ADUC (dsa.msc).

Перейдите в OU, содержащую нужные компьютеры, в меню Action выберите Find. Введите имя компьютера в поле Name и нажмите Find now. В результате поиска, щелкните правой кнопкой мыши на компьютере, который вы хотите удалить и выберете опцию Delete.


Нажмите Yes в окне подтверждения. Если после этого вы получите следующую ошибку:


Снова щелкните на компьютер правой кнопкой мыши, перейдите в Properties -> Object снимите флажок "“Protect object from accidental deletion" и выполните операцию удаления снова.

Удаление учетной записи компьютера из AD с помощью ADAC

Запустите ADAC (dsac.exe). Переключите левую панель в Tree view и выделите нужную OU. Введите имя компьютера в панели Filter и нажмите Enter. Выберите компьютер для удаления в результатах поиска, щелкните его правой кнопкой мыши и выберите Delete. Нажмите Yes для подтверждения.



Щелкните правой кнопкой мыши на учетную запись компьютера ->Properties и снимите флажок " Protect from accidental deletion".

После этого повторите процесс удаления.

Удаление учетной записи компьютера из AD с помощью cmd.exe

Для этой задачи нам понадобится dsrm.exe. Используйте его со следующими параметрами для удаления учетной записи компьютера, в нашем случае это WKS033.

Удаление учетной записи компьютера из AD с помощью Windows PowerShell

Эту задачу также можно легко выполнить с помощью Powershell, вот код для удаления учетной записи компьютера. В нашем примере имя компьютера WKS033

Import-Module ActiveDirectory
Remove-ADComputer -Identity "CN=WKS033,CN=Computers,DC=office,DC=local"

date

31.08.2020

directory

Active Directory, PowerShell, Windows 10, Windows Server 2016

comments

Один комментарий

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

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

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

В Windows Server 2016 вы можете включить модуль AD для PoSh в Windows Server 2016 из панели управления 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

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

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

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

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

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

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

Вы можете установить модуль RSAT-AD-PowerShell не только на серверах, но и на рабочих станциях. Этот модуль входит в состав пакета RSAT (Remote Server Administration Tools), который можно скачать и установить вручную в Window 7, Windows 8.1. После установки 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).

установка RSAT-AD-PowerShell в windows 10

В Windows 10 1809 и выше пакет RSAT уже встроен в дистрибутив (как Features on Demand), поэтому для установки модуля можно воспользоваться командой:

Add-WindowsCapability –online –Name “Rsat.ActiveDirectory.DS-LDS.Tools

Командлеты модуля AD для PowerShell

В модуле Active Directory для Windows PowerShell имеется большое командлетов для взаимодействия с AD. В каждой новой версии RSAT их количество увеличивается (в Windows Server 2016 доступно 147 командлетов для AD).

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

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

$rs = New-PSSession -ComputerName DC_or_Comp_with_ADPosh
Import-Module -PSsession $rs -Name ActiveDirectory

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

Get-Command –module activedirectory

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

Get-Command –module activedirectory |measure-object

Get-Command –module activedirectory

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

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

get-help New-ADComputer

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

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

powershell ise подсказки

Использование модуля RSAT-AD-PowerShell для администрирования AD

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

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

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

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

New-ADUser -Name "Andrey Petrov" -GivenName "Andrey" -Surname "Petrov" -SamAccountName "apetrov" -UserPrincipalName "apetrov@winitpro.ru " -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

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

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

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

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

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

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

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 -Target DC01,DC02

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

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

Get-ADDomainController

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

Читайте также: