Skip to content

JScript for searching for data for environment variables in Active Directory objects over the LDAP protocol or in a folder with ini files.

License

Notifications You must be signed in to change notification settings

ViPiC-Ru/env.search

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание

JScript для поиска данных для переменных среды в объектах Active Directory по протоколу LDAP, в папке с ini файлами или в csv, tsv файле. Основная задача скрипта найти, добавить в переменные среды данные по компьютеру или пользователю и используя эти переменные, выполнить необходимую команду в целях системного администрирования. Данные по компьютерам можно собрать с помощью другого скрипта env и выгрузить их в ini файлы в папке или добавить в атрибуты объектов Active Directory с помощью другого скрипта env.send.

Использование

В командной строке Windows введите следующую команду. Если необходимо скрыть отображение окна консоли, то вместо cscript можно использовать wscript.

cscript env.search.min.js [location] [<config>...] [\\ <filter>...] [\\ <input>...] [\\ <action>...]
  • <location> - Путь к файлу, папке или url к источнику данных.
    • file - Получение данных из папки с ini файлами или из tsv, csv файла.
    • ldap - Получение данных из Active Directory (можно указать guid, cn, dn).
  • <config> - Конфигурационные параметры (может быть несколько, порядок не важен).
    • search - Поисковой запрос (можно опустить, будет запрошен в процессе).
    • index - Номер объекта в выборке (можно опустить, будет запрошен в процессе).
    • action - Ключ действия (можно опустить, будет запрошен в процессе).
    • item - Шаблон представления объектов в выборке (доступны переменные %ENV%).
    • unit - Шаблон представления других списков (доступны переменные %ENV%).
    • service - Имя удалённой службы, которую нужно запустить перед выполнением действия.
    • check - Флаг проверки доступности целевых компьютеров.
    • user - Флаг запроса информации по пользователю (только для url схемы ldap).
    • noalign - Флаг запрета выравнивания выборок и списков.
    • nowait - Флаг выполнения действия без ожидания (только при отсутствии service).
    • color - Флаг использования цветового оформления.
    • repeat - Флаг повторения действия (при наличии color или action без nowait).
  • <filter> - Фильтры по свойствам объекта (доступны wildcard шаблоны и объединения ключей).
  • <input> - Шаблоны для получения данных из свойств объекта (только для url схемы ldap).
  • <action> - Действия в формате ключ и команда или разделители (доступны переменные %ENV%).

Поиск объектов

Поиск нужных объектов производится по значениям в ключах соответствующим фильтрам. В фильтрах можно использовать wildcard шаблоны, а также переменные SEARCH и TRANSLIT для подстановки поискового запроса и его транслитерации. Если указано несколько фильтров, то при поиске они объединяются оператором AND. В одном фильтре можно задать несколько ключей, разделив их символом запятой, при поиске они объединяются оператором OR.

Шаблоны задаются в формате VAL|VAL!NOT!NOT, где VAL разрешённые значения, а NOT нет. Во всех значениях можно использовать подстановочный знак * в начале и/или в конце значения. Синтаксис шаблонов для всех источников данных схож, но разные виды источников данных интерпретируют шаблоны чуть-чуть по-разному.

Если получение данных идёт для url схемы file, то в шаблоне сначала нужно перечислить все разрешённые значения VAL, а затем все запрещённые NOT. Если после запрещённых значений указать разрешённые, то они игнорируются. Пустое значение интерпретируется как любое значение. Подстановочный знак * можно пробывать использовать и в середине значения, но исчерпывающего тестирования поведения самописного парсера не проводилось.

Если получение данных идёт для url схемы ldap, то шаблон конвертируется в LDAP запрос в SQL диалекте. Разрешённые значения VAL разделяются оператором OR. Запрещённые значения добавляются через оператор AND к разрешённому значению, за которым они следуют. Запрещённые и разрешённые значения можно комбинировать как угодно. Пустое значение заменяется на подстановочный знак *. В качестве значений для ключей manager, managedBy, member и memberOf можно указывать не только distinguishedName, но и guid, cn, sAMAccountName интересующего объекта. Далее сконвертированный запрос отправляется на сервер для получения списка объектов.

Переменные среды

Скрипт добавляет временные переменные в среду процесса. Для url схемы file переменные добавляются по ключам из tsv, csv или ini файла. Для url схемы ldap переменные добавляются из свойств объектов по указанным подстановочным шаблонам. Для каждого свойства объекта можно задать шаблон, состоящий из переменных %ENV% и разделителей. В одном шаблоне можно использовать разные разделители произвольного типа. Значение свойства раскладывается по переменным шаблона, если значение свойства пустое или не соответствует шаблону, то ни одна переменная из этого шаблона не создаётся.

Если задан конфигурационный параметр user, то по полученным переменным USR-NAME-FIRST и USR-NAME-SECOND дополнительно запрашиваются данные о пользователе. Помимо переменных из шаблонов, скрипт создаёт свои переменные. Если нет данных для формирования переменной, то переменная не создаётся. Если имя переменной оканчивается на -HIDE, то отображение значения такой переменной скрывается, заменяется на ***. При этом само значение переменной не затирается и может быть использовано в вызове действий.

Сетевой адаптер

  • NET-HOST - Зарегистрированное сетевое имя компьютера.

