Parus16.ru

Парус №16
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Собираем статистику печати пользователей

Собираем статистику печати пользователей

Журнал событий Windows — это средство, позволяющее программам и самой системе Windows регистрировать и хранить уведомления в одном месте. В журнале регистрируются все ошибки, информационные сообщения и предупреждения программ. Благодаря журналу событий, можно получить статистику использования печатающих устройств, определить наиболее активно используемые устройства, оценить нагрузку на них и принять своевременные решения по закупке расходных материалов, техническом обслуживании или даже замене на более экономичные и производительные. Особенно это актуально в небольших офисах, где не всегда используются сетевые принтеры и МФУ, поэтому получение такой статистики становится довольно сложной задачей. Решить её возможно без использования дополнительного ПО, используя встроенные средства управления журналами Windows и скриптом на PowerShell.

  • В организации есть домен Active Directory;
  • В организации используются компьютеры c операционной системой не ниже Windows 7, сервера – с ОС не ниже Windows Server 2008R2;
  • Существует необходимость централизовано обрабатывать журналы печати с принтеров и иметь статистику использования и нагрузки на печатающие устройства.

Скрипт получения данных с сервера печати находится в конец статьи.

Сценарий не получится запустить двойным кликом в проводнике. Это сделано специально для того, чтобы не нанести вред системе случайно запущенным скриптом. Помимо того, что существует ограничение по запуску сценариев, по умолчанию выполнение сценариев в системе запрещено, опять же, по описанной выше причине — не нанести вред системе. Для проверки текущей политики выполнения необходимо запустить PowerShell (нажать Windows + R, в этом окне набрать PowerShell) и ввести следующую команду: «Get-ExecutionPolicy» (без кавычек). С большой вероятностью, если это первый запуск, получим Restricted. Для выполнения и тестирования понизим политику до RemoteSigned («Разрешено выполнять созданные нами сценарии и скачанные сценарии, подписанные доверенным издателем»), командой «Set-ExecutionPolicy RemoteSigned» (без кавычек).

Чтобы скрипт выбирал информацию за определённый период и сохранял её в нужное место, необходимо его немного изменить «под себя». Для этого необходимо открыть PowerShell из следующего каталога: «C:WindowsSystem32WindowsPowerShellv1.0powershell.exe», открыть скрипт. В скрипте, необходимо указать параметры даты, в нашем случае, будем выводить информацию за предыдущий день (PreviousDay). Если стоит задача выводить информацию за предыдущий месяц, или определенный период, необходимо установить соответствующие параметры.

Установить место, куда будет сохранятся файл с информацией в формате csv.

После сохранения, скрипт можно применять по требованию, запуская в командной оболочке PowerShell, а можно назначить в качестве задания в Планировщике заданий.

Для этого необходимо:

1) Открыть Планировщик заданий ( Пуск – Администрирование – Планировщик заданий )

2) Выбрать пункт «Создать простую задачу. »

3) Ввести имя задачи, описание, выбрать интервал выполнения

4) Выбрать действие «запустить программу». В качестве программы выбрать «C:WindowsSystem32WindowsPowerShellv1.0powershell.exe», а в качестве аргумента – путь к скрипту

Если скрипт не запускается на исполнение, тогда нужно изменить расширение файла с «.ps1» на «bat», после этого установить его в качестве запуска «Программа или сценарий».

Читайте так же:
Все о компьютерной графике

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

Результатом работы скрипта, является файл в формате csv. Он сам по себе уже хранит информацию о напечатанных документах. Можно его открыть обычным блокнотом и посмотреть, кто что печатал. Но мы ведь хотим производить периодический анализ напечатанной информации. Поэтому сделаем это в конфигурации «Управление IT-отделом 8». Для этого потребуется обработка «Обработка для импорта в конфигурацию данных сервера печати» (входит в комплект дистрибутива конфигурации). После запуска обработки, необходимо выбрать файл и нажать на кнопку «Загрузить».

Результатом работы, является документ «Изменения показателей оборудования».

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

Обработка по загрузке настраивается и запускается автоматически, что позволит в купе с скриптом PowerShell без вмешательства загружать эти данные и анализировать их.

Файлы

НаименованиеДатаРазмер
Скрипт для сервера печати Windows, который достает данные по печати08.09.206.37 КБ Скачать

16.02.2017
Автор: Сайдаков Сергей
печать, Управление IT-отделом 8, статистика печати, сервер печати, Windows Server

У Вас есть сервер печати на сервере Windows? Нужна статистика использования и печати на принтерах и МФУ?&nb. 2017-02-16T00:00:00+03:00 2020-09-08T15:06:18+03:00 Собираем статистику печати пользователейСобираем статистику печати пользователей https://softonit.ru/articles/uit/obrabotka-pechati/

