Agendador de tarefas - lote “Executar se o usuário está conectado ou não” não está funcionando

2

Criei um arquivo em lotes ( EnableDisable.bat) que desabilitará um trabalho do Agendador de Tarefas do Windows ( ) em um sistema local, se um trabalho com o mesmo nome ( ) já estiver ativado e em execução em outro sistema remoto.SampleJobSampleJob

Parece que quando o trabalho é configurado com a Run whether user is logged on or notopção marcada, Run with Highest privilegesele simplesmente não funciona e o motivo é difícil de determinar e não tenho certeza de como solucionar o problema.


Arquivo em lote

for /f "tokens=1" %%j in ('schtasks /Query /S [servername] /TN "SampleJob" /NH ^| findstr "Ready ^| Running"') do schtasks /Change /Disable /TN "%%j"

Nota: O sistema remoto é referido como [ servername] e será substituído pelo nome real do servidor remoto, quando necessário.


Configurações de trabalho do Agendador de tarefas do Windows

  • Este arquivo em lotes está configurado como um trabalho do Agendador de Tarefas do Windows
    • Nome :EnableDisableJob
    • Opção de segurança :Run whether user is logged on or not
      • Run with Highest privileges

Observações

Se eu executar o trabalho com o, Run only when user is logged onele parece funcionar muito bem sem nenhum problema. No entanto, parece que quando tento executá-lo com a outra opção, e como essa conta não está conectada, ela não pode ser executada quando for o caso.


Questão

Como solucionar esse tipo de problema e por onde devo começar o processo?

t_venuga
fonte
Eu tenho um problema semelhante. superuser.com/questions/1418031/… Você encontrou uma solução?
Paul

Respostas:

0

Para solucionar isso, aqui estão algumas coisas

  1. Efetue o logoff da máquina em que você executa esse processo como com a User1conta e, em seguida, efetue logon na máquina como a User2conta e verifique se um perfil foi criado User2. Portanto, a C:\Users\User2pasta deve existir.
  2. Enquanto você estiver conectado a essa máquina, User2execute a tarefa agendada ou, pelo menos, teste-a Run only when user is logged one Run with highest privilegesisso deve abrir a janela do prompt de comando quando for executada e mostrar erros, etc. que você não veria executando com a Run whether user is logged on or notopção Se você vir um erro de "acesso negado" ou algo dessa natureza, haverá um problema de permissão.

Emissão de permissão

Você deseja garantir que a conta de usuário à qual você executa o trabalho agendado do Agendador de Tarefas com Run whether user is logged on or note Run with highest privilegestenha acesso. . .

  1. execute o prompt de comando ( cmd.exe) na máquina em que você executa a tarefa
  2. executar a schtaskspartir da máquina em que você executa a tarefa
  3. executar schtasksremotamente no servidor remoto em que você executa a tarefa

Outros itens

  1. Torne a User2conta um administrador local na máquina na qual você executa a tarefa temporariamente, faça logoff e volte à máquina e tente novamente excluir esses problemas de permissão da máquina local.

  2. Comparar as diferenças de segurança com o User1e User2na máquina remota, grupos de segurança de domínio, etc. também.


Recursos adicionais

Pimp Juice IT
fonte
0

Todas as sugestões acima do Pimp Juice IT são ótimas. Vou mencionar uma outra coisa aqui.

Você precisa garantir que a conta do usuário que está executando a tarefa tenha Log on as batch jobdireitos de usuário. Aqui está o documento do MS: link .

E aqui está um link sobre como definir isso na Política de Segurança Local: link .

Você também pode fazer isso via GPO.

Obviamente, como sugeriu a Pimp Juice IT, se o usuário já é um administrador local, ele pode já ter esse direito.

Adilio
fonte