O stop-computer precisa do sinalizador -force para funcionar, acho que quando estou executando como um processo. Mudar para stop-computer -force
resolveu o problema.
Eu tenho uma tarefa em execução em uma configuração do servidor Hyper-V como tal:
schtasks /CREATE /TN AutoShutdown /RU "SYSTEM" /TR "Powershell \"C:\AutoShutdown.ps1\"" /SC ONSTART
Ele roda corretamente (até onde eu sei), mas o script tem uma linha para desligar o computador e isso nunca acontece.
start-sleep 120
while (1) {$vm = get-vm; if ($vm.state -ne "Running") {stop-computer} else {"Running..."; start-sleep 10}}
Se eu executar a tarefa no espaço do usuário:
schtasks /CREATE /TN AutoShutdown /TR "Powershell \"C:\AutoShutdown.ps1\"" /SC ONLOGIN
Funciona perfeitamente.