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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Выполнение скрипта после Logoff (http://forum.oszone.net/showthread.php?t=289016)

zhuk09 06-10-2014 13:21 2411705

Выполнение скрипта после Logoff
 
Всем добрый день!
Существует скрипт, который запускает 1С, запускается от локального пользователя (пробовал и от доменного). Но иногда пользователи не корректно завершает работу с 1С, и его сессия блокирует запуск скрипта (1C в монопольном режиме). Для этого прописал перед запуском скрипта Logoff
Код:

query session >session.txt
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff %%i
del session.txt
"C:\Program Files\1Cv77\BIN\1cv7.exe" enterprise /m /DP:\2013 /Nadmin /P2584868

но после этого в шедулере появляется ошибка 0xC000013A.
На это MS заявляет что http://support.microsoft.com/kb/308558
Цитата:

If the result code has the "C0000XXX" format, the task did not complete successfully (the "C" indicates an error condition). The most common "C" error code is "0xC000013A: The application terminated as a result of a CTRL+C".
Это не мой случай, иду дальше....
http://support.microsoft.com/kb/887572
Цитата:

When the Task Scheduler service runs a job by using a specific account, the Task Scheduler service tries to determine whether this account is also the account of the current logged-on user. If the account is that of the current logged-on user, the security context of the scheduled task is mapped to the security context of that user. This process directs scheduled jobs to that user's desktop.
Все эти пользователи имеют права безопасности - "Вход в качестве пакетного задания"
т.е как я понимаю ни от локального, ни от доменного пользователя запустить процесс не получится???
Посоветуйте как лучше сделать??!

zhuk09 06-10-2014 17:27 2411823

Что заметил:
если пользователь,из под которого выполняется задача, находится в состоянии Logon, и скрипт делает процедуру Logoff
Код:

query session >session.txt
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff %%i

то задача не выполняется!!!!
Но если в этот момент был Logoff, то задача успешно выполняется!)
С чем это может быть связано???!!

cameron 06-10-2014 22:16 2411913

Цитата:

Цитата zhuk09
Но если в этот момент был Logoff, то задача успешно выполняется!)
С чем это может быть связано???!! »

с тем, что скрипт логофит сам себя ;)
P.S. best practice - иметь служубные учтёные записи, например domain\scripts и запускать скрипты от имени этой учётной записи.

zhuk09 08-10-2014 11:13 2412542

Цитата:

Цитата cameron
с тем, что скрипт логофит сам себя »

но тогда как же быть с этим
Цитата:

Цитата zhuk09
Но если в этот момент был Logoff, то задача успешно выполняется!) »

Т.е если пользователь Logoff то скрипт от его имени выполняется, а если logon а потом logoff - то не выполняется. Тогда не пойму Вашего ответа, типо скрипт логофит сам себя. Где тогда логика исходя из выше описанного.
Плюс еще добавлял в скрипт следующее
Код:

query session >session.txt
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff %%i
del session.txt
timeout /t 15 /nobreak
"C:\Program Files\1Cv77\BIN\1cv7.exe" enterprise /m /DP:\2013 /Nadmin /P2584868

Цитата:

Цитата cameron
P.S. best practice - иметь служубные учтёные записи, например domain\scripts и запускать скрипты от имени этой учётной записи. »

Согласен, это хорошая практика)))

cameron 08-10-2014 11:21 2412547

zhuk09,
Цитата:

Цитата zhuk09
Согласен, это хорошая практика))) »

так начните использовать, а не ломать голову на пустом месте.

алсо, вместо логофа проще taskkill /F и всё, нет нужды ловить и логофить.

zhuk09 08-10-2014 12:26 2412585

Цитата:

Цитата cameron
так начните использовать, а не ломать голову на пустом месте. »

Т.е получается, что если будет
Цитата:

Цитата cameron
служубные учтёные записи, например domain\scripts »

которая всегда будет Logoff, то скрипт будет от нее запускаться. Так???

Цитата:

Цитата cameron
вместо логофа проще taskkill /F и всё, нет нужды ловить и логофить. »

на зеленом форуме писал, что есть два способа:
1. taskkill
2. Logoff

Тут хочу разобраться с проблемой и понять ее суть! Т.к не ясен механизм.
Изначально думал что не хватает время между logoff и началом выполнения скрипта для 1С. Далее поставил задержку в 15 секунд timeoute /t 15, и все равно скрипт от пользователя который Logon---Logoff не выполняется.
Так по чему же он выполняется когда пользователь только Logoff. Ну и соответственно по best prectice о который говорили, состояние для учетной записи как я понимаю тоже должно быть Logoff.

cameron 08-10-2014 13:15 2412610

Цитата:

Цитата zhuk09
которая всегда будет Logoff, то скрипт будет от нее запускаться. Так??? »

учётка будет заходить как пакетное задание, соот-но на терминальном сервере она не будет иметь статуса.
Цитата:

Цитата zhuk09
Изначально думал что не хватает время между logoff и началом выполнения скрипта для 1С. Далее поставил задержку в 15 секунд timeoute /t 15, и все равно скрипт от пользователя который Logon---Logoff не выполняется. »

может у вас там стоит что-нибудь типа "выполнять в контексте вошедшего пользователя" или "интерактивно" - мне сложно телепатировать.
я вам говорю 100% решение, которое позволяет не ломать голову над пустыми вопросами.

zhuk09 08-10-2014 15:42 2412666

Цитата:

Цитата cameron
может у вас там стоит что-нибудь типа "выполнять в контексте вошедшего пользователя" или "интерактивно" - мне сложно телепатировать. »

Где это должно стоять????! Если в шедулере, то нет там ни таких параметров!!!!!
Цитата:

Цитата cameron
я вам говорю 100% решение, которое позволяет не ломать голову над пустыми вопросами. »

Я с Вами согласен, но хочется разобраться в сути проблемы))).. так сказать докопаться до истины)!
Цитата:

Цитата cameron
учётка будет заходить как пакетное задание, »

в какую группу в AD ее надо добавить что бы учетная запись имела права на "Вход в качестве пакетного задания"???!
Просто на КД у меня в ГП DDCP определено, какие учетные записи имеют право на "Вход в качестве пакетного задания".
Как дела обстоят тогда с рядовым сервером???!

zhuk09 10-10-2014 08:52 2413375

Цитата:

Цитата cameron
P.S. best practice - иметь служубные учтёные записи, например domain\scripts и запускать скрипты от имени этой учётной записи. »

тут мне ответили по поводу запуска скрипта для 1С
Цитата:

Еще раз - у 1С 7.7 ЕСТЬ глюк, он известен и при этом - ошибок в скриптах НЕ будет. Ибо если 1С выдает хотя одно окошко на экран и нет залогиненного юзера, под которым этом все запущено - все, труба.
Т.е как я понимаю вариант с best practice отпадает(((((


Время: 20:59.

Время: 20:59.
© OSzone.net 2001-