Планировщик заданий - Пакет «Запустить, вошел ли пользователь в систему или нет» не работает

1860
t_venuga

Я создал пакетный файл ( EnableDisable.bat), который отключит задание Windows Task Scheduler ( SampleJob) в локальной системе, если задание с таким же именем ( SampleJob) уже включено и выполняется в другой удаленной системе.

Кажется, что когда задание настроено с Run whether user is logged on or notопцией, отмеченной вместе с тем, Run with Highest privilegesчто она просто не работает, причину трудно определить, и я не уверен, как ее устранить.


Пакетный файл

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

Примечание . Удаленная система называется [ servername] и при необходимости заменяется фактическим именем удаленного сервера.


Конфигурации заданий планировщика задач Windows

  • Этот пакетный файл настроен как задание планировщика заданий Windows.
    • Имя :EnableDisableJob
    • Вариант безопасности :Run whether user is logged on or not
      • Run with Highest privileges

наблюдения

Если я запускаю работу с, Run only when user is logged onэто, кажется, работает нормально без каких-либо проблем. Тем не менее, похоже, что когда я пытаюсь запустить его с другой опцией, и, поскольку эта учетная запись не вошла в систему, она не может работать, когда это так.


Вопрос

Как устранить неполадки такого рода и с чего начать этот процесс?

2

2 ответа на вопрос

0
Pimp Juice IT

Чтобы устранить это, вот несколько вещей

  1. Выйдите из системы, на которой вы выполняете этот процесс, как с User1учетной записью, а затем войдите в систему с User2учетной записью и убедитесь, что для нее создан профиль User2. Так что C:\Users\User2папка должна существовать.
  2. В то время как вы вошли в эту машину, как User2запускать запланированное задание или, по крайней мере, проверить его Run only when user is logged onи, Run with highest privilegesи это должно появиться окно командной строки при запуске и показать ошибки и т.д., которые вы не видели бы запустить его с Run whether user is logged on or notопцией. Если вы видите ошибку «отказано в доступе» или что-то в этом роде, значит, существует проблема с разрешением.

Разрешение на выдачу

Вы хотите, чтобы обеспечить учетную запись пользователя, запустить планировщик заданий запланированного задания с Run whether user is logged on or notи Run with highest privilegesимеет доступ., ,

  1. запустить командную строку ( cmd.exe) с компьютера, на котором вы запускаете задачу
  2. запустить schtasksс машины, на которой вы запускаете задачу
  3. запустить schtasksудаленно на удаленном сервере, с которым вы запускаете задачу

Другие предметы

  1. Сделайте User2учетную запись локальным администратором на компьютере, на котором вы временно запускаете задачу, а затем выйдите из системы и вернитесь на компьютер, а затем повторите попытку, чтобы исключить проблемы с разрешениями на локальном компьютере.

  2. Сравните различия в безопасности с User1и User2на удаленном компьютере, в группах безопасности домена и т. Д.


Дополнительные ресурсы

0
Adilio

Все предложения от Pimp Juice IT великолепны. Я упомяну еще одну вещь здесь.

Вы должны убедиться, что учетная запись пользователя, выполняющего задачу, имеет Log on as batch jobправа пользователя. Вот документ от MS: ссылка .

А вот ссылка на то, как установить это из локальной политики безопасности: ссылка .

Вы также можете сделать это через GPO.

Конечно, как предположил ИТ-специалист Pimp Juice, если пользователь уже является локальным администратором, он может уже иметь это право.