Derek Harkin did some good work with his management pack that allows agents to be placed in maintenance mode from the agent itself simply by executing a script - no requirement for powershell, .net, etc and the user who executes the script does not need