У меня домен Microsoft (в основном 2008r2 \ 7).
Я ищу способ запустить скрипт сразу после (перезапуска после) присоединения к домену (без необходимости входа в систему), и пока мне это не удалось.
Кроме того, я хочу, чтобы он запускался только один раз, поэтому планирование повторной задачи не вариант.
Мне просто кажется пустой тратой позволять этому повторяться снова и снова.
Я пробовал GPO со сценарием запуска, но когда компьютер получает GPO, он уже после запуска.
Я также пробовал GPO с запланированной задачей (с разными триггерами), но они тоже не работали:
Триггер «При запуске» не работает так же, как сценарий запуска.
«При создании задачи» не удается, я думаю, потому что она не создается обычным способом.
«По расписанию» не имеет значения, потому что мне нужно, чтобы он запускался сразу после присоединения (и установка даты, которая уже прошла, не сработала).
Не удалось найти соответствующие разделы реестра, но я предполагаю, что они будут иметь ту же проблему, что и сценарий запуска GPO.
Единственная идея, которая может сделать то, что мне нужно, - это прикрепить задачу к соответствующему событию на контроллерах домена и запустить сценарий удаленно.
Есть предложения лучше?
--Редактировать--
Судя по ответам (которые хороши, но не совсем подходят), у меня есть несколько моментов, которые нужно добавить:
1. Вопрос касается обоих серверов (2008r2 \ 2012 \ 2012r2), правда тестировал только на 2012r2.
2. Я ищу решение, более похожее на runonce, то есть я не хочу, чтобы оно работало бесконечно, пока не будет выполнено какое-то условие.
3. Мы используем образы для развертывания серверов и рабочих станций, но я не могу использовать решение, которое включает их редактирование, потому что а) это потребовало бы от меня обновления их каждый раз, когда мне нужно что-то изменить в моем сценарии б) BYOD.
4. Мы не используем скрипт присоединения (он нам просто не нужен ...), поэтому начинать его использовать мне кажется пустой тратой. Кроме того, с этим есть несколько проблем (например, где я должен его разместить? На изображении? В общем месте? Что с BYOD ?, что победит пункт 3).
Спасибо.
Добавьте в образ сборки настраиваемый ключ реестра, просто где-нибудь значение «1».
Добавьте запланированную задачу, которая проверяет значение раздела реестра в образ сборки, добавьте проверки вашего доменного имени в этот раздел реестра.
HKLM \ System \ CurrentControlSet \ Services \ Tcpip \ Parameters
Если он обнаружит, что оба запускают ваш скрипт, по завершении измените настраиваемый ключ реестра на 0. Запустите эту задачу при запуске.
Затем вы можете либо оставить эту задачу как есть, либо иметь gpo, который удаляет запланированную задачу. Однако, если вы оставите его на месте и вам когда-нибудь понадобится перезапустить скрипт, вы можете просто изменить ключ реестра обратно на 1 и перезагрузиться.
Незначительное беспокойство по поводу безопасности заключается в том, что запланированное задание необходимо будет запускать с учетной записью локального администратора.
Как выполняется соединение? Взаимодействие с графическим интерфейсом вручную или через скрипт? Если это сценарий, добавьте строку в сценарий соединения, чтобы второй сценарий выполнялся через раздел реестра RunOnce.
HKEY_LOCAL_MACHINE \ Программное обеспечение \ Microsoft \ Windows \ CurrentVersion \ RunOnce https://msdn.microsoft.com/en-us/library/windows/desktop/aa376977%28v=vs.85%29.aspx
--- НАЧАТЬ РЕДАКТИРОВАНИЕ ---
Дох! Правильно
Подумав о том, что ваш комментарий о задержке применения GPO ... Я работаю в основном над серверной ОС, которая выполняет синхронную обработку GPO. Рабочие станции делают асинхронные. Попробуйте это, чтобы получить асинхронный режим:
В процессе сборки / образе попробуйте отключить «Оптимизацию быстрого входа в систему» https://technet.microsoft.com/en-us/magazine/gg486839.aspx
Конфигурация компьютера \ Административные шаблоны \ Система \ Вход в систему
Всегда ждать сети при запуске компьютера и входе в систему = Включено
Создайте GPO Startup Script GPO:
Конфигурация компьютера / Политики / Параметры Windows / Сценарии / Запуск
Внутри определяемого вами скрипта используйте этот код:
$built = gwmi Win32_OperatingSystem | foreach {[System.Management.ManagementDateTimeconverter]::ToDateTime($_.InstallDate)}
if ($built -gt (get-date).addHours(-4)) {
"do something"
}
Вам все равно не нужно перезагружаться после присоединения к домену? Если вы создали сценарий запуска, он будет применяться сразу после перезагрузки, когда он загружает другие объекты групповой политики.
Как вы сейчас присоединяетесь к домену? Вы также можете интегрировать присоединение к домену в свой скрипт. В Powershell это делается с помощью Add-Computer, из командной строки вы можете использовать netdom.
Обычно вы должны интегрировать это в свою последовательность задач, если используете инструмент управления конфигурацией.