First, you will need to set on printer up with the desired permissions in the windows GUI, then use Powershell to apply those permissions to all other printers
I will use the Get-Printer cmdlet to read the value of the security settings on the newly added printer. I then use the Set-Printer cmdlet to write the value of the security settings to the other printers.
Here are the Windows PowerShell commands that I need to use:
$security = get-printer "printer with changes" -full
get-printer * | Foreach-Object {set-printer $_.name -PermissionSDDL $security.PermissionSDDL}
The –Full flag is required when obtaining the security information, and takes a bit longer to obtain the extra data. However, most of the information you need from the printer does not require this flag.
When I attempt this task on my print server running Windows Server 2008 R2, it fails with the following error message:
The term 'get-printer' is not recognized as the name of a cmdlet,……
Because the Windows PowerShell commands use spooler calls, they do work in remote cases. For this task on computers running on Windows 8.1 and Windows 8, the commands are:
$security = get-printer -computer SERVER2008R2 "printer with changes" -full
get-printer * -computer SERVER2008R2|
Foreach-Object {set-printer $_.name -computer SERVER2008R2 -PermissionSDDL $security.PermissionSDDL}
If the print server running Windows 2008 R2 is a cluster, the remote cluster is handled the same as a standalone server. There is nothing special regarding the clustered spooler resource.