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.SampleJob
SampleJob
Parece que quando o trabalho é configurado com a Run whether user is logged on or not
opção marcada, Run with Highest privileges
ele 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
- Nome :
Observações
Se eu executar o trabalho com o, Run only when user is logged on
ele 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?
Respostas:
Para solucionar isso, aqui estão algumas coisas
User1
conta e, em seguida, efetue logon na máquina como aUser2
conta e verifique se um perfil foi criadoUser2
. Portanto, aC:\Users\User2
pasta deve existir.User2
execute a tarefa agendada ou, pelo menos, teste-aRun only when user is logged on
eRun with highest privileges
isso deve abrir a janela do prompt de comando quando for executada e mostrar erros, etc. que você não veria executando com aRun whether user is logged on or not
opçã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 not
eRun with highest privileges
tenha acesso. . .cmd.exe
) na máquina em que você executa a tarefaschtasks
partir da máquina em que você executa a tarefaschtasks
remotamente no servidor remoto em que você executa a tarefaOutros itens
Torne a
User2
conta 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.Comparar as diferenças de segurança com o
User1
eUser2
na máquina remota, grupos de segurança de domínio, etc. também.Recursos adicionais
fonte
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 job
direitos 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.
fonte