1

У меня есть исполняемый файл, который должен быть запущен на диске E:/, Windows Server 2012 установлен на диске C:/. Я создал запланированное задание с полным путем к целевому исполняемому файлу (E:/stuff/target.exe) и рабочим каталогом (E:/stuff/).

Это не удается, планировщик задач сообщает мне, что имя каталога неверно. Если я удаляю рабочий каталог, он говорит мне, что доступ запрещен. Это не может быть правдой. Весь диск является общим и имеет права доступа к файлам "каждому" с полным контролем. Учетная запись, выполняющая задачу, может выполнить ее (я могу сделать это через cmd.exe). Sidenote: я перепробовал все перестановки пути, используя обратную косую черту, прямую косую черту, кавычки и не кавычки. Это не связано с KB2452723.

Я попытался иметь командный файл, который использует "CD", чтобы установить рабочий каталог E:/stuff/, а затем вызвать программу, которая работает, когда я запускаю ее. К сожалению, при запуске через планировщик задач он никогда не меняет рабочий каталог и пытается вызвать target.exe с системного диска (там, где его нет).

Я также попытался создать символическую ссылку («mklink /D») из C:/temp / в E:/ stuff /, в тщетной надежде, что смогу обмануть планировщик задач, но он не пойдет по ссылке, и говорит мне, что каталог не может быть найден.

Я не могу понять, почему планировщик задач будет так тяжело бороться с этим, и какова будет правильная практика, чтобы заставить это работать. Кто-нибудь успешно запустил файл на несистемный диск с планировщиком задач?

2 ответа2

5

Несколько часов ударившись головой о стену, я нашел решение. Похоже, что в Server 2012 запланированные задачи не могут касаться каталогов, которые не имеют явных разрешений для учетной записи, которую вы используете для запуска файла. Неважно, если эта учетная запись находится в группе, которая разрешена в каталоге.

Например, если я хочу запустить E:/stuff/target.exe, используя учетную запись THINGS\svcAccount, то THINGS\svcAccount должен быть явно предоставлен полный контроль над E:/stuff для запуска. Я предполагал, что если бы THINGS\svcAccount находился в группе администраторов, а группа администраторов имела полный контроль над E:/stuff, она бы унаследовала разрешения. Server 2012 не делает этого.

Кажется, что это применимо только к запланированным задачам - запуск командного окна или окна powershell, поскольку THINGS\svcAccount работает точно так, как ожидается.

3

Сопоставления дисков не видны службами или задачами. Вместо этого используйте UNC-путь.

\\server\share\directory\someprogram.exe

Другой вариант - запланировать запуск командного файла и включить в него сопоставление дисков. В пакетном файле проще использовать pushd/popd для сопоставления, не беспокоясь о том, какую букву он получает (pushd может сопоставляться с буквой диска и переключаться на эту букву диска, popd может не отображаться и возвращаться к предыдущей букве диска).

pushd \\server\share
\directory\someprogram.exe
popd

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .