Skip to content

Lifailon/ITInvent-SQL-Alert

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 

Repository files navigation

ITInvent-SQL-Alert - реализация оповещений о истечении срока действия лицензий.

Для программы ITInvent, которая использует СУБД MS SQL.

Описание некоторых таблиц:
BRANCHES - Филиалы;
VENDORS - Общие - Производители;
CI_TYPES - Оборудование - Типы;
CI_MODELS - Оборудование - Модели;
OWNERS - Общие - Сотрудники;
USERS - Общие - Пользователи (учетные записи);
CI_HISTORY - история изменений в карточках (CH_USER, CH_DATE, CH_COMMENT, SERIAL_NO_OLD, SERIAL_NO_NEW, INV_NO_OLD, INV_NO_NEW).

Таблица, которая нас интересует - ITEMS. Содержимое столбцов:
DESCR - Описание карточки;
ADDINFO - Примечание (вкладка Дополнительно);
SERIAL_NO - Серийный номер;
INV_NO - Инвентарный номер;
LICENCE_DATE - Лицензия До;
LICENCE_NO - Порядковый номер лицензии;
LICENCE_MAX - Общее количество лицензий;
CREATE_DATE - дата создания (первая дата изменения в истории, т.е. добавления);
CH_DATE - Дата Изменения (вкладка История);
CH_USER - Изменил (вкладка История, имя пользователя);
PRODUCT_KEY - Ключ продукта/Рег. имя;
ACTIVATION_CODE - Код активации.

Зависимые столбцы:
CI_TYPE - Номер 2, означает тип "Программы";
TYPE_NO - Название. Значение (39), которое ссылается на значене столбца TYPE_NAME (Adobe) в таблице CI_TYPES по такому же номеру стобца TYPE_NO (39) и фильтрует по номеру столбца CI_TYPE (2);
MODEL_NO - Версия. Значение, которое ссылается на значене столбца MODEL_NAME в таблице CI_MODELS по такому же номеру стобца MODEL_NO и TYPE_NO.

1. Получение данных.

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

Отфильтровать таблицу TYPE_NO по номеру типа "Программы" (CI_TYPE), т.к. номера для тругих типов (оборудование, комплектующие и т.п.) повторяются и соот-но пересекаются: SELECT TYPE_NO,TYPE_NAME FROM ITINVENT.dbo.CI_TYPES where CI_TYPE like '2'

Отфильтровать таблицу CI_MODELS: SELECT MODEL_NO,MODEL_NAME FROM ITINVENT.dbo.CI_MODELS where CI_TYPE like '2'

Отфильтрвоать таблицу ITEMS, где отсутствует пустые значения в стобце LICENCE_DATE: SELECT LICENCE_DATE,ADDINFO,DESCR FROM ITINVENT.dbo.ITEMS where LICENCE_DATE IS NOT NULL

2. Постобработка в powershell.

Выбираем модуль, я использую System.Data.SqlClient, который присутствует в классе .NET (не требует установки). Так же выбираем метод аутентификации, по умолчанию подключение к БД будет происходить из под доменной учетной записи, от которой запущен powershell (с применением Integrated Security=True), или, можно указать учетную запись в самом скрипте. Забираем две таблицы: $db_type и $db_model, при формировании итоговой таблицы ITEMS (переменная $db_date) удаляем время и подставляем значения из первых двух, заменив содержимое значений с помощью select.

Данные в ITInvent (которые используются в текущем примере):

Image alt

ITInvent-SQL-Alert-Table.ps1 - вывести полученные данные в Out-GridView:

Image alt

3. Настройка оповещений.

За основу беру метод оповещений из Excel. Проверяется четыре триггерных значения: 30, 14, 7 и 3 дня (дата, на момент проверки: 17.01.2023).

3.1. Отправка в Telgeram:

ITInvent-SQL-Alert-Telegram.ps1

Если срок действия уже просрочен (дата имеет отрицательное значение), то отправка оповещений будет производиться ежедневно.

Image alt

3.2. Вывод в консоль (для предварительной проверки триггерных значений):

ITInvent-SQL-Alert-Console.ps1.

Image alt

3.3. Отправка на почту:

ITInvent-SQL-Alert-Telegram.ps1

Image alt

Releases

No releases published

Packages

No packages published