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

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

batyaPS 18-03-2012 15:29 1881776

[решено] Выключение ПК с возможностью отмены
 
Варианты реализации запуска сценария выключения компьютера с уведомлением и возможностью отмены:
  • Вариант с использованием NirCmd: сообщение #2
  • Вариант с использованием сконфигурированного 7z SFX: сообщение #6
  • Вариант с использованием VBS (без отображения таймера): сообщение #20
  • Вариант с использованием HTA (с таймером, прогрес баром и звуковым уведомлением): сообщение #26


Специализированные программы:

Исходный вопрос автора темы

Подскажите скрипт для выполнения завершения работы виндовс с возможностью отмены.

т.е. нужно ночью тушить все компы в организации, но с условием отмены (если пользователь в данный момент присутствует на рабочем месте)
я это вижу как окно с предупреждением и двумя кнопками - ДА - со счетчиком и ОТМЕНА или ОТСРОЧКА выключения.

при Отмене выполняться выход из скрипта
при ДА выполняется shutdown c параметрами
при ОТсрочке скрытие окна с задержкой (пинг на пример) потом снова вопрос .

Возможность окно свернуть, но не закрыть.

Iska 18-03-2012 23:41 1882089

NirCmd - Windows command line tool:
Код:

nircmdc.exe initshutdown "Инициировано завершение работы" 120 force & nircmdc.exe qboxcomtop "Отменить завершение работы?" "Отмена завершения работы" abortshutdown
Цитата:

Цитата batyaPS
я это вижу как окно с предупреждением и двумя кнопками »

Я это вижу — правильным применением организационных мер.

yurfed 19-03-2012 00:11 1882105

Iska, это что? Я не совсем в это дело втюхиваю, но объясни вкратце, как последний код понять
- Это условие "или" или что-то другое? При каких условиях выбор, может быть, что либо иначе?
Самое главное, не понял в последнем - в первом случае форсирование, остальные нет. Какие то приоритеты?
Iska, Если можно с комментариями, пожалуйста и не одной строкой :)
Спасиб
Может я коряво выразился

ferget 19-03-2012 01:21 1882122

Цитата:

Цитата yurfed
в первом случае форсирование, остальные нет. Какие то приоритеты? »

если откажетесь от завершения работы компьютера, то что вы собираетесь форсировать?

batyaPS 19-03-2012 12:48 1882357

Iska, как то корявенько это выглядит, нельзя ли по красивее и попонятнее пользователю ?

перекиньте тему в ветку http://forum.oszone.net/forum-103.html

gora 19-03-2012 15:29 1882460

Цитата:

Цитата batyaPS
нельзя ли по красивее и попонятнее пользователю ? »

Такое устроит?



Текст заголовка, окна, время, иконку можно поменять.

Это 7z SFX с конфигом:
Код:

;!@Install@!UTF-8!
Title="Перезагрузка компьютера"
BeginPrompt="                        ВНИМАНИЕ !!!

Сейчас будет произведена перезагрузка компьютера."
BeginPromptTimeout="30"
; Перезагрузка
RunProgram="forcenowait:hidcon:cmd /k Shutdown -r -f -t 0"

GUIMode="2"
GUIFlags="1+8+512+4096"
;!@InstallEnd@!


batyaPS 19-03-2012 16:21 1882495

gora, да, можно сам sfx выложить ?

gora 19-03-2012 17:05 1882516

Цитата:

Цитата batyaPS
можно сам sfx выложить ? »

Можно, только я думал, что Вы сами сможете его сделать.
Тогда уточните следующие параметры:
Цитата:

Цитата gora
Текст заголовка, окна, время, иконку »


batyaPS 19-03-2012 22:37 1882785

отредактировать смогу, выложите просто пустышку-шаблон

gora 19-03-2012 22:43 1882790

Вложений: 1
Прикрепил

batyaPS 19-03-2012 23:14 1882824

c помощью 7z SFX Tools редактировать ?

gora 19-03-2012 23:16 1882829

batyaPS, я делаю с помощью Кнопки

batyaPS 20-03-2012 12:05 1883137

