Eu já testei isso aqui antes, você deve adicionar um atraso (45 a 60 segundos) ao acionar uma tarefa na inicialização do Windows.
Quando acionado pela inicialização, o acionador carrega a tarefa antes que a área de trabalho esteja em execução (antes de todas as dependências do Windows serem inicializadas), o que faz com que seu script nunca seja executado (especialmente quando você deve inserir uma senha para abrir a área de trabalho).
Ao acionar por logon, a tarefa será carregada após a área de trabalho ser completamente carregada (quando uma sessão de usuário é criada, após a inicialização do sistema), e é por isso que ela funciona sob essa condição.