Для чего нужен сервер печати

Для аудита сервера печати можно использовать разные средства, как платные и бесплатные. Бесплатных, удовлетворяющих моим требованиям, я так и не нашёл. Мои требование просты: кто, когда, сколько и на каком принтере. Лишнего мне не надо. Но в любом случае, дополнительное программное обеспечение необходимо устанавливать на сервере, а в некоторых случаях и агенты на клиентские компьютеры. Как следствие — дополнительные процессы, и нагрузка. Именно по этому, я решил найти вариант штатными средствами.

Я никак не рашелся серьёзно занятся этим делом пока однажды на одном торренте (не скажу в каком разделе) был скачен журнал «Системный администратор. Июнь. 2012». Там и была статья посвящённая аудиту печати на Windows Server 2008 R2. Однако при выполнении начальных действий по статье не привели к результату. Я специально выделил R2. Т.к. в этой ОС логи печати включаются не так как описано в статье и собираются не в журнале SYSTEM. Однако, возможно автор писал статью с сервера без SP1. Т.к. у меня нет под рукой 2008 или 2008 R2 без SP1 — проверить не смогу. Но, спасибо автору — направление указал. Кому интересна статья вот ссылка.

Уже изначально я решил что буду записывать логи в базу даных, а потом красиво показывать через веб-интерфейс. У меня есть виртуальные машины на Debian (Cacti, Nagios) по этому ещё одна малюсенькая база данных там не помешает. Для записи из PowerShell в MySQL нам понадобится коннектор MySQL Connector Net . Но позже, я попробую реализовать тоже самое для MS SQL Express. Начнём по порядку. По умолчанию логи печати отключены. Для того, чтобы их включить необходимо раскрыть «Просмотр Журналов»:

В свойствах журнала Operational включается логирование почты. На рисунке у меня уже включено логирование. Так как данные будут записываться в базу данных mysql, то дополнительной настройки для журнала не потребуется. Но если вам нужно, в свойствах вы можете указать размер журнала, действия в случае достижения максимального размера. Так же, возможно, потребуется настройка принтера. Но для перед этим нужно несколько раз распечатать документ с количеством копий больше чем одна. Если в событии 805 при количестве копий больше чем одина, всё равно будет «1», то необходимо обновить драйвера принтера, а, если не поможет, отключить рендеринг на стороне клиента. К сожалению, для некоторых приложений может не помочь. У меня количество копий не работало для Word 2010, но при этом работало для Excel 2010 из тогоже дистрибутива.

Для статистики нам нужно событие с номером 307 и событие 805. Про 805 я узнал спустя почти год после написания данной статьи. Узнал случайно, когда на форуме Oszone спросили про аудит печати скриптом с MSDN. Оказалось, что параметр $Pages = $event.Event.UserData.DocumentPrinted.Param8 содержит количество страниц только для одной копии. А количество копий как раз можно узнать из лога 805. Логи из журнала обрабатываются с помощью PowerShell v3. С журнале СА рекомендуется использовать команду: get-eventlog. Однако, она умеет анализировать только Windows Logs и не работает напрямую с ID лога:

Для анализа других логов используется Get-WinEvent, который имеет ключ -ComputerName для подключения к удалённому компьютеру. Но я буду собирать логи с локального компьютера. Для начала назначим права для пользователя, который будет подключаться с сервера печати с IP адресом XXX.XXX.XXX.XXX. Пароль не должен содержать знак $ . Выполнить на сервере MySQL:

Разрешаем выполнение скриптов PS1 на сервере печати:

После этого создаём базу данных из PowerShell, где yyy.yyy.yyy.yyy IP адрес mysql сервера:

Далее, я приведу готовый скрипт для анализа логов и разберу его части. 9,458 заданий с 4-х принтеров за год были обработаны им за 7 минут на сервере c Intel E31230 3,2 GHz.

А теперь разбор скрипта. Некоторые поля я не смогу объяснить.
Add-Type -Path добавляет путь к библиотеке коннектора к MySQL. Необходим при старте каждой сессии. Путь зависит от версии коннетора. Будьте внимательны.
$connectionString = здесь определяем имя сервера с MySQL, пользователя и его пароль для подключения к базе. Базу тут же указываем.
$connection =
$connection.ConnectionString =
вот эти две строчки я не знаю для чего 🙂
$connection.Open() наверное открывает сессию.
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $connection
вот эти две строчки я не знаю для чего 🙂
$today = get-date -DisplayHint date -UFormat %d.%m.%y присваиваем переменной $today значение текущего дня. Другие даты нас не будут интересовать,так как скрипт запускается каждую ночь и прошлые данные уже в базе.
Get-WinEvent команда анализирует логи расположенные по определённому пути, начиная со времени текущего дня (если вам нужно загрузить все логи, то starttime=»$today»; можно убрать), только логи с ID 307 или ID 805 и передаёт вывод команде Foreach, которая будет работать циклически.
$Time, $Job, $Document — это та информация, которая нам нужна. Вы можете назвать эти переменные своими именами.
$event.Event.UserData.DocumentPrinted.Param6 эти все строчки опишет одна картинка:

