Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Как проверить что выполняется выключение компьютера а не перезагрузка ?

Ответить
Настройки темы
Любой язык - Как проверить что выполняется выключение компьютера а не перезагрузка ?

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Редактор локальной групповой политики gpedit.msc
Конфигурация компьютера - Конфигурация Windows - Сценарии - Завершение работы

Мне надо перед выключением компьютера выполнить скрипт, как в скрипте определить что комп выключается а не перегружается ?

Отправлено: 13:21, 01-12-2011

 

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Как вариант Журнал событий "System-User32" Код события: 1074, Тип выключения: Выключение компьютера
Как в скрипте прочитать последнею запись из журнала и при сравнении Кода и Типа запустить скрипт ?

Отправлено: 14:27, 01-12-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


wevtutil qe system /c:1 /rd:true /q:"*[System[EventID=1074]]"

Отправлено: 14:54, 01-12-2011 | #3


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Оно и на перезагрузку тоже работает, мне надо только на выключение.

Я сделал так:
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

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~1\7-Zip\7z.exe a -mx7 -r0 -x!*.cdx D:\Archiv\DB_" & NameFile & ".7z d:\1C\DB", 1, True)
End If
Exit For
Next
Помогите избавиться от For, в запросе если делаю TOP 1 или Select 1, начинает ругаться на For, как сделать выборку из запроса на одну запись ?

Отправлено: 07:44, 02-12-2011 | #4


Новый участник


Сообщения: 42
Благодарности: 13

Профиль | Отправить PM | Цитировать


Замените For на
Код: Выделить весь код
Select Case testexpression
   [Case expressionlist-n
      [statements-n]] . . .
   [Case Else
      [elsestatements-n]]
End Select
или уберите не нужный Евент из (EventCode = '1074' or EventCode = '1076')

Отправлено: 08:23, 02-12-2011 | #5


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Loran_rus:
или уберите не нужный Евент из (EventCode = '1074' or EventCode = '1076') »
Так они оба нужные, сложно скопипастить то что я написал и поменять ? Я не могу понять куда вставить Select Case testexpression

Отправлено: 08:34, 02-12-2011 | #6


Старожил


Сообщения: 210
Благодарности: 76

Профиль | Отправить PM | Цитировать


Цитата Реаниматор:
... Помогите избавиться от For...»
Это невозможно. В противном случае Вы не сможете обращаться к экземплярам коллекции.

Цитата Реаниматор:
... как сделать выборку из запроса на одну запись ?»
Как именно Вы собираетесь решать, какая запись из найденного набора нужна?

Отправлено: 09:52, 02-12-2011 | #7


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DmitriiV:
Как именно Вы собираетесь решать, какая запись из найденного набора нужна? »
Самая последняя

Цитата DmitriiV:
Это невозможно. В противном случае Вы не сможете обращаться к экземплярам коллекции. »
Мне не нужна коллекция мне нужна последняя запись в Журнале событий

Отправлено: 10:04, 02-12-2011 | #8


Старожил


Сообщения: 210
Благодарности: 76

Профиль | Отправить PM | Цитировать


Цитата Реаниматор:
Самая последняя »
По времени что-ли?

Отправлено: 11:00, 02-12-2011 | #9


Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DmitriiV:
По времени что-ли? »
Неважно, нужна первая запись которая отобрана по фильтру в Set colLoggedEvents = objWMIService.ExecQuery
Вот 1с запрос, нужно тоже самое только в скрипте:
Запрос = Новый Запрос ("ВЫБРАТЬ ПЕРВЫЕ 1
| Message
|ИЗ
| ЖурналСобытий
|ГДЕ
| Logfile = "System"
| И SourceName = "User32"
| И (EventCode = 1074 ИЛИ EventCode = 1076)";
Выборка = Запрос.Выполнить();
Если Выборка.Следующий() Тогда
Если Найти(Выборка.Message, "Выключение компьютера") > 0 Тогда
//Тут запускаю архивацию
КонецЕсли;
КонецЕсли;

Отправлено: 11:10, 02-12-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Как проверить что выполняется выключение компьютера а не перезагрузка ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Выключение компьютера при потере коннекта КАК? interminable Хочу все знать 11 25-07-2016 21:25
Интерфейс - Удаленное выключение и перезагрузка компьютера. poisonkit Microsoft Windows 2000/XP 10 03-02-2012 17:04
Перезагрузка не выполняется. Lifpa Непонятные проблемы с Железом 1 02-09-2011 11:08
Разное - Как правильно проверить что с USB Gik Материнские платы и память 12 18-03-2011 11:10
несанкционированое выключение или перезагрузка пк произошла,как узнатьпричину? sv962 Microsoft Windows 2000/XP 3 15-06-2006 11:39




 
Переход