OK, estou excluindo meus comentários anteriores e movendo meus comentários para uma resposta, já que no início meus comentários começaram como apenas conselhos gerais, mas eles se tornaram um claro esclarecimento com uma resposta exata.
Então eu testei com o Win7 e PS3, então estou usando a mesma plataforma que você.
Primeiramente, basta remover o -Command { ... }
do seu comando e, com isso, quero dizer:
schtasks /create /tn "restart test" /ru "domain\admin" /rp supersecret /sc once /st 11:35 /tr "PowerShell Restart-Computer -ComputerName server01 -force -wait"
Isso funciona. Mas o seu próximo problema é que você quer executar vários comandos, (1 reiniciar o computador e 2 enviar um email), e para isso eu recomendaria colocar os comandos em um arquivo de script ps1 e fazer a tarefa assim:
schtasks /create /tn "restart test" /ru "domain\admin" /rp supersecret /sc once /st 11:35 /tr "PowerShell C:\Scripts\restartAndEmail.ps1"
Eu não estou dizendo que você não poderia tecnicamente obter dois comandos do Powershell para rodar em uma única chamada ao schtasks, mas é pesado e você tem que começar a se preocupar com caracteres que precisam ser escapados a linha de comando, como o caractere |
, etc., e fica mais fácil de quase todas as perspectivas apenas usar um arquivo ps1.
É importante que você especifique o caminho completo para o script. O diretório de trabalho atual da tarefa agendada provavelmente não será o mesmo que o caminho do script, portanto o caminho relativo não o cortará.
Na verdade, quando estou fazendo tarefas agendadas para scripts do Powershell, normalmente incluo o caminho completo para o exe Powershell também, só para ter certeza. Aqueles que já demonstramos aqui que você não precisa incluir o caminho totalmente qualificado para o Powershell.exe neste cenário.