Администрирование ad. Администрирование Active Directory. Детальные настройки политик блокировки учетных записей и паролей в Центре администрирования
После установки Active Directory можно приступить к созданию объектов и управлению ими.
6.5.1. Создание подразделений и объектов в них
6.5.1.1. Создание организационных подразделений (ОП)
ОП можно создать в рамках домена, объекта Domain Controller или другого ОП (рис. 6.3). В созданное ОП можно добавлять объекты.
Для создания ОП необходимо обладать полномочиями по добавлению подразделений в родительское ОП, домен или узел Domain Controller, где будет создаваться ОП. По умолчанию такими полномочиями наделена группа Administrators (Админи-
страторы).
Нельзя создавать ОП в большинстве стандартных контей-
неров, таких как Computers или Users.
Рис. 6.3. ОП Кафедра ОТЗИ в узле Domain Controller
ОП создаются для упрощения администрирования сети. Структура ОП должна основываться на конкретных задачах ад-
министрирования. Вы можете легко изменять структуру ОП или перемещать объекты между ОП.
ОП создаются в следующих случаях:
чтобы предоставить административные полномочия другим пользователям или администраторам;
для группирования объектов, над которыми выполняются сходные административные операции; это облегчает поиск сходных сетевых ресурсов и их обслуживание - так, можно объединить в одном ОП все объекты User для временных служащих;
для ограничения видимости сетевых ресурсов в хранилище Active Directory пользователи увидят только те объекты, к которым имеют доступ; разрешения для ОП можно легко изменить, ограничив доступ к конфиденциальной информации.
6.5.1.2. Добавление объектов в ОП
Для добавления объектов в ОП Вы должны обладать в нем соответствующими полномочиями. По умолчанию такие права предоставлены группе Administrators . Разновидности создаваемых объектов зависят от правил схемы, используемого мастера или оснастки. Некоторые атрибуты объекта можно определить только после его создания.
6.5.2. Управление объектами Active Directory
Управление объектами Active Directory включает поиск объектов, их изменение, уничтожение или перемещение. В двух последних случаях надо иметь соответствующие разрешения для объекта или для ОП, куда Вы перемещаете объект. По умолчанию данными полномочиями обладают все члены группы Administrators .
6.5.2.1. Поиск объектов
Глобальный каталог (ГК) содержит частичную реплику всего каталога и хранит информацию обо всех объектах в дереве доменов или лесе. Поэтому пользователь может найти объект независимо от его расположения в домене или лесе. Содержание ГК автоматически генерируется по сведениям из доменов, составляющих каталог.
Для поиска объектов откройте оснастку , ярлык которой находится в группе программAdministrative Tools . В дереве консоли щелкните правой
кнопкой мыши домен или ОП и выберите в контекстном меню команду Find (Найти). Откроется диалоговое окноFind
(Поиск) (рис. 6.4).
Рис. 6.4. Диалоговое окно Find (Поиск)
Если Вы раскроете контекстное меню объекта Shared folder (Общая папка) и выберете командуFind
(Найти) , будет запущена функция поиска Windows Explorer, и Вы сможете искать в общей папке файлы и подпапки.
Диалоговое окно Find включает параметры поиска в ГК, позволяющие находить учетные записи, группы и принтеры.
6.5.2.2. Изменение значений атрибутов
и удаление объектов
Чтобы изменить значения атрибута, откройте оснастку Ac-
tive Directory Users And Computers и выберите экземпляр объек-
та. В меню Action (Действие) выберите командуProperties (Свойства) . В диалоговом окне свойств объ-
екта измените нужные атрибуты объекта. Затем внесите поправки в описание объекта, например, модифицируйте объект User , чтобы изменить имя, местоположение и электронный адрес пользователя. Если объекты больше не нужны, удалите их в целях безопасности: открыв оснасткуActive Directory Users And
Computers , выделите экземпляр удаляемого объекта, а затем в менюAction (Действие) выберите командуDelete
(Удалить).
6.5.2.3. Перемещение объектов
В хранилище Active Directory можно перемещать объекты, например между ОП, чтобы отразить изменения в структуре предприятия при переводе сотрудника из одного отдела в дру-
гой. Для этого, открыв оснастку Active Directory Users And Com-
puters , выделите перемещаемый объект, в менюAction (Действие) выберите командуMove (Переместить) и
укажите новое местоположение объекта.
6.5.3. Управление доступом к объектам Active Directory
Для контроля доступа к объектам Active Directory применяется объектно-ориентированная модель защиты, подобная модели защиты NTFS.
Каждый объект Active Directory имеет дескриптор безопасности, определяющий, кто имеет право доступа к объекту и тип этого доступа. Windows Server использует дескрипторы безопасности для управления доступом к объектам.
Для упрощения администрирования можно сгруппировать объекты с одинаковыми требованиями безопасности в ОП и назначить разрешения доступа для всего ОП и всех объектов в нем.
6.5.3.1. Управление разрешениями Active Directory
Разрешения Active Directory обеспечивают защиту ресурсов, позволяя управлять доступом к экземплярам объектов или атрибутам объектов и определять вид предоставляемого доступа.
Защита Active Directory
Администратор или владелец объекта должен назначить объекту разрешения доступа еще до того, как пользователи смогут получать доступ к этому объекту. Windows Server хранит список управления доступом (access control list, ACL ) для каждо-
го объекта Active Directory.
ACL объекта включает перечень пользователей, которым разрешен доступ к объекту, а также набор допустимых над объектом действий.
Можно задействовать разрешения для назначения административных полномочий конкретному пользователю или группе в отношении ОП, иерархии ОП или отдельного объекта без назначения административных разрешений на управление дру-
гими объектами Active Directory.
Разрешения доступа к объекту
Зависят от типа объекта - например, разрешение Reset Password допустимо для объектовUser , но не для объектов
Computer.
Пользователь может быть членом нескольких групп с разными разрешениями для каждой из них, обеспечивающих разные уровни доступа к объектам. При назначении разрешения на доступ к объекту члену группы, наделенной иными разрешениями, эффективные права пользователя будут складываться из его разрешений и разрешений группы.
Можно предоставлять или аннулировать разрешения. Аннулированные разрешения для пользователей и групп приоритетнее любых выданных разрешений.
Если пользователю запрещено обращаться к объекту, то он не получит доступ к нему даже как член полномочной группы.
Назначение разрешений Active Directory
Настроить разрешения объектов и их атрибутов позволяет оснастка Active Directory Users And Computers . Назначить раз-
решения также можно на вкладке Security (Безопасность) диалогового окна свойств объекта.
Для выполнения большинства задач администрирования достаточно стандартных разрешений.
Перезагрузить сервер.
Ввести пароль для режима восстановления службы каталога.
Подтвердить расположение папок для сохранения файлов AD.
Подтвердить NetBIOS имя домена.
7. Выбрать уровень безопасности для пользователей и групп:
· Разрешения совместимые с пред-Windows 2000 server – если в домене есть программы или службы, работающие на серверах под управлением Windows NT, или компьютер входит в домен под управлением Windows NT.
· Разрешения совместимые только с Windows 2000 server и Windows Server 2003 – если в домене работают только серверы под управлением Windows 2000 server и Windows Server 2003.
Для администрирования Active Directory применяется набор оснасток управления Active Directory. Он состоит из четырех оснасток:
1 Active Directory User and Computers (пользователи и компьютеры) – предназначена для администрирования учетных записей пользователей и компьютеров домена.
2 Active Directory Domains and Trusts (домены и доверие) – используется для установления доверительных отношений между доменами.
3 Active Directory Sites and Service (сайты и службы) – предназначена для управления сайтами и связями сайтов.
4 DNS – администрирование DNS-сервера, интегрированного в Active Directory.
Active Directory пользователи и компьютеры.
Учетные записи пользователей и учетные записи компьютеров Active Directory представляют собой такие же физические объекты, как компьютер или пользователь. Учетные записи пользователей также могут использоваться как записи выделенных служб для некоторых приложений.
Учетная запись пользователя – объект Active Directory, содержащий все сведения, определяющие пользователя в операционной системе Windows. К этим сведениям относятся:
· личные данные пользователя (ФИО, телефон, e-mail, почтовый адрес, сведения об организации);
· параметры учетной записи (имя пользователя и пароль, требуемые для входа пользователя в систему, срок действия учетной записи, управление паролем, параметры шифрования и проверки подлинности);
· имена групп, членом которых пользователь является;
· профиль пользователя (содержит сведения о настройках для конкретного пользователя, такие как настройки рабочего стола, постоянные сетевые подключения и параметры приложений);
· прочие сведения (профиль служб терминалов, удаленное управление, управление сеансом и др.).
Учетная запись компьютера - объект Active Directory, однозначно определяющий компьютер в домене. Учетная запись компьютера соответствует имени компьютера в домене. Компьютер, учетная запись которого добавлена в домен, может участвовать в выполнении сетевых операций, использующих содержимое Active Directory. Например, рабочая станция, добавленная в домен, получает возможность распознавать учетные записи и группы, существующие в Active Directory.
@ Компьютеры с операционными системами Windows 95, Windows 98 и Windows Me не имеют дополнительных функций безопасности и им не могут быть назначены учетные записи компьютеров.
Группа – это семейство учетных записей пользователей и компьютеров, контактов и других групп, которым можно управлять как единым целым. Пользователи и компьютеры, которые принадлежат к отдельной группе, называются членами группы. Группы в Active Directory являются объектами каталога, которые располагаются внутри объектов контейнера домена и подразделения.
Группы в Active Directory дают возможность:
· упрощать администрирование, назначая разрешения на общий ресурс для группы, а не для индивидуальных пользователей. Это обеспечивает одинаковый доступ к ресурсу для всех членов этой группы;
· делегировать администрирование, назначая права пользователям сразу для всей группы через групповую политику, а затем добавляя необходимых членов к группе, которые должны иметь те же права, что и группа;
Группы характеризуются их областью действия и типом. Область действия группы определяет диапазон, в котором применяется группа внутри домена или леса. Существуют три различные области действия: универсальная, глобальная и локальная доменная.
· Локальная доменная (локальная встроенная) – члены групп с локальной доменной областью действия могут включать другие группы и учетные записи из доменов Windows Server 2003, Windows 2000 или Windows NT, и им могут быть предоставлены разрешения только внутри домена.
@ Локальные доменные группы следует использовать для управления доступом к ресурсам в пределах одного домена.
· Глобальная – члены групп с глобальной областью действия могут включать другие группы и учетные записи только из домена, в котором определена группа, и им могут быть предоставлены разрешения в любом домене леса.
@ Группы с глобальной областью действия рекомендуется применять для управления теми объектами каталога, которые требуют ежедневной поддержки. Таковыми, например, являются учетные записи пользователей и компьютеров. Поскольку группы с глобальной областью действия не реплицируются за пределы своего домена, учетные записи, содержащиеся в таких группах, можно часто менять, не вызывая дополнительного трафика, связанного с репликацией в глобальный каталог.
· Универсальная - члены групп с универсальной областью действия могут включать другие группы и учетные записи из любого домена в дереве доменов или лесу, также им могут предоставляться разрешения в любом домене в составе дерева доменов или леса.
@ Назначайте универсальную область действия для групп, объединяющих домены. Для этого добавьте учетные записи в группы с глобальной областью действия, а затем вложите эти группы в группы с универсальной областью действия. При использовании такого подхода изменение членства в группах с глобальной областью действия не влияет на группы с универсальной областью действия.
Тип группы определяет, может ли группа использоваться для назначения разрешений для ресурсов или только для списков рассылки электронной почты.
Группы безопасности – обеспечивают эффективное управление доступом к ресурсам сети. Использование групп безопасности позволяет выполнять следующие действия:
· Назначать права пользователя группе безопасности в Active Directory . Права пользователя, заданные для групп безопасности, определяют, что может делать член данной группы в области действий домена (или леса). Права пользователя автоматически задаются для групп безопасности во время установки Active Directory для помощи администраторам в определении роли административных пользователей в домене. Например, пользователь, добавленный в группу «Операторы архива» в Active Directory, получает возможность создавать архивы и восстанавливать файлы и каталоги на любом контроллере домена в домене. Можно задать права пользователей группе безопасности, используя групповую политику, для делегирования конкретных задач. При задании делегированных задач необходимо соблюдать осторожность. Неопытный пользователь, наделенный слишком большими правами в группе безопасности, потенциально может нанести серьезный урон сети.
· Назначать разрешения на использование ресурсов для групп безопасности . Не следует путать разрешения с правами пользователей. Разрешения задаются для групп безопасности, использующих общие ресурсы. Разрешения определяют, кто может получить доступ к данному ресурсу и уровень доступа, например полный доступ. Некоторые разрешения, установленные для объектов домена, автоматически задаются для различных уровней доступа группам по умолчанию, таким как «Операторы учета» или «Операторы домена». Дополнительные сведения о разрешениях см. в разделе Управление доступом в Active Directory.
@ Группы безопасности перечислены в избирательных таблицах управления доступом, которые определяют разрешения на ресурсы и объекты. Администраторам следует назначать разрешения для ресурсов (общих файлов, принтеров, и т. д.) группам безопасности, а не отдельным пользователям. Разрешения назначаются группе один раз, вместо назначения прав каждому отдельному пользователю. Каждая учетная запись при добавлении к группе получает права, заданные данной группе в Active Directory, и разрешения, определенные для данной группы на ресурсе.
Группы распространения – используются только приложениями электронной почты для отправки сообщений электронной почты группам пользователей. Группы распространения не используют систему безопасности, иначе говоря, они не могут быть включены в избирательные таблицы управления доступом (DACL). Если группа создается для контроля доступа к общим ресурсам, эта группа должна быть группой безопасности.
@ Группы безопасности также могут использоваться в качестве адресатов электронной почты, как и группы распространения. Сообщение электронной почты, отправленное группе, отправляется всем членам группы.
Существуют также группы, для которых нельзя изменить или просмотреть сведения о членстве. Эти группы называются специальными удостоверениями и используются для представления различных пользователей в различные моменты времени, в зависимости от обстоятельств.
(Анонимный вход, Все, Сеть, Интерактивные)
Например, группа «Все» представляет всех текущих пользователей сети, включая гостей и пользователей из других доменов. Дополнительные сведения см. в разделе Специальные удостоверения.
Учетные записи пользователей и компьютеров (а также группы) называются участниками безопасности. Участники безопасности являются объектами каталогов, которым автоматически назначаются коды безопасности (SID) для доступа к ресурсам домена. Учетная запись пользователя или компьютера используется для следующих целей:
· проверка подлинности пользователя или компьютера.
· разрешение или запрещение доступа к ресурсам домена.
· администрирование других участников безопасности (для представления участника безопасности из внешнего доверенного домена).
· аудит действий, выполняемых с использованием учетной записи пользователя или компьютера.
Для назначения прав одновременно большому числу пользователей используются группы безопасности. Учетные записи могут группироваться с использованием организационных единиц (контейнеров).
Для обеспечения безопасности проверки подлинности пользователя следует создавать отдельные учетные записи для каждого пользователя сети, применяя для этого оснастку «Active Directory пользователи и компьютеры ».
Каждая учетная запись пользователя Active Directory имеет ряд параметров, относящихся к безопасности и определяющих, как производится проверка подлинности данной учетной записи при входе в сеть.
Active Directory (AD) — это служебные программы, разработанные для операционной системы Microsoft Server. Первоначально создавалась в качестве облегченного алгоритма доступа к каталогам пользователей. С версии Windows Server 2008 появилось интеграция с сервисами авторизации.
Дает возможность соблюдать групповую политику, применяющую однотипность параметров и ПО на всех подконтрольных ПК с помощью System Center Configuration Manager.
Если простыми словами для начинающих – это роль сервера, которая позволяет из одного места управлять всеми доступами и разрешениями в локальной сети
Функции и предназначения
Microsoft Active Directory – (так называемый каталог) пакет средств, позволяющий проводить манипуляции с пользователями и данными сети. Основная цель создания – облегчение работы системных администраторов в обширных сетях.
Каталоги содержат в себе разную информацию, относящуюся к юзерам, группам, устройствам сети, файловым ресурсам — одним словом, объектам. Например, атрибуты пользователя, которые хранятся в каталоге должны быть следующими: адрес, логин, пароль, номер мобильного телефона и т.д. Каталог используется в качестве точки аутентификации , с помощью которой можно узнать нужную информацию о пользователе.
Основные понятия, встречающиеся в ходе работы
Существует ряд специализированных понятий, которые применяются при работе с AD:
- Сервер – компьютер, содержащий все данные.
- Контроллер – сервер с ролью AD, который обрабатывает запросы от людей, использующих домен.
- Домен AD - совокупность устройств, объединенных под одним уникальным именем, одновременно использующих общую базу данных каталога.
- Хранилище данных — часть каталога, отвечающая за хранение и извлечение данных из любого контроллера домена.
Как работают активные директории
Основными принципами работы являются:
- Авторизация , с помощью которой появляется возможность воспользоваться ПК в сети просто введя личный пароль. При этом, вся информация из учетной записи переносится.
- Защищенность . Active Directory содержит функции распознавания пользователя. Для любого объекта сети можно удаленно, с одного устройства, выставить нужные права, которые будут зависеть от категорий и конкретных юзеров.
- Администрирование сети из одной точки. Во время работы с Актив Директори сисадмину не требуется заново настраивать все ПК, если нужно изменить права на доступ, например, к принтеру. Изменения проводятся удаленно и глобально.
- Полная интеграция с DNS . С его помощью в AD не возникает путаниц, все устройства обозначаются точно так же, как и во всемирной паутине.
- Крупные масштабы . Совокупность серверов способна контролироваться одной Active Directory.
- Поиск производится по различным параметрам, например, имя компьютера, логин.
Объекты и атрибуты
Объект - совокупность атрибутов, объединенных под собственным названием, представляющих собой ресурс сети.
Атрибут — характеристики объекта в каталоге. Например, к таким относятся ФИО пользователя, его логин. А вот атрибутами учетной записи ПК могут быть имя этого компьютера и его описание.
“Сотрудник” – объект, который обладает атрибутами “ФИО”, “Должность” и “ТабN”.
Контейнер и имя LDAP
Контейнер — тип объектов, которые могут состоять из других объектов . Домен, к примеру, может включать в себя объекты учетных записей.
Основное их назначение — упорядочивание объектов по видам признаков. Чаще всего контейнеры применяют для группировки объектов с одинаковыми атрибутами.
Почти все контейнеры отображают совокупность объектов, а ресурсы отображаются уникальным объектом Active Directory. Один из главных видов контейнеров AD - модуль организации, или OU (organizational unit). Объекты, которые помещаются в этот контейнер, принадлежат только домену, в котором они созданы.
Облегченный протокол доступа к каталогам (Lightweight Directory Access Protocol, LDAP) - основной алгоритм подключений TCP/IP. Он создан с целью снизить количество нюанс во время доступа к службам каталога. Также, в LDAP установлены действия, используемые для запроса и редактирования данных каталога.
Дерево и сайт
Дерево доменов – это структура, совокупность доменов, имеющих общие схему и конфигурацию, которые образуют общее пространство имен и связаны доверительными отношениями.
Лес доменов – совокупность деревьев, связанных между собою.
Сайт - совокупность устройств в IP-подсетях, представляющая физическую модель сети, планирование которой совершается вне зависимости от логического представления его построения. Active Directory имеет возможность создания n-ного количества сайтов или объединения n-ного количества доменов под одним сайтом.
Установка и настройка Active Directory
Теперь перейдем непосредственно к настройке Active Directory на примере Windows Server 2008 (на других версиях процедура идентична):
Нажать на кнопку “ОК”. Стоит заметить, что подобные значения не обязательны. Можно использовать IP адрес и DNS из своей сети.
- Далее нужно зайти в меню “Пуск”, выбрать “Администрирование” и “”.
- Перейти к пункту “Роли”, выбрать поле “Добавить роли
”.
- Выбрать пункт “Доменные службы Active Directory” дважды нажать “Далее”, а после “Установить”.
- Дождаться окончания установки.
- Открыть меню “Пуск”-“Выполнить
”. В поле ввести dcpromo.exe.
- Кликнуть “Далее”.
- Выбрать пункт “Создать новый домен в новом лесу
” и снова нажать “Далее”.
- В следующем окне ввести название, нажать “Далее”.
- Выбрать режим совместимости
(Windows Server 2008).
- В следующем окне оставить все по умолчанию.
- Запустится окно конфигурации
DNS
. Поскольку на сервере он не использовался до этого, делегирование создано не было.
- Выбрать директорию для установки.
- После этого шага нужно задать пароль администрирования .
Для надежности пароль должен соответствовать таким требованиям:
После того как AD завершит процесс настройки компонентов, необходимо перезагрузить сервер.
Настройка завершена, оснастка и роль установлены в систему. Установить AD можно только на Windows семейства Server, обычные версии, например 7 или 10, могут позволить установить только консоль управления.
Администрирование в Active Directory
По умолчанию в Windows Server консоль Active Directory Users and Computers работает с доменом, к которому относится компьютер. Можно получить доступ к объектам компьютеров и пользователей в этом домене через дерево консоли или подключиться к другому контроллеру.
Средства этой же консоли позволяют просматривать дополнительные параметры объектов и осуществлять их поиск, можно создавать новых пользователей, группы и изменять из разрешения.
К слову, существует 2 типа групп в Актив Директори – безопасности и распространения. Группы безопасности отвечают за разграничение прав доступа к объектам, они могут использоваться, как группы распространения.
Группы распространения не могут разграничивать права, а используются в основном для рассылки сообщений в сети.
Что такое делегирование AD
Само делегирование — это передача части разрешений и контроля от родительского объекта другой ответственной стороне.
Известно, что каждая организация имеет в своем штабе несколько системных администраторов. Разные задачи должны возлагаться на разные плечи. Для того чтобы применять изменения, необходимо обладать правами и разрешениями, которые делятся на стандартные и особые. Особые — применимы к определенному объекту, а стандартные представляют собой набор, состоящий из существующих разрешений, которые делают доступными или недоступными отдельные функции.
Установка доверительных отношений
В AD есть два вида доверительных отношений: «однонаправленные» и «двунаправленные». В первом случае один домен доверяет другому, но не наоборот, соответственно первый имеет доступ к ресурсам второго, а второй не имеет доступа. Во втором виде доверие “взаимное”. Также существуют «исходящие» и «входящие» отношения. В исходящих – первый домен доверяет второму, таким образом разрешая пользователям второго использовать ресурсы первого.
При установке следует провести такие процедуры:
- Проверить сетевые связи между котроллерами.
- Проверить настройки.
- Настроить разрешения имен для внешних доменов.
- Создать связь со стороны доверяющего домена.
- Создать связь со стороны контроллера, к которому адресовано доверие.
- Проверить созданные односторонние отношения.
- Если возникает небходимость в установлении двусторонних отношений – произвести установку.
Глобальный каталог
Это контроллер домена, который хранит копии всех объектов леса. Он дает юзерам и программам способность искать объекты в любом домене текущего леса с помощью средств обнаружения атрибутов , включенных в глобальный каталог.
Глобальный каталог (ГК) включает в себя ограниченный набор атрибутов для каждого объекта леса в каждом домене. Данные он получает из всех разделов каталога доменов в лесу, они копируются с использованием стандартного процесса репликации службы Active Directory.
Схема определяет, будет ли атрибут скопирован. Существует возможность конфигурирования дополнительных характеристик , которые будут создаваться повторно в глобальном каталоге с помощью “Схемы Active Directory”. Для добавления атрибута в глобальный каталог, нужно выбрать атрибут репликации и воспользоваться опцией “Копировать”. После этого создастся репликация атрибута в глобальный каталог. Значение параметра атрибута isMemberOfPartialAttributeSet станет истиной.
Для того чтобы узнать местоположение глобального каталога, нужно в командной строке ввести:
Dsquery server –isgc
Репликация данных в Active Directory
Репликация — это процедура копирования, которую проводят при необходимости хранения одинаково актуальных сведений, существующих на любом контроллере.
Она производится без участия оператора . Существуют такие виды содержимого реплик:
- Реплики данных создаются из всех существующих доменов.
- Реплики схем данных. Поскольку схема данных едина для всех объектов леса Активных Директорий, ее реплики сохраняются на всех доменах.
- Данные конфигурации. Показывает построение копий среди контроллеров. Сведения распространяются на все домены леса.
Основными типами реплик являются внутриузловая и межузловая.
В первом случае, после изменений система находится в ожидании, затем уведомляет партнера о создании реплики для завершения изменений. Даже при отсутствии перемен, процесс репликации происходит через определенный промежуток времени автоматически. После применения критических изменений к каталогам репликация происходит сразу.
Процедура репликации между узлами происходит в промежутках минимальной нагрузки на сеть, это позволяет избежать потерь информации.
Посвященную использования PowerShell для администрирования AD. В качестве исходного пункта автор решил взять 10 типичных задач администрирования AD и рассмотреть то, как их можно упростить, используя PowerShell:
- Сбросить пароль пользователя
- Активировать и деактивировать учетные записи
- Разблокировать учетную запись пользователя
- Удалить учетную запись
- Найти пустые группы
- Добавить пользователей в группу
- Вывести список членов группы
- Найти устаревшие учетные записи компьютеров
- Деактивировать учетную запись компьютера
- Найти компьютеры по типу
Помимо этого автор ведет блог (по PowerShell, конечно), рекомендуем заглянуть - jdhitsolutions.com/blog . А самое актуальное Вы можете получить из его твиттера twitter.com/jeffhicks .
Итак, ниже приводим перевод статьи “Top 10 Active Directory Tasks Solved with PowerShell”.
Управление Active Directory (AD) с помощью Windows PowerShell – это проще, чем Вы думаете, и я хочу доказать Вам это. Вы можете просто взять приведенные ниже скрипты и с их помощью решить ряд задач по управлению AD.
Требования
Чтобы использовать PowerShell для управления AD, нужно соблюсти несколько требований. Я собираюсь продемонстрировать, как командлеты для AD работают на примере компьютера на Windows 7.
Чтобы использовать командлеты, контроллер домена у Вас должен быть уровня Windows Server 2008 R2, или же Вы можете скачать и установить Active Directory Management Gateway Service на наследуемых контроллерах домена (legacy DCs). Внимательно прочитайте документацию перед установкой; требуется перезагрузка КД.
На стороне клиента, скачайте и установите (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 и импортируйте модуль:
PS C:\> Import-Module ActiveDirectory
В результате импорта создается новый PSDrive, но мы не будем использовать его. Однако, Вы можете посмотреть, какие команды имеются в импортированном модуле.
PS C:\> get-command -module ActiveDirectory
Прелесть этих команд в том, что если я могу использовать команду для одного объекта AD, то ее можно использовать для 10, 100 и даже 1000. Посмотрим, как некоторые из этих командлетов работают.
Задача 1: Сброс пароля пользователя
Давайте начнем с типичной задачи: сброс пароля пользователя. Сделать это легко и просто можно через командлет Set-ADAccountPassword
. Сложная часть заключается в том, что новый пароль должен быть уточнен как защищенная строка: фрагмент текста, который зашифрован и хранится в памяти на протяжении PowerShell сессии. Во-первых, создадим переменную с новым паролем:
PS C:\> $new=Read-Host "Enter the new password" -AsSecureString
Затем, введем новый пароль:
Теперь мы можем извлечь учетную запись (использование samAccountname – лучший вариант) и задать новый пароль. Вот пример для пользователя Jack Frost:
PS C:\> Set-ADAccountPassword jfrost -NewPassword $new
К сожалению, в случае с этим командлетом наблюдается баг: -Passthru , -Whatif , и –Confirm не работают. Если Вы предпочитаете короткий путь, попробуйте следующее:
PS C:\> Set-ADAccountPassword jfrost -NewPassword (ConvertTo-SecureString -AsPlainText -String "P@ssw0rd1z3" -force)
В итоге мне необходимо, чтобы Jack сменил пароль при следующем входе в систему, и я модифицирую учетную запись используя Set-ADUser .
PS C:\> Set-ADUser jfrost -ChangePasswordAtLogon $True
Результаты выполнения командлета не пишутся в консоль. Если это необходимо сделать, используйте –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 , который Вы можете встретить в других комадлетах, которые осуществляют изменения, чтобы проверить мою команду не запуская ее.
PS C:\> Disable-ADAccount jfrost -whatif What if: Performing operation "Set" on Target "CN=Jack Frost, OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".
А теперь деактивируем по-настоящему:
PS C:\> Disable-ADAccount jfrost
А когда настанет время активировать учетную запись, какой командлет нам поможет?
PS C:\> Enable-ADAccount jfrost
Эти командлеты могут быть использованы в конвейерном выражении (pipelined expression), позволяя активировать или деактивировать столько учетных записей, сколько душе угодно. Например, этот код деактивирует все учетные записи в отделе продаж (Sales)
PS C:\> get-aduser -filter "department -eq "sales"" | disable-adaccount
Конечно, писать фильтр для Get-ADUser довольно-таки сложно, но именно здесь использование параметра –Whatif вместе с командлетом Disable-ADAccount приходит на помощь.
Задача 3: Разблокировать учетную запись пользователя
Рассмотрим ситуацию, когда Jack заблокировал свою учетную запись, пытаясь ввести новый пароль. Вмест того, чтобы пытаться найти его учетную запись через GUI, процедуру разблокировки можно осуществить с помощью простой команды.
PS C:\> Unlock-ADAccount jfrost
Командлет также поддерживает параметры -Whatif и -Confirm .
Задача 4: Удалить учетную запись
Неважно, сколько пользователей Вы удаляете, - это просто осуществить с помощью командлета Remove-ADUser . Мне не хочется удалять Jack Frost, но если бы я захотел, то использовал бы такой код:
PS C:\> Remove-ADUser jfrost -whatif What if: Performing operation "Remove" on Target "CN=Jack Frost,OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".
Или я могу ввести несколько пользователей и удалить их с помощью одной простой команды:
PS C:\> get-aduser -filter "enabled -eq "false"" -property WhenChanged -SearchBase "OU=Employees, DC=Globomantics,DC=Local" | where {$_.WhenChanged -le (Get-Date).AddDays(-180)} | Remove-ADuser -whatif
С помощью этой команды будут найдены и удалены все деактивованные учетные записи подразделения (OU) Employees, которые не менялись в течение 180 и более дней.
Задача 5: Поиск пустых групп
Управление группами – занятие бесконечное и неблагодарное. Существует множество способов найти пустые группы. Некоторые выражения могут работать лучше, чем другие, в зависимости от Вашей организации. Код, приведенный ниже, позволит найти все группы в домене, включая встроенные (built-in).
PS C:\> get-adgroup -filter * | where {-Not ($_ | get-adgroupmember)} | Select Name
Если у Вас есть группы с сотнями членов, тогда использование этой команды может занять много времени; Get-ADGroupMember
проверяет каждую группу. Если Вы можете ограничить или настроить, это будет лучше.
Вот еще один подход:
PS C:\> get-adgroup -filter "members -notlike "*" -AND GroupScope -eq "Universal"" -SearchBase "OU=Groups,OU=Employees,DC=Globomantics, DC=local" | Select Name,Group*
Эта команда находит все универсальные группы (Universal groups), которые не имеют членство в OU Groups и выводит некоторые из свойств. Результат приведен на рисунке 3.
Рис. 3. Поиск и фильтрация универсальных групп
Задача 6: Добавление пользователей в группу
Давайте добавим Jack Frost в группу Chicago IT:
PS C:\> add-adgroupmember "chicago IT" -Members jfrost
Да, все так просто. Вы можете также легко добавлять сотни пользователей в группы, хотя, на мой взгляд, это слегка неудобно:
PS C:\> Add-ADGroupMember "Chicago Employees" -member (get-aduser -filter "city -eq "Chicago"")
Я использовал вводное конвейерное выражение (parenthetical pipelined expression), чтобы найти всех пользователей, у которых имеется свойство City в Chicago. Код в скобках выполняется, и полученные объекты передаются в параметр –Member. Каждый пользовательский объект добавляется в группу Chicago Employees. Неважно, имеем ли мы дело с 5 или 5000 пользователей, обновление членства в группах занимает всего несколько секунд. Это выражение может также быть написано с использованием ForEach-Object , что может быть удобнее:
PS C:\> Get-ADUser -filter "city -eq "Chicago"" | foreach {Add-ADGroupMember "Chicago Employees" -Member $_}
Задача 7: Выводим список членов группы
Вы возможно захотите узнать, кто находится в определенной группе. Например, Вы должны периодически узнавать, кто входит в группу доменных администраторов (Domain Admins):
PS C:\> Get-ADGroupMember "Domain Admins"
На рисунке 4 приведен результат.
Рис. 4. Члены группы Domain Admins
Командлет выводит объект AD для каждого члена группы. А что делать с вложенными группами? Моя группа Chicago All Users является коллекцией вложенных групп. Чтобы получить список всех учетных записей, я всего лишь должен использовать параметр –Recursive .
PS C:\> Get-ADGroupMember "Chicago All Users" -Recursive | Select DistinguishedName
Если Вы хотите пойти другим путем – найти, в каких группах пользователь состоит, - используйте свойство пользователя MemberOf :
PS C:\> get-aduser jfrost -property Memberof | Select -ExpandProperty memberOf CN=NewTest,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago Test,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago IT,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago Sales Users,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local
Я использовал параметр -ExpandProperty , чтобы вывести имена MemberOf как строки.
Задача 8: Найти устаревшие учетные записи компьютеров
Мне часто задают этот вопрос: “Как найти устаревшие учетные записи компьютеров?”. И я всегда отвечаю: “А что для вас является устаревшим?” Компании по-разному определяют то, когда учетная запись компьютера (или пользователя, неважно), признается устаревшей и не подлежит дальнейшему использованию. Что касается меня, то я обращаю внимание на те учетные записи, у которых пароли не менялись в течение определенного периода времени. Этот период для меня составляет 90 дней – если компьютер не сменил пароль вместе с доменом за этот период, скорее всего он находится оффлайн и является устаревшим. Используется командлет Get-ADComputer :
PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Select name,passwordlastset
Фильтр замечательно работает с жестким значением, но этот код будет обновляться для всех учетных записей компьютеров, которые не изменили своих паролей с 1 января 2012 года. Результаты приведены на рисунке 5.
Рис. 5. Находим устаревшие учетные записи компьютеров
Другой вариант: предположим, вы хотя бы на функциональном уровне домена Windows 2003. Поставьте фильтр по свойству LastLogontimeStamp . Это значение – число 100 наносекундных интервалов с 1 января, 1601 года, и храниться в GMT, поэтому работа с этим значением слегка сложно:
PS C:\> get-adcomputer -filter "LastlogonTimestamp -gt 0" -properties * | select name,lastlogontimestamp, @{Name="LastLogon";Expression={::FromFileTime ($_.Lastlogontimestamp)}},passwordlastset | Sort LastLogonTimeStamp
Рис. 6. Конвертируем значение LastLogonTimeStamp в привычный формат
Чтобы создать фильтр, мне необходимо конвертировать дату, например, 1 января 2012, в корректный формат. Конвертация осуществляется в FileTime:
PS C:\> $cutoff=(Get-Date "1/1/2012").ToFileTime() PS C:\> $cutoff 129698676000000000
Теперь я могу использовать эту переменную в фильтре для Get-ADComputer :
PS C:\> Get-ADComputer -Filter "(lastlogontimestamp -lt $cutoff) -or (lastlogontimestamp -notlike "*")" -property * | Select Name,LastlogonTimestamp,PasswordLastSet
Приведённый код находит те же самые компьютеры, что были показаны на рисунке 5.
Задача 9: Деактивировать учетную запись компьютера
Возможно, когда Вы найдете неактивные или устаревшие учетные записи, Вы захотите деактировать их. Сделать это довольно просто. Мы будем использовать тот же командлет, что использовали в работе с учетными записями пользователей. Вы можете уточнить его, использовав samAccountname учетной записи.
PS C:\> Disable-ADAccount -Identity "chi-srv01$" -whatif What if: Performing operation "Set" on Target "CN=CHI-SRV01, CN=Computers,DC=GLOBOMANTICS,DC=local".
Или же использовав конвейерное выражение:
PS C:\> get-adcomputer "chi-srv01" | Disable-ADAccount
Я также могу использовать мой код, чтобы найти устаревшие учетные записи и все их деактивировать:
PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Disable-ADAccount
Задача 10: Найти компьютеры по типу
Мне также часто задают вопрос, как найти учетные записи компьютеров по типу, например, серверы или рабочие станции. С вашей стороны это требует определенной креативности. В AD нет ничего такого, чтобы отличало сервер от клиента, разве что ОС. Если Ваш компьютер работает под Windows Server 2008, придется слегка сделать несколько дополнительных действий.
Для начала необходимо получить список ОС, а затем осуществляем фильтрацию учетных записей по имеющимся ОС.
PS C:\> Get-ADComputer -Filter * -Properties OperatingSystem | Select OperatingSystem -unique | Sort OperatingSystem
Результаты показаны на рисунке 7.
Рис. 7. Извлечение списка ОС
Я хочу найти все компьютеры, на которых стоит серверная ОС:
PS C:\> Get-ADComputer -Filter "OperatingSystem -like "*Server*"" -properties OperatingSystem,OperatingSystem ServicePack | Select Name,Op* | format-list
Результаты приведены на рисунке 8.
Как и другими командлетами AD Get, Вы можете настроить поисковые параметры и ограничить запрос отдельными OU, если это необходимо. Все выражения, которые я показал, могут быть интегрированы в большие PowerShell выражения. Например, Вы можете сортировать, группировать, применять фильтры, экспортировать в CSV или создавать и отправлять на почту HTML отчеты – и все это из PowerShell! При этом Вам не придется писать ни единого скрипа.
Вот Вам бонус: отчет о возрасте пароля пользователя (user password-age report), сохраненный в HTML файле:
PS C:\> Get-ADUser -Filter "Enabled -eq "True" -AND PasswordNeverExpires -eq "False"" -Properties PasswordLastSet,PasswordNeverExpires,PasswordExpired | Select DistinguishedName,Name,pass*,@{Name="PasswordAge"; Expression={(Get-Date)-$_.PasswordLastSet}} |sort PasswordAge -Descending | ConvertTo-Html -Title "Password Age Report" | Out-File c:\Work\pwage.htm
Хотя это выражение может выглядеть слегка пугающим, при минимальном знании PowerShell им легко воспользоваться. И остается лишь последний совет: как определить кастомное свойство под названием PasswordAge . Значение представляет собой промежуток между сегодняшним днем и свойством PasswordLastSet. Затем я сортирую результаты для моего нового свойства. На рисунке 9 показан выход для моего небольшого тестового домена.
Upd:
В посте приведен перевод статьи на портале
В ноябрьском номере КомпьютерПресс мы ознакомили вас с ключевыми возможностями Windows PowerShell - новой среды командной строки и языка сценариев от компании Microsoft. Сегодня мы рассмотрим применение этой среды для администрирования корпоративной директории Active Directory (AD).
Коротко о PowerShell
Windows PowerShell - новая командная строка и язык сценариев от компании Microsoft. PowerShell является компонентом Windows Server 2008 (надо только выбрать его в Server Manager) и доступна для загрузки со странички www.microsoft.com/powershell для Windows XP, Windows Server 2003 и Windows Vista.
Если вы не знакомы с Windows PowerShell, то рекомендуем вам сначала прочитать статью «Windows PowerShell. Коротко о главном» в КомпьютерПресс № 11’2007. В данной публикации мы ограничимся лишь кратким повторением основ и сразу перейдем к главной теме статьи.
Итак, команды PowerShell называются командлетами (cmdlet) и состоят из глагола (например, get, set, new, remove, move, connect) и существительного в единственном числе, описывающего объект действия. Между ними ставится дефис. Получается что-то вроде: get-process, stop-service и т.п.
Команды, как правило, связываются конвейером, обозначаемым вертикальной чертой (|). Этот знак означает, что вся коллекция объектов из предыдущей команды передается на вход следующей.
Такая объектная ориентированность очень удобна, поскольку позволяет легко оперировать объектами и связывать команды вместе. В этой статье мы расскажем, как подобный подход облегчает управление корпоративной директорией на базе Active Directory.
Способы работы с Active Directory
Директория Active Directory является основой корпоративных сетей на базе Windows Server 2000, 2003 и 2008. Именно там хранятся все учетные записи пользователей, информация о группах, компьютерах сети, ящиках электронной почты и многом другом.
Всем этим богатством надо управлять, для чего предназначен соответствующий инструментарий, входящий в состав Windows Server, но именно PowerShell позволяет легко автоматизировать массовые действия, направленные на большое количество объектов.
Существует три основных способа работы с Active Directory в Windows PowerShell:
- с помощью интерфейса Active Directory Service Interfaces (ADSI) - этот способ является наиболее сложным, но работает в любой установке PowerShell и не требует дополнительных модулей. Он также наиболее близок к способу управления, который использовался в языке сценариев VBScript;
- с помощью провайдера Active Directory, входящего в расширения PowerShell, - этот способ позволяет подключить директорию в виде диска на вашем компьютере и перемещаться по ней с помощью соответствующих команд: dir, cd и т.д. Данный способ требует установки дополнительного модуля с сайта codeplex;
- с помощью командлетов управления Active Directory - это наиболее удобный способ манипулирования объектами директории, но он тоже требует дополнительной инсталляции соответствующих модулей.
ADSI
Active Directory Service Interfaces (ADSI) хорошо знаком всем, кто пытался писать сценарии на языке VBScript. В PowerShell этот интерфейс реализован с помощью так называемого адаптера. Указав в квадратных скобках название адаптера (ADSI) и путь к объекту в директории на языке LDAP-запроса (Lightweight Directory Access Protocol - протокол работы с директориями, который поддерживает и AD), мы получаем доступ к объекту из директории и можем дальше вызывать его методы.
Например, подсоединимся к одному из контейнеров директории и создадим в нем новую пользовательскую учетную запись.
$objOU = ”LDAP://mydc:389/ou=CTO,dc=Employees,dc=testdomain,dc=local”
Итак, теперь у нас переменная $objOU содержит информацию о контейнере (имена переменных в PowerShell начинаются со значка доллара).
Вызовем метод Create и создадим в контейнере нового пользователя:
$objUser = $objOU.Create(“user”, “cn=Dmitry Sotnikov”)
Теперь мы можем устанавливать различные атрибуты:
$objUser.Put(«sAMAccountName”, «dsotnikov”)
И наконец, укажем директории, что эти изменения надо применить:
$objUser.SetInfo()
Преимуществами использования адаптера ADSI являются:
- его наличие в любой поставке PowerShell. Если у вас установлен PowerShell и есть директория, с которой вам надо работать, - вы имеете все, что вам надо;
- применение подхода, близкого к VBScript. Если у вас богатый опыт работы с директорией на языке сценариев VBScript или в приложениях.NET, вы сможете уверенно себя чувствовать, используя этот подход.
К сожалению, у метода есть и недостатки:
- сложность - это самый сложный способ работы с директорией. Писать путь к объекту в виде запроса LDAP нетривиально. Для любой работы с атрибутами требуется указание их внутренних имен, а значит, надо помнить, что атрибут, обозначающий город пользователя, называется не «City», а «l» и т.д.;
- громоздкость - как видно из примера, простейшая операция создания одной учетной записи занимает как минимум четыре строчки, включая служебные операции подсоединения к контейнеру и применения изменений. Таким образом, даже относительно простые операции становятся похожи на сложные сценарии.
Провайдер AD
PowerShell позволяет представлять различные системы в виде дополнительных дисков компьютера с помощью так называемых провайдеров. Например, в состав поставки PowerShell входит провайдер реестра и мы можем перемещаться по реестру с помощью знакомых и любимых всеми нами команд cd и dir (для любителей UNIX команда ls тоже поддерживается).
Провайдера Active Directory в составе PowerShell нет, но его можно установить, зайдя на сайт проекта расширений PowerShell - PowerShell Community Extensions: http://www.codeplex.com/PowerShellCX .
Это проект с открытым кодом, который добавляет большое количество команд в систему PowerShell, а кроме того, устанавливает провайдера AD.
Использование провайдера Active Directory
После установки расширений, набрав Get-PSDrive, мы видим, что к прежним дискам добавился диск текущей активной директории.
Теперь мы можем зайти в эту директорию, набрав cd и указав имя домена, а в любом контейнере использовать команду dir, чтобы увидеть его содержимое.
Кроме того, можно вызывать и другие привычные команды управления файлами (например, del).
К несомненным преимуществам использования провайдера можно отнести:
естественность представления структуры директории - директория AD по своей природе иерархична и похожа на файловую систему;
удобство нахождения объектов - применять cd и dir куда удобнее, чем составлять запрос на языке LDAP.
Из недостатков бросаются в глаза:
- сложность внесения изменений в объекты - провайдер помогает легко добраться до объекта, но чтобы что-либо поменять, нам опять приходится использовать все те же директорные объекты, что и в методе ADSI, а для этого надо оперировать на низком уровне служебных методов и атрибутов AD;
- необходимость дополнительной установки - провайдер не входит в состав PowerShell, и для его применения необходимо скачать и установить расширения PowerShell;
- третьестороннее происхождение - расширения PowerShell не являются продуктом компании Microsoft. Они созданы энтузиастами проекта. Вы вольны их использовать, но за технической поддержкой придется обращаться не в Microsoft, а на сайт проекта.
Командлеты AD
Кроме описанного выше провайдера, для работы с AD существует и набор командлетов (часто называемых также AD cmdlets или QAD cmdlets), доступный с сайта http://www.quest.com/activeroles_server/arms.aspx .
Командлеты состоят из стандартных глаголов операций (get-, set-, rename-, remove-, new-, move-, connect-) и существительных объектов с префиксом QAD (-QADUser, -QADGroup, -QADComputer, -QADObject).
Например, чтобы создать новую четную запись пользователя, понадобится выполнить такую команду:
Преимущества данного подхода таковы:
- простота - использование командлетов скрывает от вас сложность директории, ее схемы и внутренних атрибутов. Вы работаете с объектами директории на уровне понятных названий объектов (user, group, computer), их свойств (name, password, city, department) и действий над ними (get, set, remove, move, new);
- краткость и выразительность - как мы видели, большую часть действий с помощью командлетов можно выразить в виде простых и естественных однострочных операций.
- необходимость дополнительной установки - командлеты, как и провайдер, не входят в состав PowerShell, и для их использования необходимо скачать и установить соответствующую библиотеку;
- третьестороннее происхождение - командлеты для работы с AD не являются продуктом компании Microsoft. Они созданы партнером Microsoft - компанией Quest Software. Вы вольны их применять, но за технической поддержкой придется обращаться не в Microsoft, а на форумы по работе с Active Directory на сайте PowerGUI.org.
На наш взгляд, данные недостатки с лихвой компенсируются простотой и естественностью в использовании, так что практические примеры будут приведены с применением именно этого подхода.
Управление Active Directory
Давайте посмотрим, как PowerShell позволяет выполнять основные операции по работе с директорией AD:
- получение информации;
- изменение свойств;
- работа с группами;
- создание новых объектов;
- изменение структуры директории
Получение информации
Получение информации осуществляется в PowerShell с помощью командлетов с глаголом Get.
Например, чтобы получить список всех пользователей, наберем:
Для групп:
Для записей компьютеров:
Если вам нужны не все записи, а какие-то конкретные, вы можете выбрать именно их с помощью параметров команд.
Получение списка пользователей
Все группы из контейнера Users:
Get-QADGroup -SearchRoot scorpio.local/users
Все пользователи из отдела продаж московского офиса, чьи имена начинаются на букву A:
Get-QADUser -City Moscow -Department Sales -Name a*
При этом вы можете сказать PowerShell’y, в каком виде вы хотите видеть получаемую информацию.
Таблица с именами, городами и подразделениями сотрудников:
Get-QADUser | Format-Table Name, City, Department
То же самое с сортировкой по городам:
Get-QADUser | Sort City | Format-Table DisplayName, City, Department
Сортировка значений и выбор полей для вывода
Для списочного представления той же информации просто используем команду Format-List:
Get-QADUser | Format-List Name, City, Department
Экспортировать информацию в файл CSV (comma-separated values - значения через запятую):
Get-QADUser | Select Name, City, Department | Out-CSV users.csv
Создать отчет в формате HTML:
Get-QADUser | Select Name, City, Department | ConvertTo-HTML | Out-File users.html
Таким образом, одной строчкой простой команды PowerShell вы можете создавать сложные отчеты в удобном для вас формате.
PowerShell позволяет менять атрибуты множества
записей одной командой
Изменение свойств
После того как мы освоились с получением информации из директории, пришла пора что-нибудь в ней поменять.
Свойствами объектов можно манипулировать с помощью команд Set-*.
Например, поменяем мне телефон:
Set-QADUser ‘Dmitry Sotnikov’ -Phone ‘111-111-111’
Но, разумеется, куда более интересны массовые изменения. Для этого мы можем применять конвейер PowerShell, то есть получать список нужных нам объектов с помощью команд Get- и отправлять их в команду Set- для внесения изменений.
Например, наш пермский офис переехал в новое помещение. Возьмем всех пользователей Перми и присвоим им новый номер телефона:
Get-QADUser -City Perm | Set-QADUser -PhoneNumber ‘+7-342-1111111’
Для более сложных манипуляций можно использовать командлет ForEach-Object. Например, каждому пользователю присвоим описание, состоящее из его отдела и города:
Get-QADUser | ForEach-Object { Set-QADUser $_ -Description (S_.City + « « + $_.Department) }
Переменная $_ в данном примере обозначает текущий объект коллекции.
PowerShell предоставляет возможности удобной работы
с группами пользователей
Работа с группами
Работа с группами и членством в них - еще одна массовая операция, которую часто хочется автоматизировать. PowerShell предоставляет такую возможность.
Получение членов группы производится с помощью командлета Get-QADGroupMember:
Get-QADGroubMember Managers
Добавить объект в группу тоже несложно:
Add-QADGroupMember Scorpio\Managers -Member dsotnikov
Аналогично удаление из группы осуществляется с помощью командлеты Remove-QADGroupMember.
Но, разумеется, наиболее полезными являются массовые манипуляции. Добавим всех менеджеров в соответствующую группу:
Get-QADUser -Title Manager | Add-QADGroupMember Scorpio\Managers
Скопируем членство в группе:
Get-QADGroupMember Scorpio\Managers | Add-QADGroupMember Scorpio\Managers_Copy
Используем фильтр, чтобы скопировать не всех членов группы, а только тех, кто отвечает определенному критерию (например, находится в нужном регионе):
Get-QADGroupMember Scorpio\Managers | where { $_.City -eq ‘Ekaterinburg’} | Add-QADGroupMember Scorpio\Ekaterinburg_Managers
Обратите внимание, как мы отфильтровали пользователей с помощью команды where и логического условия (логический оператор -eq - это оператор равенства в PowerShell, от англ. equals).
Создание объектов
Создание объектов, как мы уже видели, осуществляется командами New:
New-QADUser -ParentContainer scorpio.local/Employees -Name ‘Dmitry Sotnikov’
New-QADGroup -ParentContainer scorpio.local/Employees -Name ‘Managers’ -Type Security -Scope Global
Вы можете установить и любые другие атрибуты в процессе создания записи:
New-QADUser -ParentContainer scorpio.local/Employees -Name ‘Dmitry Sotnikov’ -samAccountName dsotnikov -City ‘Saint-Petersburg’ -Password ‘P@ssword’
Чтобы активировать запись, просто отправьте ее по конвейеру в Enable-QADUser (не забудьте установить пароль - иначе операция не пройдет):
New-QADUser -ParentContainer scorpio.local/Employees -Name ‘Dmitry Sotnikov’ -Password ‘P@ssword’ | Enable-QADUser
Import-CSV new_users.csv | ForEach-Object { New-QADUser -ParentContainer scorpio.local/users -Name ($_.Familia + ‘, ’ + $_.Imya) -samAccountName ($_.Imya + $_.Familia) -Department $_.Department -Title $_.Title}
Обратите внимание на то, что мы на лету составляем название учетной записи из фамилии и имени пользователя.
Пример использования файла импорта
записей
Изменение структуры директории
И наконец, конечно же, можно управлять структурой директории.
Например, можно создавать новые контейнеры:
New-QADObject -type OrganizationUnit -ParentContainer scorpio.local -Name NewOU
и перемещать в них объекты по одному:
Move-QADObject MyServer -To scorpio.local/servers
или оптом:
Get-QADUser -Disabled | Move-QADObject -To scorpio.local/Disabled
Импортируем файл и создаем новые учетные записи
Мы легко можем выбрать учетные записи, удовлетворяющие
определенному критерию,
и переместить их в другой контейнер
И многое другое
ММы рассмотрели только малую часть сценариев по управлению активной директорией. Чтобы получить полный перечень командлетов для AD, выполните команду:
Get-Command *-QAD*
Чтобы получить справку по любой команде:
Get-Help Get-QADUser
Чтобы узнать, какие свойства есть у выдаваемого командой объекта:
Get-User | Get-Member
Возможности PowerShell практически безграничны, но при этом найти их достаточно легко.
Заключение
ККак мы видели, PowerShell является отличным средством управления Active Directory. Часть свойств (ADSI) доступна в любой установке PowerShell. Некоторые (провайдер и командлеты) требуют дополнительных модулей. Все они предоставляют огромные возможности, чтобы автоматизировать управление вашей корпоративной директорией, а значит, уменьшить риски, избавиться от рутины и увеличить вашу эффективность на работе.
Главное - эти технологии уже доступны и способны помочь вам в администрировании вверенных систем уже сегодня. В заключение процитируем системного администратора ЗАО «УК «ЕвразФинанс» Василия Гусева: «В нашей компании, как и практически везде, Active Directory является одним из самых используемых и критичных сервисов. С помощью PowerShell и AD Cmdlets многие задачи стало проще выполнять через командную строку, нежели через ADUC (Active Directory Users and Computers. - Прим. ред .). Никогда еще автоматизация Active Directory не была столь легкой и доступной».