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.