Пользователь

  • USR-NAME - Отображаемое имя пользователя.
  • USR-LOGIN - Часть логина в аккаунте пользователя.
  • USR-ACCOUNT-DN - Значение Distinguished Name пользователя в домене.
  • USR-SID - Идентификатор безопасности пользователя.
  • USR-COUNTRY - Название страны пользователя.
  • USR-COUNTRY-ID - Идентификатор страны пользователя.
  • USR-CITY - Название города пользователя.
  • USR-COMPANY - Название организации пользователя.
  • USR-DEPARTMENT - Название подразделения пользователя.
  • USR-POSITION - Название должности пользователя.
  • USR-EMAIL - Адрес электронной почты пользователя.
  • USR-MOBILE - Номер мобильного телефона пользователя.
  • USR-PHONE - Номер телефона пользователя.
  • USR-HOME - Полный путь к домашнему каталогу пользователя.
  • USR-INFO - Заметка о пользователе.

Другие переменные

  • TMP-CHECK - Время отклика компьютера на запрос проверки доступности.
  • TMP-INDEX - Порядковый номер компьютера в выборке (или элемента в списке).
  • TMP-KEY - Ключ элемента в списке.
  • TMP-VALUE - Значение элемента в списке.

Примеры использования

Вывести предложение для ввода поискового запроса, номера компьютера и выбора последующего действия. Поиск осуществлять в Active Directory в пределах Organizational Unit c guid {ABCD1234-111B-14DC-ABAC-4578F1145541}. Для отображаемой информации использовать оформление цветом, найденные компьютеры проверять на доступность и запрашивать информацию о пользователе. Что бы узнать guid контейнера в Active Directory можно воспользоваться программой Active Directory Explorer.

cscript env.search.min.js ldap://{0C9E6295-C543-40D1-BD6D-3F2BDF54F7A9} color repeat check user item=" %TMP-INDEX% | %TMP-CHECK% | %NET-HOST% | %USR-NAME% | %USR-MOBILE% | %USR-INFO% | %DEV-NAME%" unit=" %TMP-INDEX% | %TMP-KEY% | %TMP-VALUE%" \\ objectClass="Computer" cn,description,operatingSystemVersion="*%SEARCH%*|*%TRANSLIT%*" \\ description="%USR-NAME-THIRD% | %USR-NAME-FIRST% %USR-NAME-SECOND% | %DEV-NAME% | %PCB-BIOS-SERIAL% | %PCB-BIOS-RELEASE-DATE% | %NET-MAC% | %DEV-BENCHMARK% | %DEV-DESCRIPTION%" \\ Помощник="msra.exe /offerRA %NET-HOST%" Подключится="mstsc.exe /v:%NET-HOST%" Доступность="ping.exe %NET-HOST%" Разбудить="wolcmd.exe %NET-MAC% 192.168.0.255 255.255.255.0" Сведения="msinfo32.exe /computer %NET-HOST%" Управление="compmgmt.msc /computer=%NET-HOST%"

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

cscript env.search.min.js "C:\Inventory" color repeat item=" %TMP-INDEX% | %NET-HOST% | %USR-NAME% | %DEV-DESCRIPTION%" unit=" %TMP-INDEX% | %TMP-KEY% | %TMP-VALUE%" \\ USR-NAME,NET-HOST,DEV-NAME="*%SEARCH%*|*%TRANSLIT%*" \\ Помощник="msra.exe /offerRA %NET-HOST%" Подключится="mstsc.exe /v:%NET-HOST%" Доступность="ping.exe %NET-HOST%" Разбудить="wolcmd.exe %NET-MAC% 192.168.0.255 255.255.255.0" Сведения="msinfo32.exe /computer %NET-HOST%" Управление="compmgmt.msc /computer=%NET-HOST%"

Сохранить в файл список всех компьютеров расположенных в Active Directory в пределах Organizational Unit c guid {ABCD1234-111B-14DC-ABAC-4578F1145541}.

cscript /nologo search.min.js ldap://{ABCD1234-111B-14DC-ABAC-4578F1145541} search="" noalign \\ objectClass="Computer" > list.txt

Подключиться через TightVNC к первому найденному компьютеру по поисковому запросу Иванов. Поиск осуществлять в Active Directory в пределах Organizational Unit c guid {ABCD1234-111B-14DC-ABAC-4578F1145541}. Перед подключением на удалённом компьютере запустить службу с именем tvnserver, а после отключения остановить её.

wscript env.search.min.js ldap://{0C9E6295-C543-40D1-BD6D-3F2BDF54F7A9} service=tvnserver search="Иванов" index=1 action=TightVNC \\ objectClass="Computer" cn,description="*%SEARCH%*" \\ TightVNC="tvnviewer.exe -host=%NET-HOST%"

Создать и вывести удобное меню из указанных команд. Команды разделить на группы с помощью заголовков.

cscript env.search.min.js color nowait unit=" %TMP-INDEX% | %TMP-KEY% | %TMP-VALUE%" \\ Мониторинг "Мониторинг процессов=ProcMon64.exe" "Диспетчер процессов=ProcExp64.exe" "Диспетчер задач=TaskMgr.exe" Администрирование "Командная строка=cmd.exe /k $PowerShell -NoLogo" "Редактор реестра=RegEdit.exe" Управление "Планировщик заданий=TasksChd.msc /s" "Управление питанием=ShutDown.exe /i" "Управление компьютером=CompMgmt.msc"

About

JScript for searching for data for environment variables in Active Directory objects over the LDAP protocol or in a folder with ini files.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published