I wouldn't really consider it a bodge by doing it via those Powershell commands. Whenever you have a process which turns something on and off, whether via your own script or via some built in functionality, there's always an inherent risk that the part which turns it back on it is going to fail at some point. The important thing is implementing it in a robust way so that when it does fail it's clear why it's failed. You can pretty much guarantee if scheduling access to ActiveSync or OWA were in the admin panel it would just be calling these Powershell commands behind the scenes anyway.