$_.TimeCreated найдёте, если раскроете +System
$Time = Get-Date $_.TimeCreated -UFormat «%Y-%m-%d %H:%M:%S» меняем формат выводимого времени потому, что mysql не воспринимает формат выводимый $_.TimeCreated. Только если таблица имеет тип varchar. Но это не удобно при работе с php. К счастью, get-date работает не только с системным временем.
$sql.CommandText = выполнение команды MySQL
«INSERT INTO alllog (User,Printer,Port,Time,Document,Pages,Size,Job) VALUES (‘$User’,’$Printer’,’$Port’,’$Time’,’$Document’,’$Pages’,’$Size’,’$Job’)» команда для ввода (но не сам ввод) в таблицу alllog соотвествующих данных.
«UPDATE alllog set Copy=$Copy WHERE Time=’$Time'» команда для обновления базы. Записывает значение Copy (количество копий) в поле, у которого имеющееся время Time совпадает со временем из события 805 $Time. Вначале, я хотел делать соответствие с полем Job, но оказалось, что Job сбрасывается в ноль, после достижения значения 255. В этом случае, UPDATE перезаписал бы все значения, чьи задания имели одинаковое значение.
$sql.ExecuteNonQuery() выполняет предыдущую команду, т.е. вводит информацию в базу.
$connection.Close() закрывает сессию.

Далее простой скрипт на php. Позже будет более красивый. Этот просто выводит суммарную информацию:

Жирным я выделил строчку, которая и определяет выборку содержимого. Вся соль в ней, так как код таблицы можно легко найти в интернете. В приведённом коде выборка идёт за все периоды. А вот строчка, которая показывает за вчерашний день (т.к. за сегодняшний данные загрузятся ночью):

Если убрать значения strtotime(«now -1 day») , то получим данные за сегодняшний день. Всё готово. Помещаем этот скрипт на ваш веб-сервер и получаем простую информацию в вашем браузере о том кто, какой принтер и сколько. Скоро будет — когда 🙂 всё-таки я не программист php.

Блог did5.ru

printer thumb Удаление драйвера принтера в Windows 7Проблема совместимости старых устройств и новых операционных систем встречается очень часто. Приходится часами в интернете искать драйвера и пробовать их установить. Большая часть из них устанавливается некорректно, что приводит к сбоям в работе ОС и к вопросу – Как удалить драйвер принтера в Windows 7?

Как удалить драйвер принтера в Windows

Способ 1

1. Идем «Пуск –> Панель управления –> Устройства и принтеры»

2. Выделяем любой принтер, на панели инструментов выбираем «Свойства сервера печати»

del printer driver 1 thumb Удаление драйвера принтера в Windows 7

3. Откроется окно свойств сервера печати

del printer driver 2 thumb Удаление драйвера принтера в Windows 7

4. Переходим на вкладку «Драйверы», выбираем драйвер, который нужно удалить и жмем кнопку внизу –«Удалить»

del printer driver 3 thumb Удаление драйвера принтера в Windows 7

5. Выбираем, что хотим удалить

del printer driver 4 thumb Удаление драйвера принтера в Windows 7

6. Перезагружаем ПК

Простой способ сразу перейти в «Свойства сервера печати»:

del printer driver 7 thumb Удаление драйвера принтера в Windows 7
Второй способ

del printer driver 6 thumb Удаление драйвера принтера в Windows 7

Далее в консоли «Управление печатью –> Все драйверы»

del printer driver 5 thumb Удаление драйвера принтера в Windows 7

Выбираем драйвер и через контекстное меню его удаляем, перезагружаем ПК.

Заключение

Вот таким нехитрым способом мы удалили из системы ненужный или проблемный драйвер принтера. Если не помогло, то нужно искать и удалять остатки драйвера в папке Program Files и в реестре, почистить  папку с драйверами «%windir%system32spooldrivers»

Нашли опечатку в тексте? Пожалуйста, выделите ее и нажмите Ctrl+Enter! Спасибо!

Подключение старого принтера к Windows 10 при помощи Google Cloud Print

