Назначение заданий в домене
Подскажите пожалуйста , требуется на всех ПК настроить выключение ПК в заданное время, для этого решил использовать планировщик заданий.
хочу повесить логон скрипт на включение ПК , а логон скрипт добавляет задание на выключение ПК
вешаю скрипт:
PHP код:
schtasks /create /tn "task1" /s 127.0.0.1 /u Администратор /p пароль /tr "%systemroot%/system32/shutdown /s" /sc once /st 10:01:00
но как его заставить выполняться от имени локального администратора?
не принимает русскую учетку подскажите как написать правильно?
|
dartne, почему именно LogOn-сценарий? Для такой задачи больше подходит StartUp-сценарий. Ему не требуются дополнительные привилегии, т.к. выполняться он должен от имени локальной системы.
|
Цитата:
Цитата dartne
требуется на всех ПК настроить выключение ПК в заданное время, для этого решил использовать планировщик заданий »
|
пишите батник (или cmd файл, я сейчас уже не помню) "shutdown /s /t 00" или "shutdown /s /t 00 /m:namecomp"
первый размещаете в локальном планировщике.
второй размещаете в планировщике на сервере. задача выполняется естественно от доменного админа.
я делал через второй вариант. для каждого помпа по заданию.
|
Цитата:
Цитата dartne
не принимает русскую учетку подскажите как написать правильно? »
|
Сохраняйте пакетный файл в кодировке OEM/866.
|
Цитата:
"shutdown /s /t 00" или "shutdown /s /t 00 /m:namecomp
|
это не удобно т.к. пользователь не может отменить выключение, разве что может дату поменять, если есть права, а их у него нет.
Сделал немного иначе , GPO со скриптом на логон:
Код:
REM
at /delete /yes
REM
at 22:00 /interactive \\domenname.local\NETLOGON\Scripts\shutdown\shutdown.js
в shutdown.js:
Код:
// Определяем, в какую из групп входит пользователь
// и если он входит в группу администраторов - завершаем работу скрипта
var WshNetwork = WScript.CreateObject("WScript.Network");
var UserObj,E,GroupObj;
// Создание диалогового окна и команды на выключение ПК
var obj = GetObject("winmgmts:{impersonationLevel=impersonate," + "(Shutdown)}//./root/cimv2").ExecQuery ("SELECT * FROM Win32_OperatingSystem" + " WHERE Primary=true");
var e = new Enumerator(obj);
function kill_comp(){
for (;!e.atEnd();e.moveNext()) {
e.item().Win32Shutdown(8);
}}
// Задаем время для диалогового окна, в течении которого пользователь может выбрать один из вариантов работы,
// выключение ПК или продолжение работы. Если в течении заданного времени в MSG_Time (в секундах) ничего не произойдет,
// то автовыключение ПК
var MSG_Time= 900;
var vbOKCancel = 1;
var vbInformation = 64;
var vbCancel = 2;
var Message = "ВАШЕ РАБОЧЕЕ ВРЕМЯ ЗАКОНЧЕНО! Не забудьте выключить компьютер! Автовыключение через 15 мин., завершить работу сейчас!?";
var Title = "Автозавершение работы системы!";
// Вызываем диалоговое окно
dialog_msg()
function dialog_msg()
{var WSHShell = WScript.CreateObject("WScript.Shell");
var intDoIt;
intDoIt = WSHShell.Popup(Message, MSG_Time, Title, vbOKCancel + vbInformation );
if (intDoIt == vbCancel) { WScript.Quit(); }}
// Вырубаем машину - спать!
kill_comp();
DmitriiV а как поместить скрипт в стартап сценарий а не логон через GPO?
|
Petya V4sechkin |
26-04-2012 09:07 1906020 |
Цитата:
Цитата dartne
а как поместить скрипт в стартап сценарий а не логон через GPO
|
В предыдущей теме вы так и не смогли этого сделать.
|
Вот только проблема с этим скриптом должны быть админские права у пользователя :(
|
Petya V4sechkin |
26-04-2012 09:22 1906030 |
Цитата:
Цитата dartne
должны быть админские права у пользователя
|
Не должны быть.
Если задать политику в "Конфигурация компьютера\Конфигурация Windows\Сценарии".
Сможете? :)
|
Почему то если делаю как вы говорите, то не появляется у пользователя в планировщике задача, нормально ли это , не проверял работоспособность самого скрипта, но он не видеться в планировщике :(
|
Petya V4sechkin |
26-04-2012 09:26 1906032 |
Цитата:
Цитата dartne
если делаю как вы говорите
|
Не получается у вас применить политику к компьютерам.
|
Так работает если у пользователя админ права:

а так не работает (не отображается в планировщике у пользователя)

|
Petya V4sechkin |
26-04-2012 09:36 1906038 |
dartne, вкладку Scope нажмите.
|
Petya V4sechkin |
26-04-2012 09:43 1906041 |
dartne, что в контейнере OU Computers And Users содержится?
|
Цитата:
что в контейнере OU Computers And Users содержится?
|
Компьютера и учетки пользователей.
Name OU (на него применена политика Global-shutdown-PC-at-22:00)
Computers (компьютеры зарегистрированные в AD)
Users (пользователи работающие на этих компьютерах)
т.е. политика Global-shutdown-PC-at-22:00 выше Computers и выше Users
или нужно политику Global-shutdown-PC-at-22:00 назначить именно на OU Computers?
|
Petya V4sechkin |
26-04-2012 09:54 1906045 |
dartne, в контейнере должны быть учетные записи компьютеров.
|
Добавил на контейнер с компьютерами, все равно у пользователя он не отображается в планировщике, только у пользователя с админскими правами.
Если под пользователем просто запустить
Код:
REM
at /delete /yes
REM
at 22:00 /interactive \\domenname.local\NETLOGON\Scripts\shutdown\shutdown.js
пишет
C:\Documents and Settings\user>at /delete /yes
Отказано в доступе.
подскажите как добавить пользователю возможность добавлять задания в планировщик?
|
Цитата:
Цитата dartne
т.к. пользователь не может отменить выключение »
|
у меня задача была - выключать "нарушителей" в 22:00. Когда в офисе не спит только охрана.
|
Petya V4sechkin |
26-04-2012 11:10 1906082 |
Цитата:
Цитата dartne
у пользователя он не отображается в планировщике
|
Пользователю ничего не нужно ни видеть, ни запускать.
Политика применилась? Задание добавлено?
|
в gpresult с учетки пользователя присутствует политика
Код:
Конфигурация компьютера
---------------------------------------
Global-shutdown-PC-at-22:00
Если зайти в планировщик под пользователем, задания не видно.
Под пользователем с правами администратора gpresult выдает тоже самое , но в планировщике заданий видно задание.
Проблема с правами на выполнение команды at под пользователем, а не политикой.
|
Petya V4sechkin |
26-04-2012 13:25 1906153 |
Цитата:
Цитата dartne
в gpresult с учетки пользователя присутствует политика
|
Значит, все в порядке.
Цитата:
Цитата dartne
Если зайти в планировщик под пользователем, задания не видно
|
Цитата:
Цитата Petya V4sechkin
Пользователю ничего не нужно ни видеть, ни запускать
|
Цитата:
Цитата dartne
Проблема с правами на выполнение команды at под пользователем
|
Никакой проблемы нет.
Задание, созданное командой AT, выполняется от имени системной учетной записи. Пользователь ей по барабану.
|
Огромное спасибо, действительно все работает , запускается под системным процессом , при этом у пользователя нет никаких заданий в планировщике, но главное что запускается :)
|
Цитата:
Цитата dartne
при этом у пользователя нет никаких заданий в планировщике »
|
Цитата:
Цитата dartne
пользователь не может отменить выключение »
|
а как он тогда его отменить может? если задания не видит... или это будет в появляющемся окне.
|
exo, если через shutdown /s , то выскочит окно и 30 секунд ожидания, можно сменить дату системную на год назад тогда 365 дней до выключения будет )) так 100 лет назад боролись с трояном MsBlast , пока ждали заплатку на винду )))
А если через этот скрипт:
http://forum.oszone.net/post-1906018-5.html
то пользователю будет дана возможность выбрать выключать компьютер или не выключать, а если пользователь никак не прореагирует , то через 15 минут компьютер сам выключиться.
|
Цитата:
Цитата dartne
то выскочит окно и 30 секунд ожидания »
|
я писал с ключом /t 00 :)
просто зачем выключать компьютер, когда сотрудник работает. я выключал, когда они забывали выключать. Пару потерянных документов приучили их к порядку. Конечно метод жесткий, но подействовало.
Цитата:
Цитата dartne
можно сменить дату системную на год назад тогда 365 дней до выключения будет »
|
ради этого менять дату... а потом будут вопросы - почему у меня дата создания документа годичной давности, и бекап-системы его будут видеть как необновлённый... наверное....
|
согласен это совсем по злому :)
Цитата:
зачем выключать компьютер, когда сотрудник работает
|
ну анализировать работает ли он , или не работает на данный момент сложно, есть рабочий день когда общепринятый и его окончание, поэтому должна быть возможность пользователю поработать после работы , а отключить ПК с подтверждением, а еще лучше продублировать задание например в 12 ночи , когда уже обычно никто не задерживается, но тоже с подтверждением- так гуманнее. :)
у пользователей не должно быть возможности смены системной даты , а время должно синхронизировать через внутренний NTP сервер для более точной работы всех скриптов и политик
|
dartne !
Ваш вариант оч хорош, только вот есть одна загвоздка, мне нужно чтобы был вывод в текстовик в некую сетевую папку файла с невыключенными ПК и отправки данного файла на мыло для проведения с оными некой работы по поднятию дисциплины по пожароопастности и отчета Шефу ежемесячно.... как данную операцию можно реализовать?
Сейчас пользуюсь:
1. на сервере в шедулере запуск TurnOff_Computers.cmd в 21:00
TurnOff_Computers.cmd:
Код:
FOR /F "eol=; tokens=1" %%i in (\\server\Soft\Scripts\Computer_Shutdown\ComputerList.txt) do ping -n 1 %%i | find "TTL=" && echo %%i >> \\server\Soft\LOGS\TurnOff_Computers\%date%_Computers_ON.txt
FOR /F "eol=; tokens=1" %%i in (\\server\Soft\LOGS\TurnOff_Computers\%date%_Computers_ON.txt) do shutdown -s -f -m \\%%i
2. на сервере в шедулере запуск send_mail.vbs в 22:30
send_mail.vbs:
Код:
Set objEmail = CreateObject("CDO.Message")
Dim MyTime
MyTime = Now
Dim Temp
Dim MyDate
Temp = Day(Now)
if (Temp < 10) then MyDate = "0"
MyDate = MyDate & Temp & "."
Temp = Month(Now)
if (Temp < 10) then MyDate = MyDate & "0"
MyDate = MyDate & Temp & "." & Year(Now)
objEmail.From = "administrator@company.com"
objEmail.To = "it@company.com"
objEmail.Subject = "Computers turned on " & MyTime
objEmail.Textbody = ""
objEmail.Addattachment "\\server\Soft\LOGS\TurnOff_Computers\" & MyDate & "_Computers_ON.txt"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.1.x"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
Так все работает на ура, но вот пополнять новыми пк файл ComputerList.txt для пинга пк - напрягает.
Ваш вариант напрягает еще больше, т.е. на всех ПК нужно включить нужно то, что любит больше всего вирус KIDO - ну это ладно не беда, больше напрягает что ПК тушатся, а инфы нету кто когда и во сколько.
|
Время: 15:38.
© OSzone.net 2001-