It's really amazing to me how many people don't realize how easy it is to schedule a reboot on a Windows server. Sure, you can just wait for Windows Updates to kick in once a month in the middle of the night, but sometimes you need a reboot tonight because you installed/changed something.
Here's how you do it (the easy way)...
Log onto your Windows server as an administrator.
Open up Scheduled Tasks. Create a new task. Set the application to "C:\windows\system32\shutdown.exe -r -t 0" (-r means reboot, -t means wait this many seconds -- zero in this case, so it will reboot immediately). If you have a misbehaving service that doesn't shut down in a timely fashion, you can add -f (force shutdown) but I'd recommend against this on a server unless you absolutely need it. Forcing a shutdown causes Windows to kill any task not responding to a graceful application exit. You may not want to open that can of worms on a production system!
Start the app in any folder, but I always use c:\windows\system32 since that's where the binary is.
Set the "Run As" user to NT AUTHORITY\SYSTEM. Doing this allows you to not have to worry about password expiration or account lockout since it's running directly under the system context. When the task asks for a password, leave it blank. Keep in mind only admins can delegate the scheduled task impersonation account to the system itself. (If anybody else could do it, Windows would have a massive security hole!)
After setting the account, you will notice the "Run As" field will be blank. This is a UI bug in the task scheduler. If you click OK and then re-open the task, it will show up as NT AUTHORITY\SYSTEM.
Now, set the time to reboot in the "Schedule" tab.
You are done!