moonrise
Advanced Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Доброго времени суток, уважаемые. имеется маленький доменчик на 2008 R2 долго ли коротко ли, но возникла задача, за которую я не брался лет 7 а именно - настроить заставить компьютеры по списку выполнять некие действия по скрипту.и вот что-то не сильно у меня это получается это все преамбула, а вот собственно сама амбула: 1. Захожу в AD и добавляю новый объект групповой политики. называю его: ТЕСТ Выключение компьютеров по расписанию (Win_7) 2. Правой кнопкой мыши на нем, Изменить. 3. Конфигурация Компьютера -> Политики - > Конфигурация Windows -> Сценарии -> Автозагрузка -> Сценарии -> Добавить -> Обзор: GPO_shutdown.bat 4. По нажатию на обзор создаю там этот самый GPO_shutdown.bat следующего содержания: Код: schtasks /delete /tn "GPO_shutdown_18_55" /f schtasks /create /tn "GPO_shutdown_18_55" /tr "\\domainname.local\NETLOGON\Scripts\shutdown\shutdown.js" /sc DAILY /st 18:55:00 schtasks /delete /tn "GPO_shutdown_23_55" /f schtasks /create /tn "GPO_shutdown_23_55" /tr "\\domainname.local\NETLOGON\Scripts\shutdown\shutdown.js" /sc DAILY /st 23:55:00 | 5. В фильтрах безопасности созданного объекта добавляю свой компьютер 6. связываю Компьютеры домена с созданным объектом групповой политики 7. Убеждаюсь, что состояние политики "Включено" 8. создаю файлик "\\domainname.local\NETLOGON\Scripts\shutdown\shutdown.js" следующего содержания: Код: // Определяем, в какую из групп входит пользователь // и если он входит в группу администраторов - завершаем работу скрипта var WshNetwork = WScript.CreateObject("WScript.Network"); var UserObj,E,GroupObj; UserObj=GetObject("WinNT://"+WshNetwork.UserDomain+"/"+WshNetwork.UserName); E=new Enumerator(UserObj.Groups()); while (!E.atEnd()) { GroupObj=E.item(); if (GroupObj.Name=="Domain Admins" || GroupObj.Name=="Administrators") WScript.Quit(); E.moveNext(); } // Создание диалогового окна и команды на выключение ПК 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= 300; var vbOK = 0; var vbInformation = 64; var vbCancel = 2; var Message = "Уважаемые коллеги! \nВ соответствии с принятыми на Предприятии политиками безопасности в 19:00 произойдет автоматическое отключение компьютера.\nПри необходимости продолжить работу нажмите кнопку <<Ок>>."; var Title = "Автозавершение работы системы"; // Вызываем диалоговое окно dialog_msg() function dialog_msg() {var WSHShell = WScript.CreateObject("WScript.Shell"); var intDoIt = WSHShell.Popup(Message, MSG_Time, Title, vbOK + vbInformation); // // // 0 - кнопка ОК. // 1 - кнопки ОК и Отмена. // 2 - кнопки Стоп, Повтор, Пропустить. // 3 - кнопки Да, Нет, Отмена. // 4 - кнопки Да и Нет. // 5 - кнопки Повтор и Отмена. // // 16 - значок Stop. // 32 - значок Question. // 48 - значок Exclamation. // 64 - значок Information. // // if (intDoIt == 1) { WScript.Quit(); }} // Вырубаем машину - спать! kill_comp(); // // // -1 - таймаут. // 1 - кнопка ОК. // 2 - кнопка Отмена. // 3 - кнопка Стоп. // 4 - кнопка Повтор. // 5 - кнопка Пропустить. // 6 - кнопка Да. // 7 - кнопка Нет. // | 9. Запускаю его руками и убеждаюсь, что не попадаю ни под какие исключения и что диалог выдается. 10. Перезагружаюсь и в консоли запускаю gpresult /r - политика не прописана 11. запускаю schtasks - заданий тоже нет Прошу ткнуть носом куда копать Добавлено: проблема решилась выставлением галки ПРИНУДИТЕЛЬНО | Всего записей: 1986 | Зарегистр. 19-09-2001 | Отправлено: 18:42 06-05-2013 | Исправлено: moonrise, 18:45 06-05-2013 |
|