Мы установили новый 64-битный сервер печати (Server 2008 R2), а на нашем предыдущем сервере печати у нас была служба поддержки в качестве члена группы опытных пользователей, и мы предоставили им «Диспетчер принтеров», чтобы они могли менять порты принтера при выходе из строя принтеров.
похоже, что произошла недосмотр, и он не был добавлен при настройке нового сервера.
Я добавил их опытным пользователям, зашел в «Свойства сервера печати» в «PRINTMANAGEMENT.MSC» и предоставил разрешения, но похоже, что это будет применяться только к новым принтерам, поскольку не похоже, что они наследуются никаким существующие принтеры.
в любом случае, чтобы эти разрешения распространялись на существующие принтеры?
они настроены как локальные принтеры, привязанные к стандартным портам TCP / IP.
Я столкнулся с этим вопросом, понимая, что я никогда не публиковал то, что делал, в конечном итоге я нашел способ использовать SUBINACL.exe (должен находиться в каталоге пути, таком как System32)
и пропустил его через цикл PowerShell всех принтеров
вот код, запустите его из консоли PS от имени администратора на сервере печати
$Logpath = "c:\temp\logs"
Stop-Transcript -ErrorAction "SilentlyContinue"
Start-Transcript $Logpath -Append
$PRINTERS = (Get-WmiObject Win32_Printer)
foreach($PRINTER in $PRINTERS)
{$Server = $PRINTER.SystemName
$PrinterName = $PRINTER.name
Write-Host \\$Server\$PrinterName
Invoke-Command -AllowRedirection {subinacl.exe /printer \\$Server\$PrinterName /Grant=domain\username=F}
}
Stop-Transcript
Я там больше не работаю, но надеюсь, что кому-то это пригодится.
Я понимаю, что это не метод применения разрешений безопасности ко всем принтерам, но он может решить вашу проблему.
Разрешения по умолчанию для принтера обычно включают в себя разрешения на управление, назначенные группе домена «Операторы печати». Рассмотрите возможность добавления вашей группы поддержки в «Операторы печати».
Кроме того, похоже, что существует глобальный набор разрешений, который может позволить применять настройки ко всем принтерам, находящимся в разделе «Свойства сервера печати», к которым можно получить доступ, щелкнув правой кнопкой мыши имя сервера печати в printmanagement.msc
.
Примечание. Я не использовал ранее acl «Свойства сервера печати», поэтому не могу сказать, работает ли он так, как вы хотите.
Когда я запускаю это, кажется, что он вытаскивает имя сервера и имена принтеров, но при запуске команды возникает ошибка -
\ [имя сервера печати] [имя принтера] Invoke-Command: Невозможно оценить параметр 'ConnectionUri', потому что его аргумент указан как блок сценария, а входные данные отсутствуют. Блок сценария не может быть оценен без ввода. В C: \ ntutils \ utils \ Subinacl7.ps1: 13 символов: 15 + Invoke-Command <<<< -AllowRedirection {c: \ ntutils \ utils \ subinacl.exe / printer http: // $ Server / $ PrinterName / Grant = ter minalserver \ ManagePrintQueues = M} + CategoryInfo: MetadataError: (:) [Invoke-Command], ParameterBindingException + FullyQualifiedErrorId: ScriptBlockArgumentNoInput, Microsoft.PowerShell.Commands.InvokeCommandCommand
Это меня какое-то время беспокоило, и с помощью этой ветки я попал туда, где мне было нужно. как заметил Майк, сценарий дал мне ошибки, я попытался изменить его, но ничего не сделал. Наконец, я напрямую использовал good'ol CMD.
Во-первых, я получил список принтеров.
Get-WmiObject Win32_Printer | Select-Object -Property Name
Во-вторых, я вставил результаты, чтобы отличиться вместе с командой.
В-третьих, я скопировал это в Notepad ++ и очистил места.
Наконец, вставил в CMD и запустил.
Вроде много, но у меня ушло всего 10 минут. Извините не чисто! Надеюсь, поможет!