Executando um arquivo em lotes a partir do Agendador de tarefas sem que o usuário esteja conectado


10

Estou tentando executar um arquivo em lotes no Windows 7 no Agendador de tarefas. Eu posso executar bem o arquivo em lotes se executá-lo no prompt de comando.

Se eu executá-lo no Agendador de tarefas para executar apenas quando o usuário estiver conectado, a tarefa será executada sem problemas. No entanto, quando é executado quando o usuário não está conectado, o Agendador de Tarefas parece estar executando o arquivo, mas nada acontece.

Tentei alterar o arquivo em lotes para nada além da linha a seguir para garantir que não seja por causa do conteúdo do arquivo em lotes:

echo "success" >> c:\temp\test.log

e isso não funciona. Alguma ideia? Eu tenho que ser executado com os privilégios mais altos e com uma conta de administrador que tenha permissões totais para o arquivo em lotes e a pasta em que o arquivo está sendo gravado.


Qual conta você está usando para executar a tarefa? Quais gatilhos você definiu?
Camilohe 5/11

Tente executar a tarefa como uma conta de serviço do sistema.
precisa saber é o seguinte

Respostas:


20

CALENDÁRIO DE TAREFAS: O SCRIPT DO LOTE AGENDADO NÃO FUNCIONA

Propriedades do Agendador de Tarefas. . .

No Windows Task Schedulerno trabalho Properties (veja a maioria das capturas de tela na parte inferior) na. . .

  • 1. General , verifique se as opções abaixo estão marcadas / desmarcadas ou desmarcadas, conforme mostrado na Tela de impressão A

    • Desmarque Run only when user is logged on
    • Verifica Run whether user is logged on or not
    • Verifica Run with the highest privileges
  • 2. Conditions guia, verifique se as opções abaixo estão selecionadas , marcadas ou desmarcadas, conforme mostrado na Tela de impressão B

    • Verifica Wake the computer to run this task
  • 3. Actions guia, clique Edite verifique se a opção Start in (optional)está definida como mostrado no exemplo abaixo ( NÃO coloque aspas duplas) para o caminho completo que indica onde o script em lote está localizado SEM uma barra invertida final " \" Tela de impressão C


CONSIDERAÇÕES DE SEGURANÇA

  • Depois que você pressionar OK( 2. acima), a credencial será solicitada para ser executada como, e essa credencial é o que precisará acessar EXECUTEo arquivo em lotes onde ele existe e também precisará acessar para fazer o que o arquivo em lotes estiver executando. que você escreveu.

  • Talvez seja melhor configurar uma conta de usuário de serviço / proxy estático para esse processo e usar suas credenciais para executá-lo. Você precisaria garantir que sua senha seja forte e configurada para nunca expirar - e precisa acessar EXECUTEo lote e executar o que o processo de script em lote estiver executando e quaisquer comandos e recursos, etc. utiliza também.

  • Parece que a opção que Run whether user is logged on or notvocê DEVE verificar Run with highest privilegesé realmente executada conforme o esperado no Agendador de tarefas.

Verificação de erros

  • Se houver um problema com o script em lote real, mas o Agendador de Tarefas do Windows realmente o executar para executá-lo, mas a lógica do script em lotes for errada, etc. por qualquer motivo, o Agendador de Tarefas talvez não veja essa falha nesse nível. De sua perspectiva (por padrão, na maioria das vezes), ele está executando o arquivo em lotes, desde que possa executá-lo e tenha acesso a isso, seu trabalho é realizado com êxito.

  • Adicione verificação de erro ou log à lógica do script em lote para capturar (ou solucionar problemas ) problemas nesse nível, incluindo a garantia de que o contexto de segurança que o agendador em lote o executa como tenha acesso adequado aos comandos, recursos etc., nos quais o script em lote é executado.


Considerações sobre Diretiva de Grupo

VERIFIQUE A POLÍTICA DO GRUPO E LIGUE COMO PERMISSÕES DE TRABALHO DE LOTE

Resposta: No Windows, esse privilégio é concedido pela Diretiva de segurança local ou de domínio . Para fazer isso usando a Diretiva de Segurança Local , siga estas etapas.

  1. No Painel de Controle , abra Ferramentas Administrativas e Diretiva de Segurança Local .
  2. Abaixo de Configurações de segurança , abra Políticas locais e realce Atribuição de direitos do usuário .
  3. Localize Logon como um trabalho em lotes . Abra as propriedades e adicione qualquer usuário que precise desse direito.
  4. Quando terminar, salve as alterações e feche a janela Configurações de segurança local .

Suas alterações devem entrar em vigor imediatamente. Para fazer alterações na Diretiva de Segurança do Domínio, em um controlador de domínio, use o utilitário Diretiva de Segurança do Domínio no Painel de Controle


Lógica de script em lote com unidades mapeadas ou caminho UNC completo e problemas. . .

Se o seu script estiver referenciando uma unidade de rede mapeada, mas você desejar Run whether the user is logged on or not, nesse contexto, o mapeamento da unidade pode não estar lá para o processo em lote fazer o que é esperado.

Se possível, use UNCcaminhos na lógica de script em lote em vez de uma letra de unidade mapeada para evitar problemas. Caso contrário, pode ser necessário usar PUSHD \\ServerName\ShareNameno início do processo em lote e depois POPDno final do processo em lote. Você pode mapear a unidade NET USE X: \\ServerName\ShareNameno início do processo em lote e, em seguida, desconectar a unidade NET USE X: /DELETEno final do processo em lote.


OUTRAS

  • MS HOTFIX (KB977353): O item de preferência Tarefa Imediata da Diretiva de Grupo não é executado em um computador cliente que esteja executando o Windows 7 ou Windows Server 2008 R2

  • Veja a Settingsguia da tarefa agendada e a opção listada como Stop the task if it runs longer than:. Se essa opção estiver marcada e o período for menor que um script em execução, o Agendador de Tarefas eliminará a tarefa mais cedo e, portanto, você poderá não obter os resultados esperados. Isso é outra coisa a verificar ao solucionar problemas apenas por precaução.

    insira a descrição da imagem aqui

  • Na Triggersguia da tarefa agendada, quando você seleciona a Editopção, certifique-se de definir a Start:hora e a data de um valor que NÃO já foi passado. Certifique-se de que essa data e hora estejam definidas como as de um valor no futuro . Caso contrário, você poderá perceber que o trabalho indica que está programado para ser executado no próximo horário agendado, conforme o esperado; no entanto, ele não é executado pelo Agendador de tarefas nem a guia Agendador de tarefas History mostra que ele é executado (porque não é). Simplesmente edite o gatilho e atualize-o com uma data e / ou hora futura para resolver esse problema, se você estiver enfrentando.

    insira a descrição da imagem aqui


Telas de impressão

Imprimir tela A

insira a descrição da imagem aqui

Print Screen B

insira a descrição da imagem aqui

Print Screen C

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.