Posted on 3rd March 2017 by Darren Wallace

Advanced Printing Options, with Profiles!


Hi All. Last time out, I covered deploying printer queues via scripts, with various advanced settings. Turns out you can achieve the same results with the use of a custom configuration profile!

Zack McCauley has forked Nick McSpadden’s PrinterGenerator solution to create PrinterProfileGenerator, which can be found here:

Sounds great, but how do I use it?

Once you’ve grabbed a copy of the repo from GitHub, simply run the supplied Python Script ( with the various options, and it’ll output a complete configuration profile for the printer queue. This profile can then be used with Munki or Casper (or any other management solution that accepts a complete custom profile) to deploy the printer queue to your devices!

Technical details

Ok, I’ve glossed over a few details, but the full steps are:

1. Follow my previous blog, right up until “The Final Command” section.
2. Instead of running that final command, run the script:

./ --printername "${queueName}" --address "${serverURL}" --location "${location}" --driver "${ppd}" --displayname "${GUIName}" --option "${option 1}" --option "${option 2}" etc


queueName = The print queue name as it is provided from the server, e.g. BlackAndWhite
serverURL = The print queue address (without the queue name), e.g. lpd://
location = The GUI location for the print queue
ppd = The path to the PPD file used for the queue
GUIName = The GUI name for the print queue
option 1 = The first option name and key, e.g. APOptionalDuplexer=False
option 2 = The second option name and key, e.g. Duplex=None

and so on, as needed.

Our example queue options would look something like this:

./ --printername "${queueName}" --address "${serverURL}" --location "${location}" --driver "${ppd}" --displayname "${GUIName}" --option "printer-is-shared=false" --option "PageSize=A4" --option "printer-error-policy=retry-current-job" --option "APOptionalDuplexer=False" --option "Duplex=None" --option "PageSize=Letter" --option "InputSlot=Upper"

3. Deploy the printer driver and the output profile using your preferred method


So why use this method over the method outlined in my last blog? Possible advantages are:

  • It always helps to know multiple methods to achieve the same goal. You never know when one method stops working or becomes less reliable.
  • If there ever comes a time when macOS is only manageable via profiles, this will set you right!


As with all things, there are some disadvantages to this method:

  • This method does require extra effort. Only minimal extra effort, but extra all the same.
  • When a profile is removed from a macOS device, the printer queue is not. This would require the printer queues to be deleted through other means after the profile is removed. Not handy if you’re migrating to a new set of printer servers / queues.*


As always, I can’t take the blame for all of this! Credit is due to:


And there you go, more ideas of deploying printer queues, but with the use of profiles. As always, if you have any questions, queries or comments, let us know below (or @daz_wallace on Mac Admins Slack) and I’ll try to respond to and delve into as many as I can.

The usual Disclaimer:

While the author has taken care to provide our readers with accurate information, please use your discretion before acting upon information based on the blog post. Amsys will not compensate you in any way whatsoever if you ever happen to suffer a loss/inconvenience/damage because of/while making use of information in this blog.

* Andy Semak (@asemak on Slack) has logged this with Apple on Radar ref #31499326. Please duplicate and log as required.
Update 2017.04.13
* Andy Semak (@asemak on Slack)’s Radar has been closed as a duplicate of #11973532. Continue to duplicate as required 😊