Есть в нашей семье старый лазерный принтер «Canon LBP-1120», который когда-то был отправлен на «пенсию» в гараж. Рабочий принтер с состоянием «почти новый» в силу того, что им мало пользовались. Вместо него юзаем наипростейший струйный МФУ «Canon MG2400». Он печатает в цвете, сканирует, копирует и самое главное без проблем заправляется. Конечно проигрывает в скорости печати, но для домашних нужд вполне себе удовлетворяет.

И вот появилась задача распечатать много и быстро, причем в ч/б. Струйный МФУ в этом деле естественно не помощник. Сходил в гараж за нашим «героем» и подключил к его своему ноутбуку, на котором уже очень и очень давно обитает «Windows 10». И конечно же наш «герой» не определился системой, драйверов нет, определился только USB интерфейс. И то хорошо.

Полез на сайт «Canon» за драйвером, а там – «К сожалению, ваше устройство больше не поддерживается в выбранной операционной системе. Просмотрите наш текущий ассортимент доступных устройств». В общем то я не удивился, принтер старый, а корпорациям надо зарабатывать на новых устройствах. Зачем поддерживать старое устройство? И такая ситуация почти со всеми старыми принтерами.

К слову сказать, если по работе такие принтеры попадаются, то вердикт устанавливает сразу – «На списание!». А тут ситуация как-бы не рабочая, да и карантин тоже имеет место быть. К тому же, покупать новый принтер, чтобы распечатать один раз полтыщи страниц – не резон.

Ищем альтернативные способы подключения.

Что можно сделать:

1. Попробовать найти в Интернете альтернативный драйвер. Альтернативного драйвера на мой принтер нет, я не нашел, может плохо искал). Многие ссылки с якобы «подходящим» драйвером ведут к откровенно подозрительным сайтам, поэтому не советую. Были советы использовать универсальный драйвер «HP». Не помогло.

2. Установить на виртуальной машине 32-битную «Windows 7», установить на него принтер, расшарить его и подключиться к ней из «Windows 10». Вроде здравая мысль. НО НЕ РАБОТАЕТ! Для «Windows 10» всё равно нужны драйвера принтера, которые уже не поддерживаются.

3. Установить на виртуальной машине 32-битную «Windows 7», установить на него принтер и установить на нем какой-нибудь виртуальный принтер, роутер принтеров или принт-сервер, который бы перенаправлял задание печати на наш принтер. Тоже вроде здравая идея. Часть программ условно-бесплатные, часть платные – они нам не подходят. А те что бесплатные вроде как работают, но в среде опять же «Windows 7» или возможно ниже. Задания печати из «Windows 10» просто игнорируют. Задание в «Диспетчере печати» появляется, но на печать не идет. Разбираться глубже не стал и отмел этот вариант. Возможно я ленивый и у меня кривые руки)

4. 100% рабочий вариант без танцев с бубном! Великий и могучий «Google»! А точнее «Google Cloud Print». Способ пришел как говорится – «Он сам пришел!».

Просто надо установить на гостевую ОС «Windows 7» браузер «Google Chrome», благо он еще оказывается поддерживается на 32-битных «Windows 7».

Далее надо авторизоваться в «Chrome» на гостевой ОС под своим Google-аккаунтом и открыть страницу https://www.google.com/cloudprint

На странице облачного принтера надо кликнуть на ссылку «Добавить обычный принтер» и следуя инструкции добавить наш старый принтер в облако.

Затем надо установить на наш родной «Windows 10» драйвер «облачного принтера Google» по ссылке https://tools.google.com/dlpage/cloudprintdriver

Всё как обычно – скачать, установить и всё! В списке принтеров у нас появляется «Виртуальный принтер Google».

И да, надо быть авторизованным под одним и тем же аккаунтом на родной и гостевой ОС в «Chrome».

Всё как обычно, для печати выбираем принтер «Виртуальный принтер Google» и нажимаем на «Печать». Нас перенаправит на страницу нашего виртуального принтера. Там выбираем принтер, который добавили до этого в нашей гостевой ОС и опять нажимаем на «Печать». Ждем… Моя первая страница распечаталась через секунды, эдак за 50, уже было подумал, что ничего не получилось. Но потом печать шла уже быстрее, через секунды 20-30))).

Но! Печатает! Работает! Бесплатно!

Можно было бы написать короче) Или наоборот поподробней?

Это не подробная инструкция как сделать, а просто описание способа «как можно сделать». Ведь в ИТ-кухне все изменчиво. Сегодня так, а завтра уже не так!

Как говорил гуру кулинарной кухни Илья Лазерсон – «Только принципы!». А принципы практически не изменяются.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector