Сбор статистики с принт-сервера на 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» и можем видеть событие в журнале


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

 

Изменения Storage Replica в Windows Server 2019

В Windows Server 2019 Build 17650 стали доступны улучшения в работе Storage Replica:
1) Storage Replica теперь доступна в редакции Standard, но с ограничениями:
— можно реплицировать только один том (в Datacenter редакции ограничений нет)
— том можно реплицировать только одному партнеру (в Datacenter можно создавать неограниченное число партнеров по репликации)
— том, который подвергается репликации, должен быть размером не более 2 Tb (в старшей редакции такого ограничения нет)
2) В Storage Replica теперь доступен режим «Test Failover». При его включении на партнере по репликации становится доступным на запись реплицированный том. В этот момент  репликация прекращается до момента, пока мы не выйдем из режима «Test-Failover». Все изменения на временно подключенном томе сохраняются, но как только прекращается «Test-Failover», изменения откатываются на время последнего снапшота на сервере-источнике.

Изменения в настройке папки-свидетеля в Windows Server 2019

Начиная с Windows Server 2019 общую папку-свидетель (File Share Witness) для работы кластера больше нельзя создать на DFS ресурсе. При попытке создать такого свидетеля появится сообщение об ошибке:

То же самое будет, если создавать папку через Powershell:
Set-ClusterQuorum : There was an error configuring the file share witness ‘\\contoso.com\dfs-share’.
Unable to save property changes for ‘File Share Witness’.
The request is not supported

Эта конфигурация не поддерживалась и раньше, но мастер создания не выдавал какой-либо ошибки и многие делали неправильные конфигурации кластера.

Хорошая новость:  теперь папку-свидетель можно создать на компьютере, не включенном в домен. Теперь можно подключить папку-свидетель так:

Set-ClusterQuorum -FileShareWitness \\SERVER\SHARE -Credential $(Get-Credential)
и ввести после этого локальную учетную запись — это сработает!

Настройка браузера по-умолчанию для образа Windows 10

Мне на работе недавно пришлось настраивать образ Windows 10, чтобы потом его можно было развернуть на компьютерах в автоматическом режиме. Поэтому поводу ранее была статья. В ней настройка производилась через Deployment Workbench. К сожалению эта программа не позволяет легко настроить образ Windows 10 так, чтобы браузером по умолчанию для всех пользователей был Internet Explorer или какой-либо другой на ваше усмотрение. В данный момент в Windows 10 Pro браузером по умолчанию является Microsoft Edge, что не всегда удобно для корпоративной среды. Что же нужно сделать, чтобы при развертывании образа, назначался автоматически другой браузер?

Для начала нам нужен дистрибутив Windows 10. Те, кто разворачивал образ через Deployment Workbench, скорее всего найдут его в папке С:\DeploymentShare\Operating Systems\. У меня, например, там есть папка «Windows 10 Pro x64». В папках системой заходим в «sources» и удостоверяемся что образ установки «install.wim» у нас на месте. Далее по шагам:

  1. открываем командную строку от имени Администратора и переходим в нужную нам директорию «sources»
    cd "D:\DeploymentShare\Operating Systems\Windows 10 Pro x64\sources"
  2. командой Dism /get-wiminfo /wimFile:install.wim узнаем индексы систем вложенных в дистрибутив. В моем случае мне нужно настроить Windows 10 Pro и мой индекс оказался равен 3.
  3. создаем директорию, куда будем монтировать wim-образ
    mkdir C:\WIM\
  4. командой Dism /Mount-Image /ImageFile:install.wim /index:3 /MountDir:C:\WIM\ производим монтирование образа, не забываем правильно указать индекс системы
  5. командой Dism /Image:C:\WIM\ /Export-DefaultAppAssociations:C:\AppAssociations.xml выполняем экспорт файловых ассоциаций
  6. открываем в текстовом редакторе файл AppAssociations.xml и меняем настройки по свои нужды, у меня он, например, выглядит так (взято из просторов сети):
    <?xml version=»1.0″ encoding=»UTF-8″?>
    <DefaultAssociations>
    <Association Identifier=».htm» ProgId=»IE.AssocFile.HTM» ApplicationName=»Internet Explorer» />
    <Association Identifier=».html» ProgId=»IE.AssocFile.HTM» ApplicationName=»Internet Explorer» />
    <Association Identifier=».mht» ProgId=»IE.AssocFile.MHT» ApplicationName=»Internet Explorer» />
    <Association Identifier=».mhtml» ProgId=»IE.AssocFile.MHT» ApplicationName=»Internet Explorer» />
    <Association Identifier=».partial» ProgId=»IE.AssocFile.PARTIAL» ApplicationName=»Internet Explorer» />
    <Association Identifier=».svg» ProgId=»IE.AssocFile.SVG» ApplicationName=»Internet Explorer» />
    <Association Identifier=».url» ProgId=»IE.AssocFile.URL» ApplicationName=»Internet Browser» />
    <Association Identifier=».website» ProgId=»IE.AssocFile.WEBSITE» ApplicationName=»Internet Explorer» />
    <Association Identifier=».xht» ProgId=»IE.AssocFile.XHT» ApplicationName=»Internet Explorer» />
    <Association Identifier=».xhtml» ProgId=»IE.AssocFile.XHT» ApplicationName=»Internet Explorer» />
    <Association Identifier=»ftp» ProgId=»IE.FTP» ApplicationName=»Internet Explorer» />
    <Association Identifier=»http» ProgId=»IE.HTTP» ApplicationName=»Internet Explorer» />
    <Association Identifier=»https» ProgId=»IE.HTTPS» ApplicationName=»Internet Explorer» />
    <Association Identifier=»mk» ProgId=»IE.HTTP» ApplicationName=»Internet Explorer» />
    <Association Identifier=»res» ProgId=»IE.HTTP» ApplicationName=»Internet Explorer» />
    </DefaultAssociations>
  7. делаем импорт ассоциаций в образ Dism /Image:C:\WIM\ /Import-DefaultAppAssociations:C:\AppAssociations.xml
  8. проверяем, что изменения сохранились Dism /Image:C:\WIM /Get-DefaultAppAssociations
  9. если всё правильно, то делаем коммит изменений командой Dism /Unmount-Image /MountDir:C:\WIM\ /Commit

