Глава 11. Управление печатью
Содержание
В этой главе мы охватим следующие рецепты:
-
Установка и совместное применение принтеров
-
Публикация принтера
-
Изменение каталога имеющегося спулера
-
Изменение драйверов принтера
-
Печать тестовой страницы
-
Управление безопасностью принтера
-
Создание пула принтеров
Печать является функциональной возможностью Microsoft, встроенной в различные версии операционной системы Windows и была вовлечена на протяжении множества лет. Windows Server 2022 предоставляется вам с платформой печати для вашей организации. Настройка и управление принтером в Windows Server 2022 не сильно изменились по сравнению с более ранними версиями.
При печати в Windows те физические устройства, которые выстраивают изображения вывода на бумаге, носят название устройств печати. Принтер это очередь к устройству печати. Сервер печати способен поддерживать множество принтеров. Каждое устройство печати обладает связываем с ним драйвером принтера, который преобразовывает ваши документы в соответствующую форму печати в заданном устройстве печати. Некоторые драйверы поступают с Windows, прочие вам необходимо получать от производителя соответствующего принтера. В некоторых ситуациях эти драйверы выгружаются через Интернет; в прочих случаях вам может потребоваться выгрузить и запустить программу установки драйвера для добавления правильного драйвера в ваш сервер печати.
Принтеры печатают на устройствах печати при помощи порта печати (такого как USB, параллельного или сетевого). Для сетевых принтеров вам требуется определить такой порт, прежде чем вы сможете создать некий принтер Windows. Microsoft не изменил имеющуюся базовую архитектуру печати в Windows Server 2022. Windows Server 2022 ввёл новую архитектуру драйвера, которую поддерживает Windows Server 2022. Эта модель драйвера позволяет вам применять два различных типа драйвера: драйверы класса принтера и специфичные для модели драйверы. Такой последний представляет некий отдельный драйвер для различных моделей устройств печати. Вы применяете особенные для модели драйверы только для единственной модели принтера. В большей степени производители устройств печати реализуют более общие драйверы, которые могут упрощать раскрутку совместного применения принтеров.
Ещё одно изменение в Windows Server 2022, привнесённое в Windows Server 2022, состоит в том, что вам больше нет необходимости применять соответствующий сервер печати для распространения драйверов печати (что особенно актуально для сетевых принтеров). В таких ситуациях вы можете пользоваться такими инструментами как Диспетчер конфигурации Системного центра (System Center Configuration Manager) или Групповую политику для распространения драйверов печати клиентам.
Эта глава охватывает установку, управление и обновление принтеров, устройств печати и портов печати в сервере Windows Server 2022. Вы можете обнаружить, что некоторые из инструментов администрирования, применяемые в этой главе не доступны в системах Windows Server Core. Для включения полного управления вам потребуется обладать полным графическим интерфейсом (включая применение Рабочего стола) для всех утилит графического интерфейса.
В рецепте Установка и совместное применение принтеров вы устанавливаете принтер и
совместно применяете его для пользования прочими. В рецепте Публикация принтеров вы
публикуете соответствующий принтер в Active Directory
(AD), позволяя пользователям этого домена выполнять поиск в AD для нахождения
соответствующего принтера. Когда вы создаёте некий сервер печати (добавляя порты принтера и принтеры), установленная по умолчанию папка
подкачки данных (спулера, Windows по умолчанию применяет папку, которая находится в C:\Windows
)
что может быть далёким от идеального местоположения. В рецепте Изменение каталога спулера
вы изменяете значение устанавливаемого по умолчанию местоположения для подкачки данных принтера.
Порой, некий принтер может обладать неким устройством печати, меняющимся для различных моделей принтера. В рецепте Изменение драйверов принтера вы изменяете соответствующий драйвер для того принтера, который вы создали ранее. Полезным этапом для устранения неисправностей при работе с принтерами выступает является печать тестовой страницы, как вы сможете обнаружить это в рецепте Печать тестовой страницы.
Принтеры, как и файлы, способны обладать Access Control Lists (ACL, Списки контроля доступом) для определения того, кто может применять соответствующий принтер. Вы можете изменять такой ACL, как это показано в рецепте Управление безопасностью принтера. Во многих организациях устройства печати являются совместно используемым ресурсом.
В Windows, пул принтера это принтер, обладающий одним или более связанных с ним
устройств печати. Это означает, что обладая двумя или более физическими принтерами (устройствами печати в отдельных портах), которые
пользователи наблюдают просто как отдельный принтер. Пулы принтеров полезны в тех ситуациях, когда пользователи создают большое число печатаемых
документов и может быть развёрнуто большое число физических принтеров. В рецепте Создание пула
принтеров вы сможете обнаружить как вы можете автоматизировать такое создание пула принтеров при помощи
rundll32.exe
.
Самый первый шаг состоит в создании сервера печати для вашей организации, вовлекающий установку функциональности соответствующего сервера печати, драйверов принтера и портов принтера. После их установки вы можете создать и совместно с прочими применять принтер для доступа.
В этом рецепте вы выгружаете и устанавливаете два драйвера принтера Xerox. Один из этих драйверов вы применяете в этом рецепте; другим вы пользуетесь в рецепте Изменение драйверов принтера.
Замечание | |
---|---|
Обратите внимание: когда вы применяете этот рецепт для поддержки иного изготовителя принтера или иной модели, вам могут потребоваться некоторые изменения. В некоторых случаях, например для некоторых принтеров Hewlett Packard, следует устанавливать драйверы принтера, разрабатываемые производителем, получаемые через выгрузку исполняемого файла. Вам может потребоваться запустить такой выгруженный исполняемый файл, который вы выполняете в своём сервере печати для добавления необходимых драйверов. Тем самым, этот рецепт может быть неприменимым для всех устройств печати. |
В этом рецепте вы пользуетесь хостом PSRV
Windows Server, присоединённом к домену хосту
Windows Server 2022, в котором у вас имеются установленными PowerShell и VS Code.
-
Устанавливаем компонент
Print-Server
вPSRV
Install-WindowsFeature -Name Print-Server, RSAT-Print-Services
-
Создаём папку для драйверов принтера Xerox
$NIHT = @{ Path = 'C:\Foo\Xerox' ItemType = 'Directory' Force = $true ErrorAction = "Silentlycontinue" } New-Item @NIHT | Out-Null
-
Выгружаем драйверы принтера для принтеров Xerox
$URL='http://download.support.xerox.com/pub/drivers/6510/'+ 'drivers/win10x64/ar/6510_5.617.7.0_PCL6_x64.zip' $Target='C:\Foo\Xerox\Xdrivers.zip' Start-BitsTransfer -Source $URL -Destination $Target
-
Раскрываем полученный файл ZIP
> $Drivers = 'C:\Foo\Xerox\Drivers' Expand-Archive -Path $Target -DestinationPath $Drivers
-
Устанавливаем необходимые драйверы
$M1 = 'Xerox Phaser 6510 PCL6' $P = 'C:\Foo\Xerox\Drivers\6510_5.617.7.0_PCL6_x64_Driver.inf\'+ 'x3NSURX.inf' rundll32.exe printui.dll,PrintUIEntry /ia /m "$M1" /f "$P" $M2 = 'Xerox WorkCentre 6515 PCL6' rundll32.exe printui.dll,PrintUIEntry /ia /m "$M2" /f "$P"
-
Добавляем
PrinterPort
для нового принтера$PPHT = @{ Name = 'SalesPP' PrinterHostAddress = '10.10.10.61' } Add-PrinterPort @PPHT
-
Добавляем этот принтер в
PSRV
$PRHT = @{ Name = 'SalesPrinter1' DriverName = $m1 PortName = 'SalesPP' } Add-Printer @PRHT
-
Настраиваем совместное применение этого принтера
Set-Printer -Name SalesPrinter1 -Shared $True
-
Просматриваем что вы сделали
Get-PrinterPort -Name SalesPP | Format-Table -Autosize -Property Name, Description, PrinterHostAddress, PortNumber Get-PrinterDriver -Name xerox* | Format-Table -Property Name, Manufacturer, DriverVersion, PrinterEnvironment Get-Printer -ComputerName PSRV -Name SalesPrinter1 | Format-Table -Property Name, ComputerName, Type, PortName, Location, Shared
На Шаге 1 вы устанавливаете и компонент Windows Print-Server
, и
RSAT (Remote Server Administration
Tools, Инструментов удалённого администрирования сервером) печати со следующим выводом:
На Шаге 2 вы создаёте новую папку, которую вы применяете для содержания выгружаемого драйвера принтера.
На Шаге 3 вы выгружаете необходимые драйверы (как сжатые ZIP файлы) в только что созданную папку.
На Шаге 4 вы раскрываете эти ZIP файлы, а на Шаге 5 вы
устанавливаете эти драйверы принтера. На Шаге 6 вы добавляете новый порт принтера в
PSRV
, а на Шаге 7 вы добавляете новый принтер при помощи только
что созданного порта принтера и применения выгруженных драйверов принтера Xerox. Наконец, на Шаге 8,
вы разделяете этот принтер таким образом, чтобы и прочие пользователи имели возможность печати в нём. Эти шаги не производят вывод.
На Шаге 5 вы применяете приложение консоли rundll32.exe
для
установки необходимых драйверов принтера в Windows. Эта команда, может так случиться, выработает диалоги об ошибке "Operation could
not be completed". Решение состоит в том, что следует подождать несколько секунд и попробовать снова.
На Шаге 9 вы изучаете имеющиеся порты принтера, драйверы принтера и принтеры, доступные в
PSRV
с подобным приводимому ниже выводом:
В данном рецепте вы создаёте в PSRV
принтер на основании принтеров Xerox. Это факт, что вы можете
не обладать такой моделью принтера в своей среде, что означает, что вы не сможете физически печатать на таком устройстве печати, однако вы
можете настроит такой принтер, как показано в этом рецепте.
На Шаге 5 вы пользуетесь printui.dll
и
rundll32.exe
. Теперь printui.dll
это библиотека управления
функциональностью принтера. Если для управления принтерами вы применяете инструмент Диспетчера принтера (Printer Management) с графическим
интерфейсом, этот графический интерфейс вызывает данную DLL для выполнения выбранного вами действия. Поскольку Microsoft разработал и
собрал такую DLL для поддержки графического интерфейса принтера Windows, эта DLL способна создавать дополнительные блоки диалога, что не очень
способствует автоматизации. Для решения всех проблем вы можете полагаться на вырабатываемые справочные сведения.
На практике, printui.dll
является слегка подвержена ошибкам и способна вырабатывать сообщения об ошибках
с небольшими подробностями поддержки в помощь вам. Основное решение состоит в повторе действия после ожидания на протяжении нескольких
секунд или, если эта проблема продолжит оставаться, перезагрузить данный сервер.
Вы можете получить полезные сведения в синтаксисе, необходимым printui.dll
, раскрыв окно консоли
PowerShell и выполнив такую команду:
rundll32 printui.dll PrintUIEntry
В данном рецепте вы выгрузили и установили два драйвера. В данном рецепте вы воспользовались одним драйвером для создания принтера
SalesPrinter1
. Вторым драйвером вы воспользуетесь позднее в этой главе в рецепте
Изменение драйверов принтера.
После того, как вы создали и выставили в совместное пользование некий принтер (как это показано в нашем предыдущем рецепте), вы также можете опубликовать его в Active Directory. Когда вы публикуете принтер, вы также можете определять физическое местоположение для этого принтера. Ваши пользователи затем выполняют поиск опубликованных принтеров на основании местоположения, а также его возможностей (таких как цветная печать). В данном рецепте вы публикуете тот принтере, который вы создали в нашем предыдущем рецепте и изучает что получилось в результате.
Перед исполнением данного рецепта вам требуется обладать настроенным сервером печати PSRV
(который вы сделали в рецепте Установка и совместное применение принтеров). Дополнительно
вам требуется создать SalesPrinter1
.
-
Получаем принтер для публикации и сохраняем возвращаемый объект в
$Printer
$Printer = Get-Printer -Name SalesPrinter1
-
просматриваем подробности этого принтера
$Printer | Format-Table -Property Name, Published
-
Публикуем этот принтер в AD и выставляем его для совместного применения
$Printer | Set-Printer -Location '10th floor 10E4' $Printer | Set-Printer -Shared $true -Published $true
-
Просматриваем и обновляем состояние публикации
Get-Printer -Name SalesPrinter1 | Format-Table -Property Name, Location, DriverName, Published
На Шаге 1 вы получаете подробности того принтера, который собираетесь применять для совместного
использования и сохраняете их в переменной $Printer
. На Шаге 2 вы
изучаете полученные сведения о принтере, содержащиеся в $Printer
, вот как выглядит вывод:
На Шаге 3 вы публикуете этот принтер в AD Reskit.Org
и
превращаете его в явном виде в совместно используемый. Этот шаг не производит вывод. На Шаге 4 для
просмотра состояния имеющихся публикаций имеющихся принтеров вы применяете Get-Printer
и получаете что- то
наподобие приводимого ниже:
Публикация принтера в AD позволяет пользователям определять местоположение принтеров рядом с ними при помощи диалога Добавления принтера (Add Printer) для поиска опубликованных принтеров. Например, если вы зарегистрировались к каком- то из компьютеров домена, вы можете получить этот диалог покликав Start | Settings | Devices | Printers & scanners (Пуск | Параметры | Устройства | Принтеры и сканеры) для входа в диалог Add printers & scanners (Добавить принтеры и сканеры). В блоке этого диалога кликните по Add printers & scanners (Добавить принтеры и сканеры). Дождитесь окончания поиска и затем кликните по The printer that I want isn't listed (Необходимый принтер отсутствует в списке), что переведёт вас в диалог Add Printer (Установка принтера).
В этом блоке диалога кликните по Next (Далее), чтобы перейти к диалогу Find Printers (Поиска доступных принтеров), который выглядит следующим образом:
В организациях крупного масштаба публикация принтеров в AD может быть очень полезной пользователям для поиска доступных им корпоративных принтеров.
В процессе печати подкачка страниц Windows принтера Windows пользуется папкой на диске для хранения временных файлов, создаваемых процессом
печати. Когда множество пользователей каждого принтера печатает очень большие документы в неком отдельном принтере, имеющиеся очередь печати и временная
папка могут становиться достаточно большими. По умолчанию этой папкой выступает C:\Windows\System32\spool\PRINTERS
.
для занятого сервера печати со множеством принтеров вы можете пожелать изменить такую устанавливаемую по умолчанию папку подкачки страниц
(спулера).
Этот рецепт пользуется сервером печати PSRV
, который вы настроили в рецепте
Установка и совместное применение принтеров.
-
Загружаем пространство имён и классы
System.Printing
Add-Type -AssemblyName System.Printing
-
Определяем необходимые
permissions
$Permissions = [System.Printing.PrintSystemDesiredAccess]::AdministrateServer
-
Создаём объект
PrintServer
с необходимыми полномочиями$NOHT = @{ TypeName = 'System.Printing.PrintServer' ArgumentList = $Permissions } $PS = New-Object @NOHT
-
Рассматриваем папку подкачки страниц по умолчанию
"The default spool folder is: [{0}]" -f $PS.DefaultSpoolDirectory
-
Создаём новую папку подкачки страниц
$NIHT = @{ Path = 'C:\SpoolPath' ItemType = 'Directory' Force = $true ErrorAction = 'SilentlyContinue' } New-Item @NIHT | Out-Null
-
Обновляем путь к папке подкачки страниц по умолчанию
$Newpath = 'C:\SpoolPath' $PS.DefaultSpoolDirectory = $Newpath
-
Фиксируем выполненные изменения
$Ps.Commit()
-
Перезапускаем свой
Spooler
чтобы изменения вступили в силуRestart-Service -Name Spooler
-
Проверяем новую папку подкачки страниц
New-Object -TypeName System.Printing.PrintServer | Format-Table -Property Name, DefaultSpoolDirectory
-
Останавливаем свою службу
Spooler
Stop-Service -Name Spooler
-
Создаём новый каталог подкачки страниц
$SPL = 'C:\SpoolViaRegistry' $NIHT2 = @{ Path = $SPL Itemtype = 'Directory' ErrorAction = 'SilentlyContinue' } New-Item @NIHT2 | Out-Null
-
Создаём необходимую папку подкачки страниц и настраиваем её в своём реестре
$RPath = 'HKLM:\SYSTEM\CurrentControlSet\Control\' + 'Print\Printers' $IP = @{ Path = $RPath Name = 'DefaultSpoolDirectory' Value = $SPL
-
Перезапускаем свой
Spooler
Start-Service -Name Spooler
-
Просматриваем только что обновлённую папку подкачки страниц
New-Object -TypeName System.Printing.PrintServer | Format-Table -Property Name, DefaultSpoolDirectory
На Шаге 1 вы загружаете пространство имён System.Printing
,
что не сопровождается выводом. На Шаге 2 вы создаёте некую переменную, содержащую желательный доступ
к создаваемому принтеру. На Шаге 3 вы создаёте объект PrintServer
с соответствующими подходящими полномочиями. Затем, на Шаге 4 вы изучаете установленную по умолчанию папку
подкачки страниц печати для вновь установленного хоста Windows Server 2022, что сопровождается таким выводом:
На Шаге 5 вы создаёте в PSRV
новую папку для обслуживания папки
подкачки страниц сервера печати. На Шаге 6 вы обновляете значение пути к папке подкачки страниц принтера.
На Шаге 7 вы фиксируете это изменение, а на Шаге 8 вы
перезапускаете свою службу подкачки страниц печати. Эти четыре шага не производят вывод в консоль.
На Шаге 9 вы повторно просматриваете подробности своего принтера с подобным приводимому ниже выводом:
На Шагах с 1 по Шаг 9 вы настраиваете и проверяете необходимую папку подкачки страниц печати при помощи объекта .NET.
На Шаге 10 вы останавливаете свою службу подкачки страниц печати. На Шаге 11 вы создаёте новую папку и на Шаге 12 вы настраиваете необходимые установки реестра чтобы они содержали значение пути к новой папке подкачки страниц печати. Затем, на Шаге 13 вы перезапускаете свой спулер. Эти четыре шага не производят никакого вывода на консоль. После выполнения изменений папки подкачки страниц печати в вашем реестре, на Шаге 14 вы можете просмотреть выполненные обновления папки спулера с подобным приводимому далее выводом:
В большинстве организаций с большим числом совместно используемых принтеров настройка сервера печати для применения иной папки под подкачку страниц печати будет не плохой мыслью. Если есть такая возможность, воспользуйтесь отдельным дисковым устройством если вы желаете избегать риска заполнения папки подкачки страниц печати.
В данном рецепте вы воспользовались двумя различными механизмами замены папки подкачки страниц печати. Один применял объект .NET (который не загружается по умолчанию), в то время как другой вовлекает непосредственное редактирование вашего реестра. Не лишним будет напомнить, что когда вы раскручиваете принтеры при помощи сценариев, в особенности тех, которые изменяют ваш реестр, жизненно важным является тщательное тестирование.
Многие из этапов данного рецепта не производят никакого вывода. Такое отсутствие вывода является нормальным когда вы имеете дело напрямую с классами и методами .NET, а также с изменением реестра.
Может так получиться, что появится необходимость изменения драйвера принтера для некого принтера. Например, вы можете заменить некое имеющееся
устройство печати новой или отличающейся моделью. В таком случае вы захотите оставить название этого принтера прежним, но вам потребуется обновить
драйвер принтера для этого принтера. В рецепте Установка и совместное применение принтеров
вы выгружали и устанавливали два драйвера принтера Xerox. При определении принтера SalesPrinter1
вы воспользовались первым драйвером, Xerox Phaser 6510 PCL6
.
В этом рецепте вы измените установленный драйвер для своего принтера и воспользуетесь другим, установленным ранее драйвером,
Xerox Phaser 6515 PCL6
.
Этот рецепт предполагает, что значение название принтера и порта принтера (включая значения адреса IP принтера и номера порта) не изменяются, изменяется лишь сам драйвер.
Выполните этот рецепт в хосте PSRV
, настроенном как в рецепте
Установка и совместное применение принтеров.
-
Добавляем соответствующий драйвер принтера для своего нового устройства печати
$M2 = 'Xerox WorkCentre 6515 PCL6' Add-PrinterDriver -Name $M2
-
Получаем объект принтера своей Группы продаж и сохраняем его в
$Printer
$Printern = 'SalesPrinter1' $Printer = Get-Printer -Name $Printern
-
Обновляем применяемый драйвер при помощи командлета
Set-Printer
$Printer | Set-Printer -DriverName $M2
-
Просматриваем обновлённый драйвер принтера
Get-Printer -Name $Printern | Format-Table -Property Name, DriverName, PortName, Published, Shared
На Шаге 1 для добавления необходимого драйвера в наш принтер вы применяете командлет
Add-PrinterDriver
. На Шаге 2 вы получаете подробности этого
принтера, а на Шаге 3 вы обновляете этот принтер на применение только что обновлённого драйвера.
Эти шаги не сопровождаются выводом.
На Шаге 4 для просмотра того что вы установили обновлённый драйвер для своего принтера
SalesPrinter1
вы пользуетесь Get-Printer
, что выглядит подобно
следующему:
Как вы видели в этом рецепте, изменение драйвера принтера достаточно простое - после установки некого нового драйвера вы пользуетесь
Set-Printer
для уведомления Windows о том какой именно драйвер она должна применять при печати на этот
принтер.
Бывают ситуации, когда вы можете захотеть распечатать некую проверочную страницу на принтере; например, после замены тонера или чернил принтера в физическом устройстве печати или после замены драйвера принтера (как это показано в рецепте Изменение драйверов принтера). В таких ситуациях такие пробные страницы помогут вам гарантировать что этот принтер работает как положено.
Данный рецепт пользуется сервером печати PSRV
, который вы настроили в рецепте
Установка и совместное применение принтеров.
-
Подучаем объекты принтера из WMI
$Printers = Get-CimInstance -ClassName Win32_Printer
-
Отображаем общее число определённых в
PSRV
принтеров'{0} Printers defined on this system' -f $Printers.Count
-
Получение объекта WMI принтера группы Продаж
$Printer = $Printers | Where-Object Name -eq 'SalesPrinter1'
-
Отображение подробностей этого принтера
$Printer | Format-Table -AutoSize
-
Печать страницы проверки
Invoke-CimMethod -InputObject $Printer -MethodName PrintTestPage
-
Проверка задания на печать
Get-PrintJob -PrinterName SalesPrinter1
На Шаге 1 вы получаете подробности тех принтеров,которые установлены в
PSRV
при помощи WMI и сохраняем их в переменной $Printers
,
что не производит вывод. На Шаге 2 вы отображаете сколько принтеров у вас имеется определёнными в
этом сервере печати со следующим выводом:
На Шаге 3 вы получаете конкретный экземпляр WMI для принтера SalesPrinter1
,
что не производит вывода. На Шаге 4 вы просматриваете подробности этого принтера с примерно таким
выводом:
На Шаге 5 вы пользуетесь Invoke-CimMethod
для запуска метода
PrintTestPage
в соответствующем принтере. Этот шаг вырабатывает простую тестовую страницу со следующим
консольным выводом:
На заключительном Шаге 6 этого рецепта вы просматриваете имеющиеся задания на печать в принтере
SalesPrinter1
, из которого вы видите выработку тестовой страницы на нашем предыдущем шаге. Вывод этого
шага выглядит приблизительно так:
В этом рецепте вы воспользовались WMI для создания тестовой страницы в вашем принтере SalesPrinter1
.
Как вы показали на Шаге 6, наша очередь принтера обладает заданием на печать. Теоретически, этот документ
должен появиться в вашем печатном устройстве без особых проблем. Если вы не получили никакого физического вывода, вам требуется позаботиться о
неких процедурах разрешения проблем с принтером: включён ли этот принтер и подключён ли и работает ли его сетевой кабель?
Всякий принтер Windows обладает предоставляемым на усмотрение access control list
(ACL, Список контроля доступа). Такой ACL содержит одну или более
access control entries
(ACE, запись контроля доступа). Каждая ACE определяет конкретные полномочия для
некоторых заданных групп или пользователей. Вы можете определить некую группу (например, SalesAdmins
) и
предоставить этой группе необходимые полномочия для управления документами, в то время как другой группе (такой как,
Sales
) предоставляется доступ к печати на этом принтере.
По умолчанию, когда создаётся некий принтер, Windows добавляет некоторые ACE в ACL этого принтера. Они включают задание необходимых полномочий
для печати на этом принтере группе Everyone
. Для некоторых принтеров это может не подходить. По данной
причине вам может потребоваться регулировка устанавливаемого ACL, что показано в этом рецепте.
Модуль PrintManagement
содержит некоторые командлеты, которые помогают вам управлять вашими устройствами
печати. Тем не менее, нет никаких командлетов для управления ACL в принтерах. Вы всегда можете применять .NET непосредственно для управления
имеющимся ACL или воспользоваться сторонними сценариями для выполнения этого задания для вас, однако такой код может быть сложным (и легко
портящим). Убедитесь что вы очень тщательно проверили каждый рецепт, изменяющий ACL принтера. Всегда имейте вариант сброса ACL обратно в
установленный по умолчанию, чтобы вы имели гарантию начать снова определение ACL своего принтера. И, как и всегда, вы можете управлять своим ACL
при помощи графического интерфейса, если вам это потребуется!
Запускайте этот рецепт в ВМ сервера печати PSRV
после того как вы установили и настроили
свой принтер SalesPrinter1
. Этот рецепт пользуется принтером
SalesPrinter1
и создаёт в AD две новые группы, Sales
SalesAdmin
.
-
Настройка AD для данного рецепта
$SB = { # 1.1 Creating Sales OU $OUHT = @{ Name = 'Sales' Path = 'DC=Reskit,DC=Org' } New-ADOrganizationalUnit @OUHT # 1.2 Creating Sales Group $G1HT = @{ Name = 'SalesGroup' GroupScope = 'Universal' Path = 'OU=Sales,DC=Reskit,DC=Org' } New-ADGroup @G1HT # 1.3 Creating SalesAdmin Group $G2HT = @{ Name = 'SalesAdmins' GroupScope = 'Universal' Path = 'OU=Sales,DC=Reskit,DC=Org' } New-ADGroup @G2HT } # 1.4 Running Script block on DC1 Invoke-Command -ComputerName DC1 -ScriptBlock $SB
-
Создаём объект
NTAccount
$GHT1 = @{ Typename = 'Security.Principal.NTAccount' Argumentlist = 'SalesGroup' } $SalesGroup = New-Object @GHT1 $GHT2 = @{ Typename = 'Security.Principal.NTAccount' Argumentlist = 'SalesAdmins' } $SalesAdminGroup = New-Object @GHT2
-
Получение значения SID группы
$SalesGroupSid = $SalesGroup.Translate([Security.Principal.Securityidentifier]).Value $SalesAdminGroupSid = $SalesAdminGroup.Translate( [Security.Principal.Securityidentifier]).Value
-
Получение значения SDDL для этого принтера
$SDDL = 'O:BAG:DUD:PAI(A;OICI;FA;;;DA)' + "(A;OICI;0x3D8F8;;;$SalesGroupSid)" + "(A;;LCSWSDRCWDWO;;;$SalesAdminGroupSid)"
-
Получение объекта принтера группы
Sales
$SGPrinter = Get-Printer -Name SalesPrinter1 -Full
-
Устанавливаем необходимые полномочия
$SGPrinter | Set-Printer -Permission $SDDL
-
Просматриваем установленные полномочия через графический интерфейс.
Откройте прикладное приложение Windows Settings (Параметры), кликните по Devices (Устройства), а затем кликните по Printers & scanners (Принтеры и сканеры). Далее кликните по принтеру SalesPrinter1, затем кликните по Manage (Управление). Наконец, кликните по Printer properties (Свойства принтера).
На Шаге 1 вы создаёте новое Подразделение организации (OU) в своём домене
Reskit.Org
(Sales
), далее создаёте две новые Универсальные группы
безопасности (SalesGroup
и SalesAdmins
)
На Шаге 2 вы создаёте два объекта Security.Principal.NTAccount
с необходимыми свойствами для соответствующих групп безопасности. На Шаге 3 вы применяете эти два
объекта для выборки SID
(Security ID, Идентификаторов безопасности) для каждой из своих групп.
На Шаге 4 вы создаёте набор полномочий
SDDL (Security Descriptor Description
Language, Языка определения описателя безопасности).
На Шаге 5 вы пользуетесь Get-Printer
для возврата объекта WMI,
который описывает соответствующий принтер. Затем, на Шаге 6 вы применяете
Set-Printer
для установки необходимого ACL для своего принтера. Эти шесть шагов не вырабатывают
никакого консольного вывода.
На Шаге 7 вы рассматриваете полученный ACL при помощи Графического интерфейса Printer (Принтер) Windows. Получаемый вывод выглядит следующим образом:
В этом рецепте вы создали некий ACL для принтера SalesPrinter1
группы Продаж. Данный рецепт
пользуется объектом .NET для получения значений SID двух групп безопасности. Затем вы вручную строите необходимые SDDL и применяете их к
своему принтеру.
В отличии от NTFS не существует доступными готовых сторонних инструментов управления ACL принтера для упрощения настроек ACL. Механизмом по умолчанию выступает SDDL, однако это не всегда просто. Для получения неких подробностей относительно SDDL обращайтесь к https://itconnect.uw.edu/wares/msinf/other-help/understanding-sddl-syntax/.
Windows позволяет вам создавать пул принтера, принтер с двумя или более печатающими устройствами (каждое с отдельным портом принтера). При помощи пула принтера Windows отправляет приданное принтеру задание в любой из принтеров пула. Эта функциональность полезна в некой среде, в которой пользователи печатают большое число документов и требуется скорость, которую способны предоставлять дополнительные принтеры без запроса у пользователя выбора для применения конкретного устройства печати.
Не существует командлетов для позволения вам создавать пул принтера. Кроме того, WMI не предоставляет механизма создания пула принтера. Как
и для прочих рецептов этой главы, для развёртывания пула принтера вы применяете printui.dll
и
rundll32
. Данный рецепт это иной пример использования более раннего консольного приложения для достижения
вами цели.
Вы применяете этот рецепт в PSRV
, в котором вы установили новый принтер,
SalesPrinter1
.
-
Добавляем порт для принтера
$P = 'SalesPP2' # new printer port name Add-PrinterPort -Name $P -PrinterHostAddress 10.10.10.62
-
Создаём пул для принтера
SalesPrinter1
$Printer = 'SalesPrinter1' $P1 = 'SalesPP' # First printer port $P2 = 'SalesPP2' # Second printer port rundll32.exe printui.dll,PrintUIEntry /Xs /n $Printer Portname "$P1,$P2"
-
Просматриваем созданный пул принтера
Get-Printer $Printer | Format-Table -Property Name, Type, DriverName, PortName
На Шаге 1 вы добавляете новый порт принтера, SalesPP2
.
На Шаге 2 вы создаёте новый пул принтера при помощи printui.dll
и установки двух портов принтера. А на конечном Шаге 3 вы просматриваете вывод для того чтобы убедиться
что вы настроили пул принтера из двух устройств печати/ портов. Вывод заключительного шага выглядит примерно так:
На Шаге 3 чтобы убедиться что вы настроили пул принтера для выборки подробностей относительно принтера
вы пользуетесь командой Get-Printer
. Также вы можете просмотреть этот пул используя графический интерфейс
Принтера, что выглядит следующим образом: