No Ubuntu eu descobri que o pm-hibernate do pmutils quase tem essa funcionalidade. Se você colocar isso no arquivo de configuração, ele sempre será reiniciado:
HIBERNATE_MODE=reboot
Tudo bem, mas eu não quero que o hibernate seja sempre reinicializado. Às vezes eu quero uma reinicialização e às vezes eu quero um desligamento. No entanto, o que isso significa é que eu deveria ser capaz de fazer um pouco de codificação e obter o pm-hibernate para rodar assim:
pm-hibernate --hibernate-mode=reboot
E isso será feito no Ubuntu. Ainda estou procurando respostas melhores, embora não exijam que eu faça qualquer trabalho, se possível. (E eu ainda não sei como fazer isso para o Windows)