На этом всё. Если нужно поменять другую программу по-умолчанию в образе, то делаем аналогичные действия. Если программа не входит в образ по- умолчанию, то не забываем ее в этот образ внедрить.

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

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

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

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

Быстрое создание файла нужного размера в Windows

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

fsutil file createnew testfile1.txt 1000

В данном случае testfile1.txt – это название файла, а 1000 – это размер файла в байтах.

Вот и все!

Настройка списка надежных сайтов в Internet Explorer через групповые политики

Привет! Казалось бы что может быть проще настроить список “Надежных сайтов” в Internet Explorer используя GPO? А все оказалось не так-то просто. Всё началось с того, имеется несколько сот компьютеров и терминальный сервер. Для пользователей была развернута политика, которая настраивала Internet Explorer на клиентских компьютерах.
Но почему-то эта политика не отрабатывала не терминальном сервере. На нем была включена “Усиленная безопасность”.
Путем долгих попыток настроить этот сервер было выяснено, что политика, которая настраивает зоны в Internet Explorer, вносит свои изменения в ветку реестра, которая не читается, если Explorer работает в режиме усиленной безопасности. Что в таком случае делать? Я отключил эту настройку в политике и создал новую, которая настраивает соответствующие ветки реестра, используемые IE во всех режимах работы.
Прежде чем создавать такую политику, советую создать файл с расширением .reg с нужными строками, чтобы удостовериться, что вы нигде не ошиблись.

Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\EscDomains\security_1cv8.exe]
"about"=dword:00000002
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\EscDomains\security_1cv8c.exe]
"about"=dword:00000002
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\kontur.ru]
"https"=dword:00000002
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\security_1cv8.exe]
"about"=dword:00000002
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\security_1cv8c.exe]
"about"=dword:00000002

Чтобы IE мог видеть список сайтов в режиме усиленной безопасности, необходимо добавлять их в ветку реестра “EscDomains”, для обычного режима работы – в ветку “Domains”.
Благодаря этому удалось настроить доступ к странице security_1cv8.exe и security_1cv8c.exe в 1C на терминальном сервере в режиме усиленной безопасности браузера.
Казалось бы задача простая, но пришлось долго с этим провозиться.

Синий экран на Windows XP. Ошибка 0x0000007B

Недавно столкнулся на компьютере с Windows XP с ошибкой  0x0000007B. Bluescreen был на старом ноутбуке Toshiba MK2552GSX.
Как оказалось такая ошибка возникла после сброса настроек  BIOS. В случае проблем с загрузкой и выпаданием в синий экран в первую очередь надо вам заглянуть в настройки BIOS в раздел Advanced. Там будет пункт, который будет называться что-то вроде SATA Mode. Попробуйте выбрать другой режим (IDE, AHCI или Compatible). По умолчанию, Windows XP не содержит в себе драйверов SATA и возможно она была установлена в режиме IDE. Если же переключить на режим AHCI, то система перестанет грузиться – это касается и новых систем. Поэтому будьте осторожны, когда заходите в настройки компьютера!

Ошибка RemoteApp: не удалось получить свойства коллекции сеансов

Недавно возникла такая ситуация на Windows Server 2012: попытался изменить свойства коллекции опубликованных приложений на хосте RDWeb, а тут закралась ошибка: “Не удалось получить свойства коллекции сеансов”.
То же самое можно увидеть и в логах под ошибкой 16393, источник Rdms-UI.
Что же делать?

Сначала пытаемся воспроизвести ошибку в Powershell. Для этого подключаем модуль, который используется в Server Manager

Import-Module C:\Windows\System32\ServerManagerInternal\RDManagement\RDManagement.psd1

и после выполняем команду:

Get-RDSHPool -Alias *

Решение проблемы у меня две:

  1. Удаляем текущую коллекцию и создаем новую
  2. В свойствах сломавшейся коллекции в группах пользователей, которым разрешен доступ к коллекции, добавляем доменную группу Доменных администраторов или Domain Admins, как в моем случае.. Сохраняем изменения и без всяких перезагрузок сразу можем проверять коллекцию, ошибка должна исчезнуть.