Что такое Active Directory в Windows 10 и для чего это нужно
Компания «Майкрософт» разработала новую программу, позволяющую объединить все объекты сети (компьютеры, роутеры, принтеры, профили пользователей, серверы) в единую систему. Называется это хранилище — Active Directory или Активный каталог (сокращенно AD).
Для реализации этой программы нужен специальный сервер, вернее, контроллер домена. В нем будет храниться вся информация. Через него выполняется аутентификация (через протокол Kerberos) пользователей и различных устройств в сети. Контроллер домена будет мониторить доступ к объектам своей сети, то есть разрешать запрашиваемое действие или, наоборот, блокировать его.
Использование Active Directory имеет ряд преимуществ. Эта программа обеспечивает безопасную работу, упрощает взаимодействие различных объектов одной сети. С помощью AD можно ограничить ряд функций для определенных пользователей. Данные, хранящиеся на таком сервере, защищены от внешнего доступа. Службы AD обеспечивают удобный обмен файлами (на основе технологии DFS), объединяют все объекты в одну систему (поддерживается стандарт LDAP). Возможна интеграция с Windows Server через протокол RADIUS.
Программу Active Directory можно использовать на базе профессиональной редакции Win10. Существует специальный инструмент управления доменами (оснастка ADUC), позволяющий адаптировать AD к своей ОС. Этот адаптер позволяет контролировать и управлять объектами сети. Прежде чем использовать ADUC, рекомендуется установить сервис RSAT, включающий Командную строчку, Power Shell, а также средства удаленного администрирования сервера.
Важно! Active Directory выступает в роли каталога, хранилища информации о пользователях и инфраструктуре сети. Реализация этого проекта осуществляется через контроллер домена
Это сервер контролирует доступ (разрешает или блокирует запросы) к объектам своей сети. AD рекомендуется использовать для больших компаний.
Перенаправление CN=Users на указанный администратором OU
-
Войдите в систему с учетными данными администратора домена в домене Z, куда перенаправляется контейнер CN=Users.
-
Переход домена на функциональный уровень Windows Server 2003 или более новый в оснастке пользователей и компьютеров Active Directory (Dsa.msc) или snap-in доменов и трастов (Domains.msc). Дополнительные сведения об увеличении функционального уровня домена см. в дополнительных сведениях о повышении уровней функциональных функций домена и леса.
-
Создайте контейнер OU, в котором должны быть размещены пользователи, созданные с API более ранней версии, если нужного контейнера OU не существует.
-
Запустите Redirusr.exe по командной подсказке с помощью следующего синтаксиса. В команде container-dn — это отличительное имя OU, которое станет расположением по умолчанию для вновь созданных пользовательских объектов, созданных интерфейсами API на уровне ниже:
Redirusr устанавливается в папке на Windows или более новых компьютерах Server 2003. Например, чтобы изменить расположение по умолчанию для пользователей, созданных с помощью API-интерфейсов, таких как Net User, на контейнер OU=MYUsers в домене, используйте следующий синтаксис:
Через файл ntuser.dat
Каждый раз, как пользователь входит в систему все его настройки загружаются из файла ntuser.dat, который находится в домашнем каталоге ‘C:\Users\UserName\’. При выходе из системы все настройки записываются в этот же файл. То есть мы можем получить имя пользователя по дате изменения этого файла.
В этом примере вернутся все каталоги пользователей:
Получим даты изменения файлов ‘ntuser.dat’:
Извлечем из пути имя пользователя и уберем лишние колонки:
Как вы знаете к большинству компьютеров можно подключится используя следующие пути:
Это же мы можем использовать с командой Get-ChildItem. Соединим все это в функцию:
Далее мы можем использовать команду в таких вариациях:
Ключ ‘-ErrorAction SilentlyContinue’ нужен для игнорирования ошибок связанных с выключенными компьютерами. Если его не написать вы получите ошибки формата:
Отмечу несколько моментов:
Представим, что мы захотим сформировать список из тех пользователей, которые выполнили выход за последний час. Это можно сделать так:
Исключить пользователей мы можем так же:
Экспорт для Excel аналогичен предыдущему примеру:
Импорт пользователей средствами LDIFDE
Утилита командной строки Ldifde позволяет также импортировать или экспортировать объекты Active Directory, используя файловый формат LDIF (Lightweight Directory Access Protocol Data Interchange File). Данный файловый формат состоит из блока строк, которые образуют конкретную операцию. В отличие от файлов CSV, в данном файловом формате каждая отдельная строка представляет собой набор атрибутов, после которого следует двоеточие и само значение текущего атрибута. Также как и в CSV файле, первой строкой обязан быть атрибут DN. За ним следует строка changeType, которая указывает тип операции (add, change или delete). Для того чтобы научиться разбираться в этом файловом формате, вам нужно выучить по крайней мере ключевые атрибуты принципалов безопасности. Пример предоставлен ниже:
Рис. 9. Пример LDF файла
Синтаксис команды следующий:
Ldifde -i -f filename.csv -k
где:
- -i. Параметр, который отвечает за режим импорта. Если вы не укажете данный параметр, то эта команда будет использовать по умолчанию режим экспорта;
- -f. Параметр, идентифицирующий имя файла, которое предназначено для импорта или экспорта;
- -k. Параметр, предназначенный для продолжения импорта пропуская все возможные ошибки;
- -v. Параметр, используя который вы можете вывести подробную информацию;
- -j. Параметр, отвечающий за расположение файла журнала;
- -d. Параметр, указывающий корень поиска LDAP;
- -f. Параметр, предназначенный для фильтра поиска LDAP;
- -p. Представляет собой область или глубину поиска;
- -l. Предназначен для указания списка атрибутов с разделительными запятыми, который будет включен в экспорт результирующих объектов;
Создание пользователей при помощи команды CSVDE
Еще одна утилита командной строки CSVDE позволяет импортировать или экспортировать объекты Active Direcoty, представленные в виде cvd-файла – текстового файла с разделительными запятыми, которые можно создавать при помощи табличного процессора Microsoft Excel или простейшего текстового редактора Блокнот. В этом файле каждый объект представляется одной строкой и должен содержать атрибуты, которые перечислены в первой строке
Стоит обратить внимание на то, что при помощи данной команды вы не можете импортировать пользовательские пароли, то есть, сразу после завершения операции импорта пользовательские учетные записи будут отключены. Пример такого файла следующий:
Рис. 7. Представление CSV-файла
Синтаксис команды следующий:
Csvde –i –f filename.csv –k
где:
- -i. Параметр, который отвечает за режим импорта. Если вы не укажите данный параметр, то эта команда будет использовать по умолчанию режим экспорта;
- -f. Параметр, идентифицирующий имя файла, которое предназначено для импорта или экспорта;
- -k. Параметр, предназначенный для продолжения импорта пропуская все возможные ошибки;
- -v. Параметр, используя который вы можете вывести подробную информацию;
- -j. Параметр, отвечающий за расположение файла журнала;
- -u. Параметр, позволяющий использовать режим Юникода.
Пример использования команды:
Csvde -i -f d:\testdomainusers.csv -k
Рис. 8. Импорт учетных записей пользователей из CSV-файла
Требования, связанные с отказоустойчивыми кластерами, Active Directory доменами и учетными записями
Как описано в предыдущих трех разделах, для успешной настройки кластерных служб и приложений в отказоустойчивом кластере должны быть выполнены определенные требования. Основные требования касаются расположения узлов кластера (в пределах одного домена) и уровня разрешений учетной записи пользователя, устанавливающего кластер. Если эти требования соблюдены, другие учетные записи, необходимые для кластера, можно создать автоматически с помощью мастеров отказоустойчивого кластера. В следующем списке приведены сведения о базовых требованиях.
-
Узлы: Все узлы должны находиться в одном домене Active Directory. (домен не может быть основан на Windows NT 4,0, который не включает Active Directory.)
-
Учетная запись пользователя, устанавливающего кластер: Пользователь, который устанавливает кластер, должен использовать учетную запись со следующими характеристиками:
-
Учетная запись должна быть учетной записью домена. Она не обязательно должна быть учетной записью администратора домена. Это может быть учетная запись пользователя домена, если она соответствует другим требованиям, указанным в этом списке.
-
Учетная запись должна иметь разрешения администратора на серверах, которые станут узлами кластера. Самый простой способ предоставить это — создать учетную запись пользователя домена, а затем добавить эту учетную запись в локальную группу администраторов на каждом из серверов, которые станут узлами кластера. Дополнительные сведения см. в подразделе , далее в этом руководстве.
-
Учетной записи (или группе, в которую входит учетная запись) необходимо предоставить разрешения Создание объектов Computer и чтение всех свойств в контейнере, который используется для учетных записей компьютеров в домене. Дополнительные сведения см. в подразделе , далее в этом руководстве.
-
Если в вашей организации выбрана Предварительная учетная запись имени кластера (учетная запись компьютера с тем же именем, что и у кластера), учетная запись с именем предварительно подготовленное имя кластера должна предоставить учетной записи пользователя, устанавливающего кластер, разрешение «Полный доступ». Другие важные сведения о предварительной настройке учетной записи имени кластера см. в подразделе далее в этом руководстве.
-
Как найти устаревшие учетные записи пользователей
Через оснастку ADUC
В прошлый раз я вам уже приводил пример использования оснастки Active Directory Пользователи и компьютеры, через которую мы искали пропавшие компьютеры в локальной сети, которые не появлялись уже месяц. Сейчас сделаем все то же самое и с пользовательскими учетными записями. У меня AD на Windows Server 2012 R2, открываем ADUC, для этого нажмите WIN+R и введите dsa.msc.
Далее переходите в пункт Сохраненные запросы, данный пункт появился еще в 2008 версии. Щелкаем по нему правым кликом и выбираем Создать > Запрос.
В открывшейся форме запроса задайте:
- Имя запроса > у меня это потерявшиеся пользователи
- Описание при необходимости
- Корень запроса > тут можно оставить весь домен, либо же конкретизировать на нужном OU
После чего жмем кнопку запрос.
На вкладке пользователи видим пункт «Число дней со времени последнего входа в систему» я для примера поставил 60 дней.
В итоге вы получите нужный вам список, неактивных учетных записей сотрудников.
Через оснастку powershell
Все то же самое можно сделать и через Powershell. Сразу приведу код, задачей которого идет поиск неактивных пользователей, для этого я выбрал период 45 дней, отключение данных пользователей и перемещение в специально отведенную для этого OU.
$date_with_offset= (Get-Date).AddDays(-45) $users = Get-ADUser -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset } | Sort LastLogonDate foreach ($user in $users) {set-aduser $user -enabled $false; move-adobject -identity $user -targetpath «ou=Уволенные,ou=Мск Л. пользователи,ou=Местоположение,dc=msk,dc=contoso,dc=com»} Get-ADUser -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset } | Sort LastLogonDate | FT Name, LastLogonDate -AutoSize | Out-File c:\Script\users.txt
- В первой строке вы объявляете переменную, в которой задаете срок поиска
- Создаем переменную и делаем выборку по последнему времени логина
- Перемещаем пользователей
Делаем отчет в файл
Скачать готовый скрипт поиска неактивных пользователей
Еще полезные вещи по работе с пользователем. Перед использованием ниже команд, нужно загрузить модуль Active Directory, через команду
Import-Module activedirectory
Далее получаем справку по команде Get-ADUser
Get-Help Get-ADUser
Теперь посмотрим на базовые параметры пользователя, через команду
Get-ADUser -Identity sem
Как видите не особо информативно, но из полезного есть SID учетной записи пользователя.
Более детально по свойствам можно посмотреть вот такой строкой.
Get-ADUser -Identity sem _properties *
Через такую конструкцию вы можете выводить конкретные поля.
Get-ADUser -identity sem -Properties * | FT Name, LastLogonDate -Autosize
Как видите способов получения списка неактивных пользователей Active Directory хватает, так, что выбирайте, то что вам по душе.
Устанавливаем роль
RSAT или локальный сервер с GUI:
Сначала нужно добавить сервер в RSAT. Добавляется он на главной странице с помощью доменного имени или ip адреса. Убедитесь, что вы вводите логин в формате local\Administrator, иначе сервер не примет пароль.
Переходим в добавление компонентов и выбираем AD DS.
Powershell:
Если вы не знаете, как называется компонент системы, можно выполнить команду и получить список доступных компонентов, их зависимостей и их имена. Get-WindowsFeature
Копируем имя компонента и приступаем к установке. Install-WindowsFeature -Name AD-Domain-Services Windows Admin Center:
Переходим в «Роли и компоненты» и выбираем ADDS (Active Directory Domain Services).
И это буквально всё. Управлять Active Directory через Windows Admin Center на текущий момент невозможно. Его упоминание не более чем напоминание о том, насколько он пока что бесполезен.
Получение имени залогиненного пользователя
Я не могу вспомнить готовую команду Powershell, которая бы вернула логин пользователя, но такая возможность есть через WMI:
Есть еще вариант использовать CIM, который может работать немного быстрее:
Обе команды могут работать удаленно если добавить атрибут ComputerName:
Если вы планируете выполнять эти команды удаленно, то может понадобится выполнить предварительные настройки в виде открытия портов и необходимых правах.
Получить только имя пользователя можно так:
Как вы знаете в Winodws есть так же параллельные сеансы сервисов. Если вам нужно вернуть имена этих аккаунтов нужно использовать класс «win32_LoggedOnUser»:
Получаем в Powershell активных сессий пользователей AD и их компьютеров
Когда появляется необходимость сделать работу на компьютере пользователя, по его заявке, иногда бывает сложно узнать имя компьютера для подключения к нему. В этой статье будет рассмотрена возможность сбора всех активных сеансов пользователей (тех кто прошел аутентификацию на определенном компьютере) на всех компьютерах AD. Конечно, есть сторонние программы, которые решают такие проблемы и встроенные средства, но тут будет рассмотрена реализация через Powershell. Такой список так же хорошо подойдет для аудита, если понадобится быстро узнать кто пользовался компьютером и когда.
Навигация по посту
Постановка задачи
Вы наверняка знаете, что с конца 2019 года компания Microsoft перестает в базовом варианте поддерживать операционные системы Windows Server 2008 R2 и Windows 7, останется только расширенная поддержка для корпоративных пользователей. Вам как системному администратору можете поступить задача, определить сколько у вас таких рабочих станций или серверов, доступны ли они по сети, когда последний раз обращались к контроллеру домена и были изменены их данные.
Второй вариант, когда вам необходимо найти компьютеры с определенными операционными системами, связан с лицензированием, чтобы понять сколько у вас используется.
Сводка
При установке по умолчанию домена Active Directory учетные записи пользователей, компьютеров и групп помещались в контейнеры cn=objectclass вместо более желательного контейнера класса OU. Аналогичным образом учетные записи, созданные с помощью API более ранней версии, помещались в контейнеры CN=Users и CN=computers.
Важно!
Некоторые приложения требуют, чтобы определенные принципы безопасности располагались в контейнерах по умолчанию, таких как CN=Users или CN=Computers. Убедитесь, что у приложений есть такие зависимости, прежде чем переместить их из контейнеров CN=users и CN=computes.
Реализация задачи
Делать мы все будет с помощью вот такого простенького скрипта.
Давайте с вами пробежимся по каждой из строчек кода.
Set WshNetwork = WScript.CreateObject(«WScript.Network») — это объект VBSScript позволяет получать информацию по трем свойствам имя компьютера ComputerName, имя пользователя UserNam, имя домена UserDomain и методы MapNetworkDrive(), AddPrinterConnection(), SetDefaultPrinter(). Объект WScript.Network очень часто используется в WSH. У созданного объекта — всего три свойства и восемь методов, но они могут оказаться очень полезными. Свойства ComputerName, UserDomain и UserName возвращают, соответственно, имя компьютера, имя домена и имя текущего пользователя. Очень удобно:
- для протоколирования выполнения скрипта — записывается информация о том, на каком компьютере произошло то или иное событие;
- для выполнения каких-либо действий только на том компьютере или только с тем пользователем, который указан в нашем списке (при помощи утилит ResourceKit можно основываться и на членстве пользователей в группах).
- Кроме того, можно просто отображать полученную информацию — например, на Web-странице, которая используется в качестве обоев для пользователя.
- Set objSysInfo = CreateObject(«ADSystemInfo») — создание экземпляра объекта ADSystemInfo. Это невероятно полезный объект, который может возвращать всевозможную информацию о вошедшем в систему пользователе и локальном компьютере. Единственным недостатком этого объекта является тот факт, что он может быть создан только локально: вы не можете создать экземпляр ADSystemInfo на удаленном компьютере, а затем получить информацию о пользователе, вошедшем в систему на этом компьютере.
- strUserDN = objSysInfo.UserName — получаем значение свойства strUserDN и сохраняем его в переменной с именем strUser
- Set objUser = GetObject(«LDAP://» & strUserDN) — используем эту переменную как часть вызова GetObject, который связывает нас с учетной записью пользователя.
- objUser.Put «Pager», WshNetwork.ComputerName — изменение атрибута с помощью метода Put. В моем случае, это атрибут пейджер
- objUser.SetInfo — подтверждаем изменения в каталоге методом SetInfo
Вы вместо атрибута «Pager» можете подставлять любой, посмотреть атрибуты можно через редактор в Active Directory. Далее создаете текстовый документ и сохраняете его с расширением vbs.
Если не хотите сами создавать файл vbs, то можете скачать готовый скрипт добавления имени компьютера в нужный атрибут пользователя
Дополнительные сведения
Пользователи, компьютеры и группы, созданные API более ранней версии, создают объекты в пути DN, указанном в атрибуте WellKnownObjects. Атрибут WellKnownObjects расположен в главе NC домена. В следующем примере кода показаны соответствующие пути в атрибуте WellKnownObjects из CONTOSO.COM области NC.
Dn: DC=CONTOSO,DC=COM
Например, в следующих операциях используются API более ранней версии, которые отвечают на пути, определенные в атрибуте WellKnownObjects:
Операция | Версии операционной системы |
---|---|
Пользовательский интерфейс «Регистрация домена» | Windows NT версии4.0Windows 2000Windows XP ProfessionalWindows XP UltimateWindows Server 2003Windows Server 2003 R2Windows VistaWindows Server 2008Windows 7Windows Server 2008 R2 |
NET COMPUTER | Все версии |
NET GROUP | Все версии |
NET USER | Все версии |
ДОБАВЛЕНИЕ NETDOM, где команда /ou не указана или поддерживается | Все версии |
Полезно сделать контейнер по умолчанию для групп пользователей, компьютеров и безопасности OU по нескольким причинам, в том числе:
-
Групповые политики можно применять в контейнерах OU, но не в контейнерах класса CN, где по умолчанию ставятся основные принципы безопасности.
-
Передовая практика — упорядочность принципов безопасности в иерархию OU, которая отражает организационную структуру, географическое расположение или модель администрирования.
При перенаправлении папок CN=Users и CN=Computers следует помнить о следующих проблемах:
-
Целевой домен должен быть настроен для запуска на уровне Windows Server 2003 или выше. Для функционального уровня Windows Server 2003 это означает:
- Windows Сервер 2003 или более новый
- Windows Сервер 2003 или более новый
- Все контроллеры домена в целевом домене должны работать Windows Server 2003 или более новые.
- Windows Необходимо включить функциональный уровень домена Server 2003 или более высокий.
-
В отличие от CN=USERS и CN=COMPUTERS, контейнеры OU подвергаются случайным удалениям привилегированных учетных записей пользователей, в том числе администраторов.
Контейнеры CN=USERS и CN=COMPUTERS — это объекты, защищенные системой, которые не могут и не должны удаляться для обратной совместимости. Но их можно переименовать. Организационные подразделения могут быть удалены администраторами случайно.
Windows Версии сервера 2003 для пользователей Active Directory & компьютеров могут выполнять действия в Области Защиты организационного подразделения от случайного удаления.
Windows Сервер 2008 и более новые версии оснастки пользователей и компьютеров Active Directory имеют объект Protect от случайного удаления, который можно выбрать при создании нового контейнера OU. Вы также можете выбрать его на вкладке Объект в диалоговом окне Свойства для существующего контейнера OU.
Сценарий задокументирован в script to Protect Organizational Units (OUs) от случайного удаления.
-
Exchange Server 2000 и 2003 годах с ошибками.
Получение компьютеров
Команда, которая вернет список всех компьютеров в домене следующая:
Команда точно выполнится на домен контроллере, так как все поддерживаемые серверные версии ОС устанавливают нужный модуль Powershell вместе с Active Directory (если вы только специально не отключали эту возможность). Если вы планируете выполнять команду с клиента на Windows 7 и выше, то такой модуль устанавливается вместе с RSAT (Remote Server Administration Tools). В отдельном случае может понадобится импортировать этот модуль следующей командой:
Вы так же можете проверить, что этот модуль у вас установлен следующей командой:
В остальных случаях стоит смотреть на явные запреты на выполнение скриптов Powershell и чтения Active Directory.
Что бы вернуть данные по одному пользователю используется ключ Identity:
Параметр Filter является обязательным. Вы можете вернуть дополнительные данные используя Properties:
Вам так же будет интересно:
Создание пользователей при помощи PowerShell
В операционной системе Windows Server 2008 R2 появилась возможность управлять объектами Active Directory средствами Windows PowerShell. Среда PowerShell считается мощнейшей оболочкой командной строки, разработанной на основе .Net Framework и предназначенной для управления и автоматизации администрирования операционных систем Windows и приложений, которые работают под данными операционными системами. PowerShell включает в себя свыше 150 инструментов командной строки, называемых командлетами, которые предоставляют возможность управления компьютерами предприятия из командной строки. Данная оболочка является компонентом операционной системы.
Для создания нового пользователя в домене Active Directory используется командлет New-ADUser, большинство значений свойств которого можно добавлять при помощи параметров данного командлета. Для отображения имени LDAP используется параметр –Path. Данный параметр задает контейнер или подразделение (OU) для нового пользователя. Если параметр Path не задан, командлет создает объект пользователя в контейнере по умолчанию для объектов пользователя в данном домене, то есть в контейнере Users. Для того чтобы указать пароль, используется параметр –AccountPassword со значением (Read-Host -AsSecureString «Пароль для вашей учетной записи»)
Также стоит обязательно обратить внимание на то, что значением параметра –Country выступает именно код страны или региона выбранного пользователем языка. Синтаксис командлета следующий:
New-ADUser <string> >] >] >] >] >] >] >] >] >] >] >] >]
Как видно из данного синтаксиса, нет смысла описывать все параметры, так как они идентичны атрибутам принципала безопасности и не нуждаются в объяснениях. Посмотрим на пример использования:
New-ADUser -SamAccountName 'Evgeniy.Romanov' -Name 'Евгений Романов' -GivenName 'Евгений' -Surname 'Романов' -DisplayName 'Евгений Романов' -Path 'OU=Маркетинг,OU=Пользователи,DC=testdomain,DC=com' -CannotChangePassword $false -ChangePasswordAtLogon $true -City 'Херсон' -State 'Херсон' -Country UA -Department 'Маркетинг' -Title 'Маркетолог' -UserPrincipalName '[email protected]' -EmailAddress '[email protected]' -Enabled $true -AccountPassword (Read-Host -AsSecureString "AccountPassword")
Рис. 10. Создание учетной записи пользователя средствами Windows PowerShell
Фильтрация вывода
У нас есть базовые свойства, которые фильтруются с помощью Filter. Это:
- DistinguishedName
- Enabled
- ObjectClass
- ObjectGUID
- SamAccountName
- SID
- UserPrincipalName
И ряд свойств, которые возвращаются с параметром Properties. Их можно фильтровать через дополнительные условия (конвейер, where-object, циклы). Имена этих свойств можно вернуть так:
Get-ADComputer -Filter * -Properties * | Get-Member -MemberType Properties | select name
1 | Get-ADComputer-Filter *-Properties *|Get-Member-MemberType Properties|select name |
Использование Filter
Если вы планируете получить информацию по определенному доменному компьютеру, то вам нужно добавить условие. В примере ниже я возвращаю информацию только по компьютеру у которого имя равно «AD1»:
Get-ADComputer -Filter {Name -eq «AD1»} -Properties *
1 | Get-ADComputer-Filter{Name-eq»AD1″}-Properties * |
Если нужно найти только компьютеры, которые содержат в имени определенные значения, то нужно использовать -like вместо -eq . В моем примере я ищу все компьютеры содержащие в имени «CL» (регистр не учитывается).
Get-ADComputer -Filter {Name -like «*CL*»} -Properties *
1 | Get-ADComputer-Filter{Name-like»*CL*»}-Properties * |
Знаки * говорят, что в этих местах может быть еще текст. Такое написание «C*L» соответствовало бы логике: строка начинается с буквы «C», затем может быть еще текст завершающийся на «L».
Использование Properties
Свойства возвращаемые через ключ Properties можно фильтровать двумя способами.
Первый — указывать их явно. Например вы хотите вернуть список с датами создания учетных записей компьютеров домена, которые хранит свойство «Created». Это можно сделать так:
Get-ADComputer -Filter * -Properties Created
1 | Get-ADComputer-Filter *-Properties Created |
Указать больше свойств можно через запятую. Например:
Get-ADComputer -Filter * -Properties Created,CN,CodePage
1 | Get-ADComputer-Filter *-Properties Created,CN,CodePage |
Так же можно фильтровать через команду where-object. На примере ниже я получаю компьютеры со всеми свойствами, но созданные до 31 декабря 2019 года:
Get-ADComputer -Filter * -Properties * | `
Where-Object -Property Created -LT (Get-Date -Year 2019 -Month 12 -Day 31)
1 |
Get-ADComputer-Filter *-Properties *|` Where-Object-PropertyCreated-LT(Get-Date-Year2019-Month12-Day31) |
Ограничить вывод определенными свойствами можно через Select:
$date = (Get-Date -Year 2019 -Month 12 -Day 31)
Get-ADComputer -Filter * -Properties * | `
Where-Object -Property Created -LT $date| `
select Name, Created | ft
1 |
$date=(Get-Date-Year2019-Month12-Day31) Get-ADComputer-Filter *-Properties *|` Where-Object-PropertyCreated-LT$date|` select Name,Created|ft |
Получение включенных и отключенных учетных записей
Используя свойства Enabled можно вернуть учетные записи активных и деактивированных записей. Так будут возвращены отключенные учетные записи:
Get-ADComputer -Filter {Enabled -eq $False}
1 | Get-ADComputer-Filter{Enabled-eq$False} |
Фильтрация вывода
У нас есть базовые свойства, которые фильтруются с помощью Filter. Это:
- DistinguishedName
- Enabled
- ObjectClass
- ObjectGUID
- SamAccountName
- SID
- UserPrincipalName
И ряд свойств, которые возвращаются с параметром Properties. Их можно фильтровать через дополнительные условия (конвейер, where-object, циклы). Имена этих свойств можно вернуть так:
Использование Filter
Если вы планируете получить информацию по определенному доменному компьютеру, то вам нужно добавить условие. В примере ниже я возвращаю информацию только по компьютеру у которого имя равно «AD1»:
Если нужно найти только компьютеры, которые содержат в имени определенные значения, то нужно использовать -like вместо -eq . В моем примере я ищу все компьютеры содержащие в имени «CL» (регистр не учитывается).
Знаки * говорят, что в этих местах может быть еще текст. Такое написание «C*L» соответствовало бы логике: строка начинается с буквы «C», затем может быть еще текст завершающийся на «L».
Использование Properties
Свойства возвращаемые через ключ Properties можно фильтровать двумя способами.
Первый — указывать их явно. Например вы хотите вернуть список с датами создания учетных записей компьютеров домена, которые хранит свойство «Created». Это можно сделать так:
Указать больше свойств можно через запятую. Например:
Так же можно фильтровать через команду where-object. На примере ниже я получаю компьютеры со всеми свойствами, но созданные до 31 декабря 2019 года:
Ограничить вывод определенными свойствами можно через Select:
Получение включенных и отключенных учетных записей
Используя свойства Enabled можно вернуть учетные записи активных и деактивированных записей. Так будут возвращены отключенные учетные записи: