Назад | Перейти на главную страницу

Как добавить сценарий выключения (не используя gpedit.msc или активный каталог)?

Я создал сценарий, который хочу развернуть на своих рабочих станциях XP в качестве сценария выключения. Я знаю, что могу добавить свой сценарий в качестве сценария выключения с пользовательским интерфейсом (gpedit.msc), но я хочу автоматизировать развертывание моего сценария. Мои рабочие станции не являются частью домена Windows. Я буду развертывать с OCS Inventory.

Я пытался добавить записи в реестр Windows, но это не сработало. Я не вижу, что я добавил при запуске gpedit.msc. Если я добавлю что-то с помощью gpedit.msc, похоже, это перезапишет то, что я добавил вручную в реестр.

Всем, кто пытается заставить это работать, мои соболезнования. Я потратил много часов, пытаясь выяснить, какие именно из сотен изменений, вносимых gpedit, действительно важны. Мои тесты проводились на Windows Server 2016. Они оказались актуальными:

  1. Значения под:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0\0
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\[Startup|Shutdown]\0\0
    
  2. Справочники:

    \Windows\system32\GroupPolicy\Machine\Scripts\Startup
    \Windows\system32\GroupPolicy\Machine\Scripts\Shutdown
    

Windows использует эти каталоги в качестве рабочего каталога для сценариев. Даже если вы не храните там свои сценарии запуска / завершения работы, эти каталоги должны существовать.

Больше ничего gpedit не имеет значения. Это включает в себя множество записей реестра и файлы .ini, на которые есть ссылки в других ответах. Возможно, некоторые из вышеперечисленных клавиш тоже лишние, но у меня закончилось терпение к тестированию.

У меня все заработало.

Я добавил скрипт с gpedit.msc на один компьютер. Я экспортировал ключи реестра из HKLM\Software\Policies\Microsoft\Windows\System\Scripts и HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine. Я также застегнул C:\WINDOWS\SYSTEM32\GroupPolicy каталог.

На другом компьютере я пропатчил реестр двумя своими .reg-файлами, которые экспортировал ранее на свой первый компьютер. Я также разархивировал свой zip-файл в то же место на втором ПК.

Скрипт запускается при завершении работы, и я вижу его в gpedit.msc. Вроде бы все хорошо!

Представим, что наш сценарий запуска находится в C: \ MyStartupScript.bat.

Вам нужна запись реестра REG_SZ с именем Сценарий со значением, установленным на C: \ MyStartupScript.bat расположены в обоих из следующих двух мест:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ State \ Machine \ Scripts \ Startup \ 0 \ 0

HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows \ System \ Scripts \ Startup \ 0 \ 0

Вам также понадобится следующая запись в C: \ WINDOWS \ system32 \ GroupPolicy \ Machine \ Scripts \ Scripts.ini

[Startup]
0CmdLine=C:\MyStartupScript.bat
0Parameters=

Для сценария выключения следуйте тем же инструкциям, но замените все вхождения слова Запускать со словом Неисправность

редактировать:

Похоже, вам может потребоваться создать еще две записи в реестре, если они еще не существуют.

Вам нужно будет создать их в обоих упомянутых выше местах реестра.

Первая запись - это запись REG_SZ, называемая Параметры и его значение можно оставить пустым.

Вторая запись - это запись REG_QWORD с именем ExecTime и его значение установлено на 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

В Windows XP команда REG не может добавить запись REG_QWORD в реестр.

Чтобы обойти это ограничение, я, например, использую командный файл, который добавляет эти строки

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Startup\0\0]
"ExecTime"=hex(b):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00

в файл с именем addQword.reg затем выполняет файл, используя эту команду:

regedit /s addQword.reg

Небольшое обновление для ответа Фрэнсиса.

Для Windows Server 2016 HKLM\Software\Policies\Microsoft\Windows\System\Scripts был перемещен в HKLM\Software\Microsoft\Windows\CurrentVersion\Group Policy\Scripts

Итак, я получил его, экспортировав следующие ключи реестра:

HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ Scripts HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ State \ Machine

и как Фрэнсис предложил скопировать

C: \ WINDOWS \ SYSTEM32 \ GroupPolicy

Вы можете добавить ключи здесь: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ State \ Machine \ Scripts \ Shutdown

Смотрите здесь для получения дополнительной информации: http://en.kioskea.net/faq/3358-execute-a-script-a-startup-and-shutdown

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

Я создал сценарий выключения, используя gpedit.msc на одном сервере, затем экспортировал ключ реестра и импортировал его на целевые серверы. Используйте следующий ключ:

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ State \ Machine \ Scripts]

Вам также необходимо скопировать в целевой файл указанный ниже файл:

C: \ Windows \ system32 \ GroupPolicy \ Machine \ Scripts \ scripts.ini

Если это сценарий Powershell, скопируйте вместо него следующий файл:

C: \ Windows \ system32 \ GroupPolicy \ Machine \ Scripts \ psscripts.ini