I know that you can restrict device access with groups in Pharos. I don't think you can do it by user. To do it by group:
1. First setup an Access Time under System -> Access Times in Pharos Admin. These are mostly used for SignUp but you can use them for Device restriction as well.
2. Now goto the Device you want to restrict in Output Management -> Devices. There's a section for Access Times. I've setup some Devices to be available all the time to all users, some at times buildings are open, I've even made a "Never" option. This was tricky since you can make an empty Access Time. I just put in a minute in the middle of the night Sunday into Monday.
This is an option if you don't mind having to make the change to each Device vs the Queue or Print Group. Hope this helps.
I'd taken that slant initially (and why I'd accidentally deleted the initial question by Emily ). However, that is set at the Device, not the queue. It does accomplish the task at hand, and with a bit more finesse (since there's some degree of Uniprint saying "Nope, not yet" to the user). We both end up managing the output side, rather than the submission side, unfortunately.
Without scripting, you're pretty much restricted to the "Available from" function of Windows Spooler. It's found under the "Advanced" tab of the queue properties page:
The behavior of this is kind of odd at first use. Essentially, setting availability doesn't prevent the job from printing, it just stops it from printing when the job isn't submitted within the designated From/To times. So if I were to submit a job to the queue in the screenshot now (even with Pharos Popup), it would not print: the job just sits in the queue until the time specified in the "From" field. It's really simple. In tests, this works with both "Direct" and "Held" queue types. When applied to a Held queue in Uniprint 8.3 and higher (based on an earlier question, it appears you are using Uniprint 8.4 at least), the job isn't released to the Secure Release Service until the server hits the "From" time. A user can submit, then, but nothing would show up in the job list until "From" time.
The benefit of this option is that you can make the changes at any time, and it doesn't affect any Uniprint setting or option.
If you wanted to script (it doesn't sound like you want to), you could create a script against PrintJobArrive with a block that checks time and then deletes the job (using Plugin.Result = false) if it is within the "not allowed" period. I'm not a huge fan of deleting jobs based on any criteria (except, maybe, that it is corrupt)...even with feedback to the user.
Hope this helps!