https://github.com/lifailon/itinvent-sql-alert
Add-on for license end alert
https://github.com/lifailon/itinvent-sql-alert
alert itinvent mssql powershell
Last synced: 2 months ago
JSON representation
Add-on for license end alert
- Host: GitHub
- URL: https://github.com/lifailon/itinvent-sql-alert
- Owner: Lifailon
- Created: 2023-01-16T17:58:47.000Z (over 3 years ago)
- Default Branch: rsa
- Last Pushed: 2023-01-31T09:31:19.000Z (over 3 years ago)
- Last Synced: 2025-10-20T05:38:23.316Z (8 months ago)
- Topics: alert, itinvent, mssql, powershell
- Language: PowerShell
- Homepage:
- Size: 771 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## 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 (которые используются в текущем примере):

[ITInvent-SQL-Alert-Table.ps1](https://github.com/Lifailon/ITInvent-SQL-Alert/blob/rsa/Scripts-Public/ITInvent-SQL-Alert-Table.ps1) - вывести полученные данные в Out-GridView:

### 3. Настройка оповещений.
За основу беру [метод оповещений из Excel](https://github.com/Lifailon/Excel-Date-Report). Проверяется четыре триггерных значения: 30, 14, 7 и 3 дня (дата, на момент проверки: 17.01.2023).
#### 3.1. Отправка в Telgeram:
[ITInvent-SQL-Alert-Telegram.ps1](https://github.com/Lifailon/ITInvent-SQL-Alert/blob/rsa/Scripts-Public/ITInvent-SQL-Alert-Telegram.ps1)
> Если срок действия уже просрочен (дата имеет отрицательное значение), то отправка оповещений будет производиться ежедневно.

#### 3.2. Вывод в консоль (для предварительной проверки триггерных значений):
[ITInvent-SQL-Alert-Console.ps1](https://github.com/Lifailon/ITInvent-SQL-Alert/blob/rsa/Scripts-Public/ITInvent-SQL-Alert-Console.ps1).

#### 3.3. Отправка на почту:
[ITInvent-SQL-Alert-Telegram.ps1](https://github.com/Lifailon/ITInvent-SQL-Alert/blob/rsa/Scripts-Public/ITInvent-SQL-Alert-Mail.ps1)
