Dsquery.exe это утилита командной строки для получения информации о различных объектах в домене ActiveDirectory. Утилита доступна по-умолчанию во всех версиях Windows Server. Для ее использования в десктопных ОС необходимо установить соответствующую версию RSAT.
Команда dsquery позволяет выполнять запросы к LDAP каталогу для поиска объектов, отвечающих указанному критерию. В качестве атрибута команды dsquery нужно указать тип объекта AD, по которым выполняется поиск. Например:
- dsquery computer
- dsquery contact
- dsquery subnet
- dsquery group
- dsquery ou
- dsquery site
- dsquery server
- dsquery user
- dsquery quota
- dsquery partition
- dsquery *
Последняя команда используется для поиска каталоге AD любых объектов с помощью общего запроса LDAP.
Чтобы получить справку о конкретной команде, наберите:
dsquery <object_type> /?
dsquery user /?
Рассмотрим полезные примеры использования команды dsquery для получения информации из AD.
Чтобы найти все контролеры домена в лесу AD, выполните команду:
dsquery Server -o rdn -Forest
Вывести список всех контроллеров домена в указанном домене:
dsquery Server -domain vmblog.ru
Чтобы вывести все контроллеры домена с ролью Global Catalog:
dsquery Server -domain vmblog.ru -isgc
Список всех контроллеров домена в лесу, которые держат роль Schema Master FSMO:
dsquery Server -Forest -hasfsmo schema
Вывести все подсети в сайте Moscow:
dsquery subnet –site Moscow
По умолчанию утилита dsquery позволяет вывести только 100 объектов из AD. Чтобы нужно, чтобы команда вернула более 100 результатов, используйте аргумент –limit. Параметр –limit 0 означает, что результаты в выводе не ограничены.
Выведем список всех пользователей домена:
dsquery * -filter "(&(objectcategory=person)(objectclass=user)(name=*))" -limit 0 -attr samaccountname
По-умолчанию команда dsquery выводит список объектов, соответствующих критериям на экран, но вы можете сохранить полученный список в файл, перенаправив результаты команды таким образом:
DsQuery User > ExportAllUsers.txt
Можно получить информацию о конкретном пользователе:
dsquery * -filter "(&(objectcategory=person)(objectclass=user)(samaccountname=aivanov))" -limit 0 -attr *
Чтобы получить SID пользователя, используйте команду:
dsquery * -filter "&(objectcategory=user)(samaccountname=asivanov)" -attr objectsid
Следующая команда возвращает список групп в домене:
dsquery * -filter "(&(objectcategory=group)(objectclass=group)(name=*))" -limit 0 -attr Name
Выведем список компьютеров в домене, имена которых начинаются в BUH-PC:
dsquery computer -name BUH-PC*
Утилиту dsquery можно использовать конвейером с другими утилитами (dsmod, dsget, dsrm или dsmove), и тогда в качестве входных данных для них будет браться результат команды dsquery. Например, чтобы сохранить членов определенной группы AD в текстовый файл (по аналогии с командлетом Get-ADGroupMember) используйте такой конвейер:
dsquery group ‘DC=vmblog,DC=ru’ -name ‘domain admins’ | dsget group -members > ExportUsersinGroup.txt
Либо вы можете отключить учетные записи найденных пользователей:
dsquery user –name Seme* | dsmod user -disabled yes
Найти и удалить из AD все компьютеры, которые неактивны более 10 недель:
dsquery computer -inactive 10 | dsrm
Добавить всех пользователей из определенной OU в группу безопасности AD:
dsquery user ‘ou=SPB,dc=vmblog,dc=ru’ | dsmod group ’cn=SPBUsers,ou= SPB,dc=vmblog,dc=ru -addmbr
Чтобы получить список пользователей, которые не меняли свой пароль в домене более 60 дней, выполните:
dsquery user -stalepwd 60 -limit 0
На первый взгляд синтаксис утилиты dsquery довольно сложен. Но если вы попробуете самостоятельно выполнить несколько запросов, вы поймете, что большинство подкоманд dsquery используют один и тот же стандартный синтаксис и содержат лишь несколько расширений стандартного синтаксиса, специфичных для типа объекта, с которым они работают.