Parando uma tarefa agendada com o WMIC

3

Eu preciso encontrar algum método para desativar uma tarefa agendada em uma máquina remota e esperando até que a tarefa tenha parado de ser executada se estiver em execução no momento. Eu gostaria de fazer isso através do WMIC, se possível. Isso será integrado em um processo em lote maior.

Isso é o máximo que eu recebi:

> wmic /node:%SERVER_NAME% /namespace:\root\cimv2 path Win32_ScheduledJob

Mas isso só retorna:

No Instance(s) Available.

Portanto, não tenho certeza se estou fazendo algo errado ou se talvez eu precise configurar algo no servidor.

    
por p.s.w.g 07.02.2014 / 00:24

2 respostas

2

Parece que WMIC suporta apenas trabalhos criados com WMIC ou criados com o comando AT ( origem - página inicial 205).

Essa é certamente a razão pela qual você obtém No Instance(s) Available.

Eu também sou um viciado em Powershell, mas se for um problema, você pode usar o utilitário schtasks (como você mencionou).

Para desabilitar remotamente uma tarefa:

schtasks /change /disable /TN "task name" /S server_fqdn /U domain\user /P password

A vantagem de desativar uma tarefa é que você tem certeza de que ela continuará em execução até que seja concluída, caso esteja em execução (somente execuções futuras serão desativadas nesse caso).

Se você quiser esperar até que a tarefa termine, você terá que esperar que o processo seja concluído. Para evitar o uso de outra ferramenta / comando de terceiros, você pode fazer isso com schtasks também, consultando o status da tarefa:

schtasks /query /TN "task name" /S server_fqdn /U domain\user /P password | finstr Running

(ps: note que não tenho certeza sobre o status "em execução" porque meu sistema operacional Windows é francês. Verifique isso de acordo com o seu idioma).

schtasks /END eliminará a tarefa imediatamente.

    
por 07.02.2014 / 02:50
2

Por que não o PowerShell? O WMIC é muito legal, mas não posso deixar de sentir que o PowerShell é agora a solução preferida para esse tipo de coisa:

Invoke-Command -ComputerName $Server -ScriptBlock { Disable-ScheduledJob -Name $Task }
    
por 07.02.2014 / 00:49