As we begin another academic year, this time in a pandemic, we're providing more virtual/remote desktop access to computer lab and public-access workstations for those in need. We're starting by using the machines taken out of general service due to physical distancing requirements. These workstations are still powered on, but we've removed their keyboards, mice, and fiddled with their monitor configurations (along with basic signage) indicating they are not in service (at the console/in person).
There's one concern about having these machines in their current configurations: power.
But, I'm Helping!!
In the past we've had some very well-intentioned students who have periodically gone around and powered off workstations in the name of energy conservation. While energy conservation is near and dear to me, the unfortunate reality is that doing so often interferes with our maintenance windows in ways that don't help the common good. This is one of the reasons we purchase lab workstations with energy-efficient power supplies and configure some very specific sleep settings which generally work with our maintenance windows.
More acutely this summer we've seemed to be dealing with a number of power failures (outages) in town/around campus. Normally this isn't such a big deal, but with over half of our normal computer lab/publicly-access machines out of normal working order but still required for virtual/remote access, we have the additional need for techs to go around and power up machines after an outage. That is a new angle for this year, and something that nobody wants to spend time doing.
A Simple Solution!
Due to other reasons well outside of our control, much as it would be nice to have, Wake-On-LAN isn't an option in our broad environment. So we're in a situation requiring something far more basic: a scheduled, recurring power-up time. Fortunately, Dell makes this pretty simple with a BIOS/firmware option. We already use Dell's CCTK (Command | Configure) when we build out machines, so if there's a BIOS option to set...most likely this can be scripted out!
Hooray! No needing to visit a couple hundred machines to fiddle with a BIOS setting (what could go wrong?)!
Normally we'd run the
cctk.exe command in WinPE during a task sequence, but a task sequence is not required for this situation. I pulled together a simple Powershell script deployed as an application (also provides some logging for detection rules and diagnostics if/as necessary). The CCTK command itself is a simple one-liner:
.\cctk.exe --autoon=weekdays --autoonhr=06 --autoonmn=15 --valsetuppwd=SuprSecret
This particular command will set the workstation to auto-power on the workstation weekdays at 6:15 a.m.
We have a firmware password set to protect system configurations, and in order to actually run this command in production we need to pass the
--valsetuppwd value to the script as well. For example's sake, our credential is set to
A word of caution with the BIOS password, though: outright (as presented above) this will be stored and passed in plaintext; be sure to understand the risk and consequences. There are a number of ways to handle this in ways that offer less visibility: choose carefully.
The solution to schedule power-on for our desktop fleet in scope is the simplest way for us to reduce technician time, while ensuring our virtual access pool remains as available in the event of power outages or other issues. This particular mechanism also allows us to pivot quickly (it scales fine) should we need to start rolling additional workstations into scope. Not everything has to be super complex!
Headline image via giphy