Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Windows Server 2008/2008 R2 (http://forum.oszone.net/forumdisplay.php?f=97)
-   -   Task Scheduler - не запускаются пакетные файлы (http://forum.oszone.net/showthread.php?t=130179)

frozer 28-01-2009 17:44 1022525

Task Scheduler - не запускаются пакетные файлы
 
Добрый день.

При миграции на Windows 2008 столкнулись с проблемой выполнения пакетных файлов (cmd,bat) из Task Scheduler'а Windows 2008. Последовательность действий:
Способ 1:
1. Логинимся пользователем от которого будет запускаться скрипт
2. Создаем задание, выставляем триггер запуска каждый час
3. Добавляем Action (Start a program) в виде:
Program/script - "c:\windows\system32\cmd.exe"
Additional parameters - /C c:\scripts\upload.cmd
4. Запускаем задание, каталог (куда должен быть сохранены данные из таблицы пуст), визуально задание переходит в состояние Running, тут же делаем обновление окна, задание уже в состоянии Ready

Скрипт такого содержания:
Код:

@echo off
SET FTPPASS=d41d8cd
SET FTPUSER=ftpmaster
SET FTPDIR=/
SET FTPSERV=www.site.local
SET FILE=C:\scripts\output\servicelists.csv
"C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\bcp.exe" RETAIL.dbo.SERVICE_INQUIRY_VIEW_prepared out c:\scripts\output\servicelists.csv -fc:\scripts\bcp.fmt -Saxsql1 -T 
c:\scripts\ncftpput -E -u %FTPUSER% -p %FTPPASS% -U 113 %FTPSERV% %FTPDIR% %FILE% >> c:\scripts\replication.log

Способ 2 (начну сразу с п.3):
3. Добавляем Action (Start a program) в виде:
Program/script - "C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\bcp.exe"
Additional parameters - RETAIL.dbo.SERVICE_INQUIRY_VIEW_prepared out c:\scripts\output\servicelists.csv -fc:\scripts\bcp.fmt -Saxsql1 -T
4. Запускаем задание, каталог (куда должен быть сохранены данные из таблицы пуст), визуально задание переходит в состояние Running, тут же делаем обновление окна, задание уже в состоянии Ready

Способ 3:
1. Логинимся пользователем от которого будет запускаться скрипт
2. Запускаем cmd.exe
3. Набираем "c:\scripts\upload.cmd
4. все отрабатывает нормально, файлы создаются там где надо, и отправляются согласно инструкциям в скрипте.

Окружение:
Пользователь не администратор, на уровне политики безопасности разрешен logon as batch job, является владельцем каталога куда должны записываться данные. Кратковременное наделение его правами администратора ситуацию не изменило - cmd и bat скрипты не запускаются. Журнал событий по данному заданию благостен - "Task Completed successfully ..."

А вот теперь самое интересное - если запускать к примеру "C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn\isql.exe" (оптимизация баз и т.п.) то все нормально отрабатывает под этим же пользователем в автоматическом режиме по расписанию. Из скрипта (по тому же расписанию) - ни в какую.

И еще - на старом сервере (Windows 2003 R2) все эти скрипты работают как надо. Для очистки совести, поставили свежий 2003 R2 - работают.

Вторая неделя гугления пока ничего не дала, точнее в паре форумов вопрос по невыполняющиеся скрипты задавался, но ответом вопрошающе не получили.

Заранее спасибо.

Delirium 29-01-2009 02:03 1023068

Ну как вариант могу предложить следующее:
1. Проверить NTFS права на cmd.exe
2. Создать простейший bat файл, который будет просто слать сообщение или писать чего нибудь в текстовик. Запустить. Если обрабатывает корректно, значит проблема именно в bat файле. Проверьте права доступа на папки, в которые пишет bat файл. Проверьте права доступа на ftp.

frozer 29-01-2009 10:29 1023224

1. Проверили в первую очередь, права есть.
2. Делали, не работает. Права на каталог есть, более того - пользователь запускающий скрипт является владельцем каталога. До ftp процесс явно не доходит.

Вообще, есть определенное сомнение, что Task Scheduler передает строку параметров командному процессору. Сегодня буду звонить в ТП Microsoft, послушаем, что они скажут...

chervonec 01-05-2010 18:26 1404732

frozer, Подскажи, пожалуйста, как же все таки решилась проблема. Пол дня мучаюсь. Ерунда какая-то. Ничего не выходит. :(((

minion 07-05-2010 10:33 1408511

chervonec,

Я думаю что решилось все таки добавлением прав на cmd.exe именно пользователю.

Об этом говорил Derlium, а если не поможет то filemo и regmon вам в помощь, хотя вроде бы regmon заменена програмой procmon из набора sysinternals.

Pavel78rus 15-09-2010 17:38 1496041

Лучше поздно, чем никогда.

Столкнулся с такой же проблемой: не запускаются batch files from Task Scheduler 2008 R2.
Решение нашел здесь:
http://www.vistaheads.com/forums/mic...-bat-file.html

Все дело в волшебных кавычках.

Применительно к первому посту из этой ветки, решение должно быть таким:

Program/script - "c:\windows\system32\cmd.exe" - в кавычках.
Additional parameters - "/C c:\scripts\upload.cmd" - в кавычках.
Start in - c:\scripts\ - БЕЗ кавычек.

Мне эти кавычки помогли.

layder 24-03-2011 08:49 1642562

Мне помогло вот это:

In the Task Scheduler for this task, do you have the "Run with highest
privileges" option enabled in the General Tab?

просто установил эту галочку. А cmd.exe вообще не указывал, сразу выбрал путь к скрипту, безо всяких кавычек и не указывал ни дополнительных параметров, ни окружения, в котором нужно запускать скрипт.

zero55 24-03-2011 11:10 1642674

Цитата:

Цитата layder
Мне помогло вот это:
In the Task Scheduler for this task, do you have the "Run with highest
privileges" option enabled in the General Tab? »

выполнение заданий с привелегиями Системы изначально неправильно т.к.
1. это упрощает компроментацию системы (батник можно подменить)
2. в случае ошибки отладка почти невозможна (когда дофига привелегий ошибку можно выловить только через filemon)

Нужно запускать задания ТОЛЬКО под записями не имеющими полномочий.
В данном случае нужно
проверить права
запустить из под пользователя в интерактивном режиме (желательно записать что происходит с помощью Filemon)

по результатам принимать решения

gadkin 15-05-2012 21:22 1916577

дабы не создавать тему с одинаковым названием:

имеется сервер 2008 R2 sp1 в домене.
появилась проблема: не запускаются батники по шидулеру, причем ни по расписанию, ни принудительно. Интересно, что имеются старые задачи, которые преспокойно запускаются. Отдельно батник отрабатывает.

Что предпринимал для решения:
1. пробовал подставлять простые програмки для запуска: блокнот и простой скрипт типа "copy D:\путь\test.bat D:\". Блокнот запускается; меняю в этой же задаче блокнот на батник - хрен.
2. запускал скрипт от дефолтного доменного админа с наивысшими привелегиями (хотя казалось бы куда выше)
3. Проверял доступ по путям и параметр "логиниться в качестве батника"
4. пробовал экспортировать старую работающюю задачу и импортировать с изменением имени задачи и целевого батника
5. и это пробовал:
Program/script - "c:\windows\system32\cmd.exe" - в кавычках.
Additional parameters - "/C c:\scripts\upload.cmd" - в кавычках.
Start in - c:\scripts\ - БЕЗ кавычек.

уже не знаю что думать...

Bycufal 30-01-2013 20:01 2078774

Сутки гугления и проблема в том, что нада батник в Program files поместить. В назначеном задании разрешается "выполнение программ" только в этой дериктории. Ох вы не представляете как бошка уже с этим батником опухла.


Время: 04:02.

Время: 04:02.
© OSzone.net 2001-