Отправка отчета по локальным файлам на почту пользователей домена.

В продолжении поста “Поиск файлов на Autoit”

Условия задачи:
1. Есть файлы вида C:\MSBRO\Files_on_Computers\report\%computername%-%username%.txt
2. В файлах содержится информация о найденных файлах на компьютерах пользователей.
3. Данные файлы не должны храниться локально на компьютерах пользователей.
4. Требуется оповестить пользователей об этом путем отправки письма.
5. Всем пользователям отправлять письма не нужно, только определенным персонам в организации.

Итак, начнем…

После некоторых мучений с попытками составить список отправки было принято решение предварительно прогнать список файлов через скрипт и результат вывести в CSV. Потом уже откорректировать CSV и отправлять через него.

Для наших целей потребуется два скрипта и три действия.
1. Первый создаст CSV файл.
2. Откорректируем CSV
3. Отправим отчет пользователям.

Файлы генерируется этой программой “Поиск файлов на Autoit”
в папке C:\MSBRO\Files_on_Computers\report. Папка “report” открыта как сетевой ресурс и спустя NN перезагрузок компьютеров пользователей оказывается заполнена файлами в таком формате:

В файлах содержится информация о найденных файлах на компьютерах пользователей.

Нам нужно взять содержимое папки C:\MSBRO\Files_on_Computers\report и вывести в CSV
Сделаем это скриптом на PorerShell msbro-generate-csv.ps1:

В результате отработки скрипта получается файл C:\MSBRO\Files_on_Computers\msbro-report.csv примерно такого содержания:

Как видите структура CSV простая. Нас прежде всего интересует поле “FullName” и “BaseName”. Поле “BaseName” можно парсить простым методом и определить имя пользователя в домене так как после второго разделителя “-” стоит имя пользователя домена. А поле “FullName” можно взять в качестве пути до отправляемого файла. Кому не нужно отправлять файлы – мы просто удаляем ненужные строки из нашего CSV фала.

Теперь уже можно начать отправлять файлы.
Проще всего это можно сделать PowerShell скриптом.
Я запускал его на сервере терминалов (Windows 2012R2 Eng) который используется как сервер консолей администрирования в домене. На этом сервере установлены консоли администрирования AD (иначе команда Import-Module activedirectory не отработает). Если лень мучиться установкой консолей – можно запустить на контроллере домена. Я не проверял, но думаю при наличии установленного PowerShell должно работать на любой версии Windows.

Сам скрипт msbro-send-report.ps1 (замените mydomain.ru на ваши значения):

Собственно все.
Если, к примеру, был фалик C:\MSBRO\Files_on_Computers\report\COMPUTER56-PC-ivanov.txt
то скрипт определив поле e-mail для пользователя ‘ivanov’ отправит на этот e-mail письмо.

Вроде все.
Удачи!

 

Скрипты можно взять тут:  Files_on_Computers