There are several ways to accomplish what you want. I think the most direct way is to just set all your nodes to state=offline. This will let all running jobs complete and PBS will not start any new jobs.
The “global” reservation option you are thinking of would require you to craft a select statement that requests all nodes on your system and use pbs_rsub to submit the reservation. This will only be accepted if all jobs have finished before the reservation starts. PBS will only allow new jobs to start if they will finish before the reservation. This is somewhat tricky since if you have any nodes down now, you can’t include them in your reservation. We have since fixed this issue with something called a maintenance reservation that can be confirmed on any node regardless of state. This feature is not in 19.1.
The last option is to use dedicated time. You choose a time in the future after all jobs are finished and set dedicated time. Jobs will run if they do not pass over dedicated time. For this to work, jobs require a walltime requested.
I would suggest just offlining all your nodes. It’s the most simple and direct way to do what you want. It’s a little more wasteful since you can’t use the CPU cycles of nodes that end early for short jobs as you drain your system.