Цитата:

Цитата gora
Текст заголовка, окна, время, иконку можно поменять. »

а иконку в окне которая синяя как поменять ?

кнопка очень понравилась.
интересует возможность больших параметров, поверх всех окон, со звуковым сигналом, редактор текста(как выровнить текст
по центру)

batyaPS 20-03-2012 12:30 1883162

и мне не понятно - если файлов hidcon.exe и shutdown.exe нет в системе архив не отработает как положено ?
может их нужно добавить в архив ?

batyaPS 20-03-2012 12:57 1883181

как отменить отмену таймера ?

gora 20-03-2012 14:16 1883241

Цитата:

Цитата batyaPS
а иконку в окне которая синяя как поменять ? »

Читайте в справке по модифицированному модулю параметр GUIFlags="x" (флаги 2048 и 4096)
Цитата:

Цитата batyaPS
возможность больших параметров, поверх всех окон, со звуковым сигналом, редактор текста »

Все возможности описаны в справке.
Цитата:

Цитата batyaPS
если файлов hidcon.exe и shutdown.exe нет в системе архив не отработает как положено ? »

hidcon - это префикс, а не имя утилиты. Эта возможность, скрывать окна, обеспечивается самим модулем без доп. утилит. shutdown.exe в системе должна присутствовать. В какой системе ее нет?
Цитата:

Цитата batyaPS
как отменить отмену таймера ? »

См. параметр CancelPrompt="cancel_dialog_text" и его описание.

batyaPS 20-03-2012 15:13 1883295

Цитата:

Цитата gora
м. параметр CancelPrompt="cancel_dialog_text" и его описание. »

не поняли друг друга.

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

gora 20-03-2012 15:18 1883298

Цитата:

Цитата batyaPS
можно ли исключить возможность остановки таймера ? »

Нет, и это правильно. Пользователь среагировал на окно (щелкнул в нем мышкой), значит он его увидел и пусть теперь сам выбирает какую кнопку и когда нажать. Это даже удобно, если появилось окно, а у Вас есть незакрытые документы. Остановите таймер, сохраните документы, а затем нажмите "ОК" для выполнения прописанных в конфиге команд (у Вас там может быть еще что-то кроме перезагрузки).

Если Вам нужно БЕЗ возможности отмены, то может подойдет что-то подобное. Это тоже 7z SFX.

DemchaAV 01-03-2015 10:39 2477306

Автоматическое выключение компьютера
 
В общем в запланированных задачах на каждый день у меня стоит выключение компьютера в определённое время через Bat файл в котором написано shutdown.exe /s
но иногда я забываю про это и мне не надо включение, а данная задача выключает без отмены Можно ли написать так что бы при запуске задачи выполнялось завершение с возможность да или нет, если в течении 60 секунд не было выбрано действие выполнялось выключение, ну а при выборе отмены нет

Blast 01-03-2015 11:35 2477335

Можно простым vbs. Пример:
Код:

Option Explicit
Dim oShell, retCode
Set oShell = WScript.CreateObject("WScript.Shell")

retCode = oShell.Popup("Выключить компьютер?", 60, "Подтверждение выключения", 4 + 32)

Select Case retCode
case 6, -1
        Dim objShell
        Set objShell = WScript.CreateObject("WScript.Shell")
        objShell.Run "C:\WINDOWS\system32\shutdown.exe -s -t 0 -f"
case 7
    WScript.quit(1)
End Select

Первое число, выделенное красным - это таймаут в секундах, второе - поменяйте на свои значения, которые у вас в батнике.

При выборе Нет выполнение скрипта будет прервано, при выборе Да - будет запущена команда выключения. Если в течение 60 секунд выбор не сделан, то будет произведено выключение.

okshef 01-03-2015 11:52 2477344

Blast, а можно счетчик секунд до выключения добавить?

DemchaAV 01-03-2015 12:15 2477359

Спасибо огромное
У меня почему то всё написано вот так

Blast 01-03-2015 12:31 2477365

Вложений: 1
Цитата:

Цитата DemchaAV
У меня почему то всё написано вот так »

