- Microsoft windows printservice operational
- Описание проблемы
- Поиск событий по удалению принтера
- PrintService
- Учет печати
- Microsoft windows printservice operational
- Вопрос
- Ответы
- Все ответы
- question
- How to «Microsoft-Windows-PrintService/Operational» from GPO?
- 1 Answer
- Централизованный сбор и обработка журналов печати Windows
- Подготовка инфраструктуры
- Создание подписки на события
- Скрипт обработки собранных событий
- Решение проблем
- Что можно улучшить
Microsoft windows printservice operational
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете Pyatilistnik.org. В прошлый раз мы с вами разбирали примеры использования утилиты Robocopy на файловом сервере. Двигаемся дальше и сегодня я хочу вас научить, находить информацию на сервере печати относительно того, кто именно удалил сетевой принтер или локальный, думаю, что такой аудит должен у вас быть.
Описание проблемы
Есть настроенный сервер печати, есть опубликованные принтеры в Active Directory. В какой-то момент на вторую линию поступают заявки, что один из принтеров не доступен и печать на нем невозможно. Сотрудник второй линии открыв консоль «Управление печатью» обнаружил, что данного принтера теперь нет на сервере среди доступных. Выяснить куда он делся не удалось, в результате чего коллеги обратились уже к нам на третью линию. Ниже я вам покажу, как аудировать такие вещи.
Поиск событий по удалению принтера
В своем примере я вам покажу, какие события вас смогут заинтересовать, чтобы вы их потом могли мониторить, например в Zabbix или netwrix. Первое, что вы должны сделать, это посмотреть логи Windows, а именно определенный журнал.
Перейдите по такому пути:
Искать события мы будем в журнале PrintService/Работает, убедитесь, что он у вас включен, через правый клик, если он был выключен, то событие удаления предыдущего принтера вы не увидите, только новые.
Быстро проверить включено ли ведение данного журнала или нет можно с помощью PowerShell. Запустите PowerShell оболочку и введите команду:
В статусе IsEnabled должно быть значение True.
так же вы можете сразу в PowerShell включить ведение данного журнала, единственное оболочка должна быть запущена в режиме администратора, введите код:
теперь вам необходимо отыскать два события с номерами ID 301 и ID 302, советую вам воспользоваться фильтрацией. В области «Действия» выберите пункт «Фильтр текущего журнала«. В открывшемся окне введите пул поиска 301-302.
В результате я получил список из нужных событий, теперь давайте посмотрим каждое из них.
Видно имя принтера или его GUID, видно имя пользователя кто совершил это действие. Вот пример на сервере с английской локализацией:
Вот пример события ID 302:
или его англоязычный аналог
Очень удобно каждый день делать автоматические отчеты, которые бы содержали в себе выборку по данным событиям, вот пример реализации:
$EventLog | sort-object -property UserName,TimeCreated | where <$_.ID -ne "301" -or "302">| where <$_.timecreated -ge $yesterday>| ConvertTo-Html -head $a -body «
PrintService
На выходе вы поймете вот такой отчет
Можете повесить такой скрипт в планировщик заданий и выполнять его каждый день, не забываем, что по необходимости вы можете сконвертировать скрипт ps1 в exe, и так же его использовать.
Еще в журнале Microsoft-Windows-PrintService/Operational я советую поискать события ID 334, если у вас есть принтеры опубликованные в Active Directory и они были удалены. Вот пример вот такого события:
Учет печати
Всем доброго дня!
Есть Windows 2012R2 + сетевой принтер
На сервере настроен доступ к принтеру;
Встал вопрос учет печати документов, были проведены следующие мероприятия:
— со всех компьютер удален драйвер и прямая печать на сетевой принтер;
— в УГП настроена печать на сетевой принтер;
— настроен журнал «%SystemRoot%\System32\Winevt\Logs\Microsoft-Windows-PrintService%4Operational.evtx» — туда падают все данные по печати;
Теперь встал вопрос в экспорте этих событий в какой-то файл, с дальнейшей обработкой.
Есть ли работающие решения для экспорта этих событий?
За ранее спасибо.
Учет средств измерения (учет приборов для метрологов)
Доброго всем времени суток. Столкнулся с такой проблемой как учет средств измерения (приборы.
Контроль печати: время печати, количество распечатанных страниц, название файла
Здравствуйте. К компьютеру на Windows XP подключено 2 принтера (хотя драйверов стоит на 4.
Обрезание текста и отключение границ при печати(ошибка во время печати)
Есть несколько excel документов с заголовками и таблицей. Есть 2 проблемы, при переходе в режим.
Как при печати отчета программно установить параметры печати?
как при печати отчета ( VBA ) программно установить параметры печати ( ширину полей )
Microsoft windows printservice operational
Вопрос
Ответы
Добрый день. Сейчас я использую не dumpel.exe а powershell: get-winevent
а затем складываю их в базу данных mysql
и как я понял, место положение логов печати у vista и 7 различаются.
- Помечено в качестве ответа Anahaym Moderator 26 июля 2012 г. 12:58
- Изменено Anahaym Moderator 26 июля 2012 г. 12:59
Все ответы
включил без реестра, проверил, работает
Diagnostics -> Event Viewer -> Applications and Service Logs -> Microsoft -> Windows -> Print Service -> Operational ->прав. клик. -> Enable log
Keep Printer Jobs in the Printer Status Window
1 Click «Start» «Control Panel»—>»Devices and Printers» and double-click on your printer. This will bring up the status window for your printer. This box stores print jobs while they are in progress, and usually pops up whenever you print anything.
2 Click «Printer»—>»Properties»—>»Advanced» and check the box next to «Keep Printed Documents.»
3 Open the box after printing, and the list of printed documents will be available.
Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется «как есть» без каких-либо гарантий
question
How to «Microsoft-Windows-PrintService/Operational» from GPO?
I’d like to know if we can enable printservice for domain PC from GPO. I have tried googling but seemed not seeing any good post at all.
Have you checked if the answer helps?
If the Answer is helpful, please click «Accept Answer» and upvote it. Thanks.
1 Answer
I have done a lab test and found you can use below GPO settings to enable the log.
On DC, open the local Registry Editor, navigate to HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog
Create a new Key named «Microsoft-Windows-PrintService/Operational»
Open Group Policy Management, navigate to Computer Configuration>Preferences>Windows Settings>Registry
Create a new Registry Wizard, select Local computer and Next
Select the Key we juest created «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Microsoft-Windows-PrintService/Operational» and Finish
Restart your client PC or run «gpupdate /force» to apply the group policy.
If the Answer is helpful, please click «Accept Answer» and upvote it. Thanks.
Централизованный сбор и обработка журналов печати Windows
В небольших офисах далеко не всегда используются сетевые принтеры и МФУ, поэтому получить статистику использования печатающих устройств получить достаточно сложно. Тем более, если это требуется произвести с минимальными затратами. Такие данные смогут помочь определить наиболее активно используемые устройства, оценить нагрузку на них и принять своевременные решения по закупке расходных материалов, техническом обслуживании или даже замене на более экономичные и производительные. Данную задачу возможно решить без дополнительного ПО используя встроенные средства управления журналами Windows и скриптом на Powershell.
Используя поисковые системы можно найти готовые программные продукты для аудита печати в офисе, например:
- www.papercut.com/products/free_software/print_logger
- www.printaudit.com/print-audit-6.asp
Такие системы далеко не всегда подходят, так как они требуют покупки, бесплатные версии имеют ограниченную функциональность, необходима установка как центрального ПО на сервер, так и агентов на клиентские компьютеры, некоторые программы работают только с принт-сервером и так далее. Предлагаю использовать для решения задачи встроенные средства операционной системы Windows 7/2008R2 и скрипты на Powershell.
Итак, примем за исходные данные следующую информацию:
- В организации есть домен Active Directory
- В организации используются компьютеры c операционной системой не ниже Windows 7, сервера – с ОС не ниже Windows Server 2008R2
- Есть как сетевые, так и локальные принтеры и МФУ.
- Существует необходимость централизовано обрабатывать журналы печати с принтеров и иметь статистику использования и нагрузки на печатающие устройства.
Подготовка инфраструктуры
Первым делом необходимо подготовить инфраструктуру для централизованного сбора журналов событий с клиентских компьютеров.
Для работы подписки на события Windows на компьютере-источнике необходимы следующие настройки:
- Наличие пользователя в группе Читатели журнала событий (Event Log Readers), от имени которого будет читаться журнал
- Доступ по удаленному управлению (Windows Remote Management с сервера-коллектора
- Настроенное разрешение на пересылку событий на сервер-коллектор логов.
- Включенный журнал событий печати (выключен по умолчанию)
Создаем в оснастке Пользователи и Компьютеры нового пользователя, в качестве полного имени и логина указываем EventCollectorUser. Назначаем сложный пароль и ставим галочки «Запретить смену пароля пользователем» и «Срок действия пароля неограничен».
Далее создаем на контроллер домена новую групповую политику и называем ее, например, GPO-EventCollector.
В политике задаем следующие параметры:
- В разделе «Конфигурация компьютера — Настройка — Параметры панели управления — Службы» создаем запись службы «Автозагрузка: Автоматически (отложенный запуск)», «Имя службы — Служба удаленного управления Windows (MS-Management) (WinRM)», «Действие службы: Запуск службы»
- В разделе «Конфигурация компьютера — Политики — Административные шаблоны — Компоненты Windows — Удаленное управление Windows — Служба удаленного управления Windows» задать параметр «Разрешить автоматическую настройку прослушивателей: Включить» и разделе параметра «Фильтр IPv4″ поставить значение «*».
- В разделе «Конфигурация компьютера – Политики – Конфигурация Windows – Параметры безопасности – Брандмауэр Windows в режиме повышенной безопасности – Брандмауэр Windows в режиме повышенной безопасности – Правила для входящих подключений» создаем новое правило. Выбираем пункт «Предопределенные правила» и в списке выбираем «Удаленное управление Windows (HTTP — входящий трафик)»
- В разделе «Конфигурация компьютера — Политики — Административные шаблоны — Компоненты Windows — Пересылка событий» задать параметр «Настроить конечный диспетчер подписки» и в разделе параметра «SubscriptionManagers» вписать полный FQDN путь до сервера–коллектора.
- В разделе «Конфигурация компьютера – Политики – Конфигурация Windows – Параметры безопасности – Группы с ограниченным доступом» добавляем новую группу «Читатели журнала событий». В члены группы добавляем созданного нами пользователя EventCollectorUser.
После создания групповой политики необходимо перезагрузить целевые компьютеры или выполнить на них команду gpupdate /force.
Включить журнал печати на целевом компьютере можно через оснастку MMC «Просмотр событий» по пути «Журналы приложений и служб – Microsoft – Windows – PrintService – Работает» (кликнуть правой кнопкой мыши на журнале и выбрать «включить»). Этот вариант подходит, если компьютеров не так много.
В случае, если требуется включить журнал на большой группе ПК, то можно воспользоваться следующим способом:
- Подготовить текстовый файл со списком имен компьютеров. Например, d:\temp\computers.txt
- Запустить следующую команду от имени пользователя с правами администратора домена:
For /F %i in (d:\temp\computers.txt) do wevtutil sl Microsoft-Windows-PrintService/Operational /e:true /r:%i
Update: Также, как верно заметил NeSvist, можно установить ключ реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-PrintService/Operational — Enabled равным 1.
Данный параметр можно раздать в групповой политике, которую мы создали выше.
Для справки: О работе с реестром в GPO
Создание подписки на события
Скрипт обработки собранных событий
Собранные события можно выгрузить в формате CSV средствами оснастки «Просмотр событий», но полученные данные будут не очень информативны и не позволят на их основе получить интересную статистику, которую можно показать руководству. Поэтому я предлагаю вариант обработки полученных событий средствами Powershell для удобства их дальнейшего использования.
Поиском на просторах Интернета был найден скрипт анализа журналов печати для Windows Server 2003. (http://trevorsullivan.net/2009/11/06/windows-2003-print-log-parsing-script-powershell/) Так как есть определенные различия в командлетах Powershell новых версий, и способ получения событий отличается от предложенного в статье, то скрипт был мной переработан.
Общую структуру скрипта я менять не стал, он разбит по функциям, которые легко модифицировать (в случае локализации, например). Логика работы скрипта следующая:
- Получаем список событий из журнала
- Парсим свойство Message каждого события и записываем поля в объект PrintJob
- Сохраняем полученный список объектов в формате CSV
Получаем список событий из журнала «Перенаправленные события» по коду 307 (на случай, если в указанный журнал пересылаются еще какие-либо события).
Создаем новый объект PrintJob. Добавляем в него требуемые поля.
Основная функция. Получаем список событий и в цикле превращаем его в объект PrintJob. Потом делаем экспорт полученного списка объектов в указанный файл. Ставим кодировку UTF8 для корректного отображения кириллицы и разделитель «;» для читаемого открытия файла в Excel. Каждые 100 событий пишем лог, это удобно при отладке.
При подготовке регулярных выражений для скрипта использовался сайт Regex101.com. Сайт понятный, с краткой документацией, подсветкой результата поиска в исходной строке, расшифровкой смысла регулярного выражения на лету. Очень информативно и удобно, рекомендуется к употреблению.
Полученный скрипт можно применять по требованию, запуская в командной оболочке PowerShell, а можно назначить в качестве задания в Планировщике заданий.
Для этого необходимо:
- Открыть Планировщик заданий (Пуск – Администрирование – Планировщик заданий)
- Выбрать пункт «Создать простую задачу…»
- Ввести имя задачи, описание, выбрать интервал выполнения
- Выбрать действие «запустить программу». В качестве программы выбрать «C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe», а в качестве аргумента – путь к скрипту.
- Открыть свойства задачи и выставить переключатель «Выполнять вне зависимости от регистрации пользователя», выбрать пользователя, от имени которого должна выполняться задача и ввести пароль от него.
Таким образом, в указанном при создании скрипта каталоге будет с заданным интервалом обновляться файл со списков напечатанных документов.
Решение проблем
Невозможно загрузить файл D:\PrintReports\PrintInfo.ps1, так как выполнение сценариев отключено в этой системе. Для получения дополнительных
сведений см. about_Execution_Policies по адресу go.microsoft.com/fwlink/?LinkID=135170.
+ CategoryInfo: Ошибка безопасности: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId: UnauthorizedAccess
Что можно улучшить
Предложенный скрипт обработки не является универсальным решением и может быть улучшен в различных направлениях, например,
- Выборка событий по времени (за день, неделю, месяц) и запись их в соответствующие отдельные листы электронной таблицы или выходные CSV-файлы. Можно предусмотреть задание диапазона дат при помощи входных параметров скрипта.
- Добавление графического представления данных с использованием сводных таблиц по пользователям и печатающим устройствам и графиков. Такой отчет можно сразу класть на стол руководителю.
- Настроить архивирование и ротацию журнала «Перенаправленные события», добавить функцию анализа соответствующих архивных файлов. Это будет разумно при работе с достаточно большим числом компьютеров (более 50).
Итак, в этой статье я постарался показать принцип централизованного сбора событий с журналов Windows и их дальнейшей обработки средствами Powershell. Данный способ подходит для решения задачи в небольших организациях. Разумеется, специализированное программное обеспечение справляется с поставленными целями более эффективно, но оно дорого, более громоздко, его установка приносит IT-специалисту меньше новых знаний и навыков, понимания работы обслуживаемого им программного обеспечения.
Update: Как заметили NeSvist и selenite, привязка к конкретной локализации и разбор ее регулярными выражениями — не самое эффективное решение. В связи с этим, привожу вариант обработки собранных событий с использованием их представления в XML. Решение получилось более аккуратным и понятным.