I ended up writing a powershell script to handle this. If it's a VM, it seems to be most reliable to unlock the session to desktop via tsdiscon, wait 2-5 seconds, then use powershell commands to change the screen resolution. This can be done with a hybrid batch/powershell combination, or entirely in powershell. The good news is, you only need to do it once. The semi-bad news, is that this will require administrator privileges in order to run.
On most of our VMs, we've found that the maximum resolution we can set it to is 1200x800.