Кодировка. Возьмите готовый файл во вложении.

okshef, насколько я знаю, в vbs не получится этого сделать, ну то есть можно эхо выводить каждую секунду и эмулировать нажатие enter, но это как-то дико :)
Могу и ошибаться, возможно коллеги подскажут.

Vadikan 01-03-2015 12:52 2477373

Было
[решено] Подтверждение при нажатии кнопок "Завершение работы" и "Перезагрузка"

DemchaAV 01-03-2015 13:33 2477405

видел но это не то

Blast 01-03-2015 13:49 2477412

Вложений: 2
Vadikan, да, я и забыл уже, хотя и фильтровал.. старею :)

DemchaAV, все то, просто автовыбор Да добавился.

okshef, твоя хотелка во вложении, правда на hta вместо vbs, но зато с бонусом :)


DemchaAV 01-03-2015 15:01 2477449

В принципе вариант VBS меня устраивает, а можно ли ещё добавить звуковое уведомление при появлению данного окна с выбором, и что мне делать с кодировкой пробовал абракадабра киллер не помогло

Blast 01-03-2015 16:48 2477498

Вложений: 1
Цитата:

Цитата DemchaAV
что мне делать с кодировкой пробовал абракадабра киллер не помогло »

Зачем вам киллер какой-то? Используйте файл из сообщения #5
Цитата:

Цитата DemchaAV
а можно ли ещё добавить звуковое уведомление »

Код:

Option Explicit

Dim oShell, retCode, WshShell
Set oShell = WScript.CreateObject("WScript.Shell")

