Как назначить задание в "Планировщик заданий" при выключении компьютера ? #582949


#0 by Ткачев
Нужно перед выключением компьютера сделать запуск батника, в планировщике нашел только "При запуске системы".
#1 by XLife
кнопка "Я"?
#2 by Ткачев
Пробовал, не нашел ответа
#3 by Sinoptic
Команда shutdown, не предлагать?
#4 by Хоменко Валерий
C:WINDOWSsystem32shutdown.exe -s
#5 by andrewks
у тебя заголовок и содержание расходятся в разные стороны. уточни конкретно, что именно надо
#6 by Ткачев
Нет, мне не надо его выключать, мне надо что бы когда через "Пуск-Выключение компьютера", или по кнопке питания, отработался сначала батник или скрипт.
#7 by Shurjk
Сделай пакетный файл и через него выключай, а так запрети выключать.
#8 by Противный
сделай эту задачу на загрузку компа... ;)
#9 by Ткачев
Там есть в тригеррах "При событии", журналы, источники, код события, вот видимо тут надо копать, вот только я не знаю в какой журнал он пишет что комп надо выключить.
#10 by Rie
Запускаешь gpedit.msc Конфигурация компьютера - Конфигурация Windows - сценарии.
#11 by Ткачев
Не вариант, надо именно при выключении компа, событие "Отключения пользователя" тоже не пойдет, при перезагрузке оно тоже срабатывает.
#12 by dk
можно написать свою прогу, которая будет висеть в памяти и сканировать список процессов, если определенный процесс завершился - значит комп вырубается можно своих процессов назапускать несколько штук и как только их кол-во уменьшилось - значит комп вырубается хотя есть 2 проблемы 1. процессы могут гасить не только при завершении 2. период опроса процессов - можно не успеть отловить событие - усе закроют либо тупо ловить собственное закрытие процесса, а не опрашивать список текущих
#13 by Rie
Зачем? В - штатный способ.
#14 by Ткачев
Ищу как сценарии писать
#15 by andrewks
жесть...
#16 by dk
еще можно поковыряться в nncron - говорят мощный планировщик
#17 by ЧеловекДуши
Зачем тебе это? Долго играющий код все ровно не успеет отработать :)
#18 by ЧеловекДуши
Кстати можно вообще запретить выключать ПК :)
#19 by Rie
Посмотри здесь:
#20 by smaharbA
gpedit если позволяет ос
#21 by smaharbA
+ либо повешать постоянного получателя событий
#22 by dk
да, со сценариями интересно, не знал
#23 by Ткачев
Оно и при перезагрузке работает, как то можно проверить, что у нас идет выключение или перезагрузка ? Нет, время выключения увеличивается на время архивации.
#24 by smaharbA
1074 1076
#25 by Ткачев
Куда это поставить ?
#26 by Ковычки
в gpedit.msc Конфигурация компьютера - Административные шаблоны - Система (не раскрываем) - Включить свойство данных состояния системы слежения за завершением работы - Включено пишем скрипт, запускаем единожды (модифицируем или обуниверсаливаем и/или упрощаем под себя), после перезагрузки повторно запускать не надо.
#27 by Ткачев
У меня WIN7x64, там нет такого "Включить свойство данных состояния системы слежения за завершением работы"
#28 by Ткачев
Журнал событий "System-User32" Код события: 1074, Тип выключения: Выключение компьютера Как в скрипте прочитать последнею запись из журнала и при сравнении Кода и Типа запустить архивацию ?
#29 by Ковычки
в не скрипт, а создание постоянного поставщика/получателя события
#30 by Ковычки
к все там есть
#31 by Ковычки
а по поводу "фильтровать" тебе этого не надо, выполняться активскрипт будет при появлении события в журнале (можно сделать именно по самому событию), ну уж если надо - адо + обратный отсчет
#32 by Ткачев
Я так уже делал, он не останавливается на нем, скрипт запускает и дальше комп выключает.
#33 by Ковычки
еще раз, в не скрипт, а скрипт создает постоянного поставщика, в качестве "обработчика" можно использовать как активскриптконсумер, так и командлайнконсумер а как заставить ждать завершения работы обработчика, или дать отмену выключения/перезагрузки описано в сапорте микрософт
#34 by Ткачев
Букав сильно много... Я сделал так: strComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\" & strComputer & " ootcimv2") Set colLoggedEvents = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent Where Logfile = 'System' and SourceName='User32'" _ & "and (EventCode = '1074' or EventCode = '1076')") For Each objEvent in colLoggedEvents If InStr(objEvent.Message, "Тип выключения: Выключение питания") > 0 Then ' Тут формируется имя файла из даты и времени, я копипастить не стал NameFile = "Arc" Set WshShell = CreateObject("Wscript.Shell") WshShell.Run("c:Progra~17-Zip7z.exe a -mx7 -r0 -x!*.cdx D:ArchivDB_" & NameFile & ".7z d:1CDB", 1, True) End If Exit For Next Помогите избавиться от For, в запросе если делаю TOP 1 или Select 1, начинает ругаться на For, как сделать выборку из запроса на одну запись ?
#35 by Ковычки
в скрипт запускается единожды, после его можно хоть удалить, хоть пропить
#36 by Ткачев
Зачем делать , если работает, тем более в не написано что делать с этим событием, т.е. как его проверить и на его основании запустить свою программу.
#37 by Ткачев
+И вроде как оно и при перезагрузке будет срабатывать...
#38 by Ткачев
+И судя по WITHIN 1 долбиться в журнал каждую секунду, кому нах это надо ? Но это имхо, я не понимаю в этом, просто прочитал в учебнике что WITHIN это интервал опроса запроса, возможно я и не прав...
#39 by Ковычки
если лениво разбираться делай как то так и запускай при старте компа
#40 by Ковычки
сделай не каждую секунду, сделай по событию Win32_ComputerShutdownEvent
#41 by Ковычки
возникнет маленькая проблема - не успеет отработать нужное, можно конечно вайтапликейшн в реестре увеличить или первой командой делать отмену выключения, а по окончании уже делать выкл/перезагрузку
#42 by Ковычки
да по сути тут WITHIN нафиг не нужен, это запрос к событию
#43 by Ткачев
Это скрипт BackUp.vbs он запускается из , мне не надо ничего отслеживать, все уже отследилось, мне надо получить ОДНУ последнею запись в журнале, в 1с это выглядело бы так ВЫБРАТЬ 1 * ИЗ ЖурналСобытий ... Как сделать запрос "Select Message from Win32_NTLogEvent Where Logfile = 'System' and SourceName='User32'" _ & "and (EventCode = '1074' or EventCode = '1076')" что бы он вернул одну единственную запись, а не все записи журнала? И как ее потом выбрать?
#44 by Ковычки
я ей про лепешки, она - не поепешли
#45 by Ковычки
не отработает он у тебя без отмены выключения или увеличения вайтапп
#46 by Ковычки
а выбрать один через адо
#47 by Ткачев
Помогите 1с Запрос, преобразовать в скрипт, данные журнала в Запрос = Новый Запрос ("ВЫБРАТЬ ПЕРВЫЕ 1   |    Message   |ИЗ   |    ЖурналСобытий   |ГДЕ   |    Logfile = "System"   |    И SourceName = "User32"   |    И (EventCode = 1074 ИЛИ EventCode = 1076)"; Выборка = Запрос.Выполнить; Если Выборка.Следующий Тогда   Если Найти(Выборка.Message, "Выключение компьютера") > 0 Тогда      //Тут запускаю архивацию   КонецЕсли; КонецЕсли;
#48 by Ковычки
что же Вы такой "бестолковый" хотя бы так s="" for each x in GetObject("winmgmts:").ExecQuery("select * from win32_ntlogevent where Logfile = 'System' and SourceName= 'USER32' and (EventCode = '1074' or EventCode = '1076') and TimeGenerated > '" & year(now) & right(0 & month(now),2) & right(0 & day(now),2) & "000000.000000+000'")    s=s & x.eventcode & vbcrlf next msgbox s
#49 by Ткачев
Да, я такой :) Ща попробую
#50 by Ткачев
Гомнокод, тоже самое что и в , фильтр по времени не рулит, лано хер с ним, если нельзя элементарно одну запись получить то буду останавливать цикл после первой записи.
#51 by Torquader
Если нужно что-то сделать при завершении, то нужно писать сервис, который получает уведомление о завершении системы и напоминает ей, что ещё не пора завершаться. В противном случае процесс (и даже сценарий) не успевает отработать, если завершение сделали в режиме Force (когда выполняется немедленное завершение).
#52 by Ткачев
Нее, работает все нормально, время выключения увеличилось на время архивации, просто я хотел выбрать отбором ExecQuery только одну запись а не все по отбору, но не получилось, пришлось принудительно For завершать после чтения первой записи.
#53 by Torquader
У меня в режиме завершения Force не получалось - процесс прерывался через некоторое время, а сценарии вообще не отрабатывали, так как система считала, что завершаться нужно быстро. К сожалению, драйвер UPS требовал именно режим Force, поэтому пришлось обойтись без обработки.
#54 by Ковычки
ты чо такой упоротый, ветку читай внимательно.
#55 by Ткачев
Может лучше ты почитаешь ? Надо ОДНУ запись а не весь журнал !!!
#56 by Ковычки
у кого нет головы, тому шляпа не нужна (с)
#57 by Ковычки
+ в ветке все написано, как и одну запись вытянуть и как не вытягивая ничего получить событие с кодом
#58 by skunk
это всю тему не смотрел ... а это что мешает посмотреть политики ... там есть опция выполнить перед выключением
#59 by Ткачев
Невижу, покажи где это написано ?
#60 by Ткачев
Это сделали уже
#61 by Ковычки
если лениво разбираться с поставщиками и асинхронностью, поставь триггер на событие
#62 by Ткачев
Триггер я уже ставил, он и на перезагрузку работает и я не могу остановить выполнение "Завершения работы", т.е. архивация не успевает завершиться, идеальный вариант это , на других форумах мне сказали что без for тут не обойтись, лано... оставим все как есть, просто хотелось разобраться можно ли фильтровать и отбирать как тебе хочется. Завершенный код (соответственно CreateArchive по своему усмотрению), всем спасибо!": For Each ObjEvent In GetObject("winmgmts:").ExecQuery("Select Message From win32_ntlogevent "_   & "where Logfile = 'System' and SourceName= 'USER32' and (EventCode = '1074' or EventCode = '1076') "_    & "and TimeGenerated > '" & year(now) & right(0 & month(now),2) & right(0 & day(now),2) & "000000.000000+000'") Exit For Next If InStr(ObjEvent.Message, "Тип выключения: Выключение питания") > 0 Then     mm = Right(0 & Month(Date) , 2)   dd = Right(0 & Day(Date)   , 2)   hh = Right(0 & Hour(Time)  , 2)   mn = Right(0 & Minute(Time), 2)   ss = Right(0 & Second(Time), 2)   NameFile = Year(Date) & mm & dd & hh & mn & ss   Set WshShell = CreateObject("Wscript.Shell")   CreateArchive = WshShell.Run("c:Progra~17-Zip7z.exe a -mx7 -r0 -x!*.cdx D:ArchiveDB_" & NameFile & ".7z d:1CDB", 1, True) End If
#63 by Ковычки
остановить завершение shutdown /a но добавив времени сервисам и особенно рпс а получить последний реально
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С