Sim, isso é um problema terrível. A resposta escolhida não funciona mais. Estou usando o log de eventos como uma solução:
-
Registre o acionador 'em um evento' para sua tarefa, por exemplo "Aplicação", "Aplicação", 30204 (o seu número mágico para esta tarefa)
-
Registre um evento com este id. Para fazer isso a partir de linha de comando / lote, eu escrevi app manequim de 3 linhas .Net.
using (var eventLog = new EventLog("Application"))
{
eventLog.Source = "Application";
eventLog.WriteEntry("EventLogTriggeer", EventLogEntryType.Information, int.Parse(args[0]));
}
No meu caso, resolvi a segurança de implantações automatizadas no ambiente de preparação. O GitHub faz uma solicitação POST para o meu backend node.js que é executado sob a identidade do AppPool do IIS com acesso r / a à pasta. Ele verifica a assinatura de hash e executa:
// delegate to priviledged task
exec('%SystemDrive%\apps\EventLogTrigger 30204', (err, stdout, stderr)=> /* ... */);
A parte restante é feita por meio de uma tarefa agendada que executa o script de implantação sob o usuário que tem permissões para modificar arquivos no inetpub. As tarefas são configuradas individualmente para cada servidor e cada website, portanto, o caminho é codificado:
C:\inetpub\ta\autodeploy.cmd