oShell.Run "wmplayer """ & "C:\Windows\Media\tada.wav" & """",0,True

retCode = oShell.Popup("Выключить компьютер?", 60, "Подтверждение выключения", 4 + 32)

Select Case retCode
case 6, -1
        Dim objShell
        Set objShell = WScript.CreateObject("WScript.Shell")
        objShell.Run "C:\WINDOWS\system32\shutdown.exe -s"
case 7
    WScript.quit(1)
End Select

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

DemchaAV 01-03-2015 16:56 2477505

Цитата:

Цитата Blast
Но это пожалуй последнее, а то через пять минут вы захотите чтоб оно еще кофе варило. »

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

KaSpieC 666 01-03-2015 16:59 2477509

DemchaAV,
Если не нужен скрипт, есть простая программа - вот эта например

Blast 01-03-2015 17:03 2477510

KaSpieC 666, будете раздавать ссылки на варезные сайты - будем прощаться. Достаточно названия программы.

Цитата:

Цитата DemchaAV
хотел звук уведомления как ошибки подключения устройств... »

Ну так посмотрите какой файл с этим звуком и отредактируйте на нужный. Я же вам выделил в коде красным что менять. То есть уже и пережевано и в рот положено, но вот глотательный рефлекс я не умею вызывать :)

А вообще, действительно, возьмите готовое стороннее решение, которое рекомендовал KaSpieC 666. Название Auto PowerOFF (гугл знает где ее брать), отвечает всем вашим хотелкам - и кнопки Да/Нет и звук и расписание. Или выбирайте из десятков аналогов, например PowerOff.

okshef 02-03-2015 00:21 2477634

Blast, спасибо, бонус оценил :) Только кракозябры везде...

Blast 02-03-2015 01:08 2477647

Цитата:

Цитата okshef
Только кракозябры везде... »

Не знаю, у меня норм



По сути это же html с vbs, можешь попробовать в head добавить что-то типа
HTML код:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

okshef 02-03-2015 01:27 2477648

Blast, сработало.

KaSpieC 666 02-03-2015 03:05 2477655

Цитата:

Цитата Blast
KaSpieC 666, будете раздавать ссылки на варезные сайты - будем прощаться. Достаточно названия программы. »

Я извиняюсь, просто у автора нету сайта....
Но впредь буду иметь ввиду!

Blast 02-03-2015 13:18 2477779

Цитата:

Цитата KaSpieC 666
Я извиняюсь, просто у автора нету сайта.... »

Да, я только потом увидел это. Но в таких случаях давайте ссылку на поисковый запрос максимум. Спасибо.

okshef 04-03-2015 01:05 2478449

Blast, еще одна хотелка. А можно, чтобы перед выключением не появлялось окно командной строки?
Вот интересная вещь: запускаешь shutdown из планировщика, окно командной строки не появляется, а из скрипта - появляется

Blast 04-03-2015 09:57 2478557

okshef, замени строку #86 с этого
Код:

    Return = WshShell.Run("shutdown.exe -s")    ' Команда выключения
На это
Код:

    Return = WshShell.Run("shutdown.exe -s", 0, FALSE)    ' Команда выключения

okshef 18-03-2015 21:40 2484472

Blast, если создать задание в планировщике на запуск *.hta, оно не выполняется в заблокированном состоянии. Как решить?

Blast 18-03-2015 22:23 2484503

okshef, не пробовал, но можешь попробовать запускать в планировщике так:
Код:

cmd /c start X:\Folder\shutdown.hta
А в свойствах задания установлено Выполнять для всех пользователей?

okshef 18-03-2015 23:46 2484531

Не работает. Может через запуск скрипта vbs?

Blast 19-03-2015 10:27 2484655

Вложений: 1
okshef, я не знаю что не так... Попробуй из аттача - то же самое, но скомпилировано в exe.
Если не заработает, значит дело не в скрипте, а в настройках задания.

Ferum01 08-04-2015 19:23 2493315

Добрый день!
Как сделать скрипт для выключения компьютеров через доменную политику?
Нужно выключать компьютеры по расписанию, то есть одну группу в 16.00, другую в 18.00, группа без выключения и т.д.
Можно ли как то файл shutdown_with_countdown_with_sound.hta модернизировать и будет ли hta работать под доменной политикой?
Может быть надо создать несколько скриптов, только с разным временем выключения, а в каждый добавить текстовый файл с ip адресами (или все же один скрип)?

С добавление текстового файла, что то вроде:
psshutdown.exe @complist.txt -c -t 300 -m "Your computer will be powered down. Just press \"Cancel\" if you really need to work now."*

После уже сам напишу программу для создания файликов с ip.

Ferum01 11-04-2015 13:17 2494490

Частичтно решил задачу

использовал вариант:
"Вариант с использованием VBS (без отображения таймера): сообщение #20"
Хотелось использовать вариант "Вариант с использованием HTA (с таймером, прогрес баром и звуковым уведомлением): сообщение #26", но при запуске ругается - открыть, загрузить, загрузить как(((


Используем батник для всех компьютеров в домене
Код:

copy C:\Users\Artur\Desktop\shut_vbs\shutdown.vbs c:\ /N
Далее создаем несколько батников со списком ip (в зависимости от времени выключения) и ставим в планировщик заданий на сервере (запускать наверное можно и раз в неделю)
Код:

schtasks /create /s 127.0.0.5 /tn "One1" /tr C:\shutdown.vbs /sc daily /st 16:55 /f
schtasks /create /s 127.0.0.7 /tn "One1" /tr C:\shutdown.vbs /sc daily /st 16:55 /f

не нравится, то, что если комп выключен то эта команда тормозит 15 сек, меньше бы время как то выставить...

Кстати утилита psshutdown.exe глючит в Win7, не появляется сообщение, хотя комп выключает.

Iska 11-04-2015 14:24 2494513

Цитата:

Цитата Ferum01
не нравится, то, что если комп выключен то эта команда тормозит 15 сек, меньше бы время как то выставить... »

Никак. Используйте «start» для исполнения «schtasks /create» в отдельном процессе без ожидания.

Ferum01 12-04-2015 10:09 2494768

Цитата:

Цитата Iska
Никак. Используйте «start» для исполнения «schtasks /create» в отдельном процессе без ожидания. »

Может множеством процессов память заполнить...

Iska 12-04-2015 10:25 2494774

Цитата:

Цитата Ferum01
Может множеством процессов память заполнить... »

Это чем-то грозит?


Время: 22:37.

Время: 22:37.
© OSzone.net 2001-