Сбор статистики с принт-сервера на Windows.


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

$date = get-date -format dd-MM-yyyy
$number = get-counter "\Очередь печати(_total)\Всего напечатано страниц" | Foreach-Object {$_.CounterSamples[0].CookedValue}
Convertto-html -title "Статистика печати" -PreContent "Количество распечатанных листов за $date : <b>$number</b>" >> C:\counter_print_pages.html

Всё, что он делает — это создает html файл в корне диска C:, в котором записывается информация из счетчика очереди печати со всех принтеров.

Чтобы этот скрипт выполнялся каждый день и заносил каждый раз новую информацию, нужно в «Планировщике задач» создать расписание, где в 23:59 будет выполняться данный выше кусок кода. Далее, чтобы статистика за день обнулилась, а также для того, чтобы на сервере печати очищались от заданий очереди на печать, в «Планировщик задач» добавить на выполнение в 0:00 еще один скрипт:

net stop "spooler"
del /S /Q c:\windows\system32\Spool\Printers\*
net start "spooler"

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

Настройка аудита запуска/остановки службы в Windows

Столкнулся с такой задачей: требовалось знать кто остановил критически важную службу на Windows-сервере. Как оказалось аудит этого события настраивается немного по-другому, в отличии, например, от файлового сервера. Что для этого требуется:

1) для начала скажу, что нельзя настроить аудит сразу всех служб — нужно выбрать конкретные службы для их аудита. Узнаем короткое имя службы, например, через команду PS get-service и в столбце «Name» оно будет отображено

2) в cmd выполняем команду sc sdshow [короткое имя службы]. Выведется строка примерно такого вида D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU). Скопируйте ее в блокнот и в конце добавьте строку S:(AU;SAFA;RPWPDT;;;WD). Буква «D» в начале строки означает начало списка доступа DACL, а буква «S» — список доступа SACL, который используется при логировании. Если выводимая строка в команде «sc sdshow» уже будет содержать SACL, то удаляем ее и добавляем ту, которая указана выше.

3) выполняем в cmd команду sc sdset [короткое имя службы][получившаяся новая строка]. После этого должна появиться строка [SC] SetServiceObjectSecurity: успех


4) командой auditpol /get /category:* проверяем какой аудит включен в системе. Нам необходимо, чтобы был включен аудит для подкатегорий «Другие события доступа к объекту» и «Работа с дескриптором». В английской Windows они соответственно называются «Other Object Access Events» и  «Handle Manipulation». Если аудит не настроен, то делаем это через групповые политики, если компьютер в домене или через команды auditpol /set /subcategory:"Другие события доступа к объекту" /success:enable /failure:disable и  auditpol /set /subcategory:"Работа с дескриптором" /success:enable /failure:disable, если компьютер не в домене.

5) фильтруем журнал безопасности Windows по коду события «4656» и можем видеть событие в журнале


Аудит настроен.

 

Поиск по реестру Windows через командную строку или powershell

Иногда очень нужно в скриптах выполнить поиск определенного ключа и например поменять его. Для того чтобы осуществить поиск в Windows есть команда reg query. Ее нужно запускать с определенными ключами. У меня эта команда обычно выглядит следующим образом:

reg query HKCU\Software\Microsoft /f "test" /s /d /e

HKCU\Software\Microsoft — ветка реестра, по которой осуществляется поиск; после ключа /f вписываем в кавычках шаблон для поиска; ключ /s осуществляет поиск по вложенным подразделам и их параметрам; ключ /d указываем на поиск только по данным, а не по названию ключей и наконец ключ /e, говорит, что надо возвращать только точные совпадения.

Отображение отсутствующих устройств в Windows

Часто при переносе виртуальных машин с одного хоста на другой в Windows сохраняются записи об устройствах, которые раньше использовались, а сейчас отсутствуют. Для того, чтобы полностью удалить такие записи (иногда это очень мешает, если это устройство – сетевая карта) надо открыть командную строку от имени администратора и написать там команду “set devmgr_show_nonpresent_devices=1” и далее из этой же командной строки запускаем диспетчер устройств – “start devmgmt.msc“. В появившемся диспетчере устройств выбираем меню “Вид” и нажимаем “Показать скрытые устройства”. Далее уже находим устройство, которое нам уже не нужно, и можно смело его удалять.

Зависания Fallout 3 на Windows 7 x64

Если у вас есть игра Fallout 3, Windows 7, а также многоядерный процессор, то будьте уверены, что игра будет у вас безбожно зависать в самых разных моментах игры. Для решения данной проблемы надо найти файл Fallout.ini в директории Мои документыMy GamesFallout3 и в нем в разделе [General] находим строчку bUseThreadedAI=0 и меняем ‘0’ на ‘1’. Кроме этого добавляем строчку iNumHWThreads=2 в этот же раздел и сохраняем файл. После этого игра будет идти как и у всех остальных счастливчиков.