Windows скрипт при входе пользователя

Windows скрипт при входе пользователя

Добрый день! Уважаемые читатели и гости крупного IT блога России Pyatilistnik.org. В прошлый раз я вас научил делать резервную копию файлов и папок с помощью утилиты Robocopy. Сегодня я хочу вам рассказать еще об одной ситуации, которая случилась в моей административной практике, а именно по какой то причине скрипты и сценарии настроенные на вход пользователя в систему не отрабатывают сразу, а выполняются с задержкой в 5 минут. Мне стало интересно разобраться в данной ситуации и естественно поправить время выполнения моих скриптов. Думаю, что найдутся люди, кто так же зададутся данным вопросом.

Описание ситуации

Есть терминальная RDS ферма построенная на базе операционной системы Windows Server 2012 R2, состоящая из 15 RDSH хостов. Для удобства пользователей использующих программу 1С, был настроен через групповую политику скрипт, который при входе пользователя в систему должен был подтянуть конфигурационный файл с необходимым списком баз 1С. Но получилась такая ситуация, что пользователь заходит, видит свой рабочий стол, открывает программу 1С и баз там нет, через 5 минут, перезапустив 1С они магическим образом появляются. Давайте разбираться, что это за задержка и как от нее избавится.

Откуда берется 5-ти минутная задержка

Оказывается с выходом операционных систем Windows Server 2012 R2 и Windows 8.1 компания Microsoft ввела некоторое изменение с применением сценариев и скриптов при входе пользователя в систему. После входа пользователя на компьютер под управлением Windows 8.1 и Windows Server 2012 R2 сценарии входа не запускаются в течение пяти минут. Такое поведение вызывает следующие симптомы:

  • Операции, выполняемые сценариями входа в систему, могут не отображаться на компьютерах под управлением Windows 8.1 и Windows Server 2012 R2 в течение пяти минут после входа пользователя в систему.
  • Ресурсы, предоставляемые сценариями входа в систему, могут быть недоступны пользователям на компьютерах под управлением Windows 8.1 и Windows Server 2012 R2 в течение примерно пяти минут после входа пользователей.

Microsoft ввела данную задержку из-за того, чтобы улучшить ситуацию, когда большое количество скриптов, сценариев, выполняемых при логине пользователя в систему вступают в конфликтную ситуацию, что он даже не может попасть на свой рабочий стол. Данная настройка называется » Настроить задержку сценария входа (Configure Logon Script Delay)». По умолчанию она имеет значение в 5 минут, этого достаточно, чтобы пользователь вошел в систему, которая успела прогрузить все из автозагрузки, после чего к нему можно применять сценарии.

Читайте также:  Windows 10 как выбрать микрофон для

Как убрать 5-ти минутную задержку выполнения сценариев при входе в систему

Так как у вас есть домен Active Directory и вы все настройки выполняете через групповую политику, то откройте редактор групповой политики, найдите нужное вам организационное подразделение, создайте там политику или измените существующую. Нужная нам настройка находится в разделе компьютера, переходим по пути:

Открываем политику «Настроить задержку сценария входа». Режимы работы:

  • Если стоит значение по умолчанию, то будет отложенное выполнение скриптов через 5 минут
  • Если выставлено значение отключено, то сценарии входа будут выполнятся сразу
  • Если поставите 0, то так же политика будет отключена и все будет выполняться сразу при входе, именно данный вариант и советует сама Microsoft
  • Так же вы можете выставить другое значение, вплоть до 1000 минут.

Сохраняем настройку и давайте посмотрим как будет применяться политика при входе пользователя Барбоскина на терминальную ферму. Для этого откройте журналы логов Windows. Нас будет интересовать журнал Microsoft-Windows-GroupPolicy/Operational. Зашел я на терминальный сервер в 18-42 минуты.

Запуск PowerShell скриптов с помощью GPO

Групповые политики Window позволяют запускать различные файлы скриптов при загрузке/ завершении работы компьютера, входе/выходе пользователя. С помощью GPO вы можете исполнять на компьютерах домена не только классические файлы скриптов (.bat, .cmd, ,vbs), но и Startup/Shutdown/Logon/Logoff скрипты PowerShell (.ps1)

В современных операционных системах (Windows 10 / Windows Server 2016) вы можете настраивать запуск логон/логоф скриптов на PowerShell напрямую из редактора GPO.

Запустите консоль управления доменными политиками — GPMC.msc (Group Policy Management сonsole), создайте новую политику и назначьте ее на нужный контейнер с пользователями или компьютерами (можно использовать WMI фильтры GPO для более тонкого нацеливания политики). Перейдите в режим редактирования политики.

Вы должны выбрать раздел GPO для запуска PowerShell скрипта в зависимости от того, когда вы хотите выполнить ваш скрипт.

  • Если PS скрипт должен быть запущен при входе пользователя на компьютер (настройка параметров окружения пользователя, программ, например: вы хотите при входе пользователя автоматическое создавать подпись в Outlook на основе данных из пользователя AD, настроить параметры экранной заставки или стартового экрана) или при выходе пользователя, вам нужно перейти в раздел GPO: UserConfiguration-> Policies-> WindowsSettings-> Scripts(Logon/ Logoff);
  • Если вы хотите запускать скрипт PowerShell при загрузке компьютера (отключение устаревших протоколов: NetBIOS, SMBv1, настройка параметров безопасности компьютера и т.д.) или перед корректным выключением компьютера, вам нужно перейти в секцию GPO с настройками компьютера: Computer Configuration -> Policies -> Windows Settings -> Scripts (Startup / Shutdown).

Запуск PowerShell скрипта при загрузке компьютера с помощью групповой политики

Допустим, нам нужно запускать PowerShell скрипт при загрузке Windows. Для этого нужно выбрать Startup и в открывшемся окне перейди на вкладку PowerShell Scripts.

Теперь нужно скопировать файл с вашим PowerShell скриптом на контроллер домена. Нажмите на кнопку Show Files и перетяните файл с PowerShell скриптом (расширение ps1) в открывшееся окно проводника (консоль автоматически откроет каталог \\yourdomain\SysVol\yourdomain\Policies\<Здесь_GUID_вашей_GPO>\Machine\Scripts\Startup вашей политики в каталоге SysVol на ближайшем контроллере домена).

Читайте также:  Look at path windows

Т.к. мы настраиваем запуск Startup скрипта PowerShell, нужно в разрешениях ps1 файла (или всего каталога Machine\Scripts\Startup) проверить NTFS права доступа на чтение и выполнение (Read & Execute) для группы Domain Computers .

Теперь нужно нажать кнопку Add и добавить скопированный файл скрипта ps1 в список запускаемых политикой PowerShell скриптов.

Если вы запускаете несколько PowerShell скриптов через GPO, вы можете управлять порядком из запуска с помощью кнопок Up/Down.

Для корректного выполнения скриптов PowerShell при загрузке компьютера нужно настроить время задержки перед запуском с помощью политики в разделе Computer Configuration -> Administrative Templates -> System -> Group Policy. Включите политику Configure Logon Script Delay (Настроить задержку сценария входа в систему) и укажите задержку в минутах перед запуском логон-скриптов (достаточное для окончании инициализациии и загрузки всех необходимых служб). Обычно достаточно поставить здесь 1-2 минуты.

По умолчанию в настройках безопасности Windows запрещен запуск PowerShell скриптов. Значение текущей настройки политики запуска сценариев PowerShell можно получить командой Get-ExecutionPolicy. Если политика не настроена, команда вернет Restricted (блокируются любые скрипты). Параметры безопасности запуска PowerShell скриптом можно настроить через политику “Включить выполнение сценариев” / “Turn On Script Execution” (в разделе GPO Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell). Возможные значения политики:

  • Allowonlysignedscripts (AllSigned)– можно запускать только подписанные скрипты PowerShell (“Как подписать скрипт PowerShell?”) –самый лучший сценарий с точки зрения безопасности;
  • Allowlocalscriptsandremotesignedscripts (RemoteSigned)– можно запускать любые локальные и подписанные удаленные скрипты ;
  • Allowallscripts (unrestricted) – самый небезоапасный вариант, т.к. разрешает запуск любых PowerShell скриптов.

Если вам не подходит не один из предложенных сценариев настройки политики запуска PowerShell скриптов, вы можете запускать PowerShell скрипты в режиме Bypass (скрипты не блокируются, предупреждения не появляются).

Для этого PowerShell скрипт нужно запускать из секции Startup -> Scripts. В этой секции вы можете настроить запуск ps1 сценария с помощью создания обычного Startup скрипта, запускающего исполняемый файл powershell.exe (по аналогии со сценарием, описанным в статье). Укажите:

  • Script name: %windir%\System32\WindowsPowerShell\v1.0\powershell.exe
  • Script Parameters: -Noninteractive -ExecutionPolicy Bypass –Noprofile -file %

dp0 при запуске на клиенте автоматически преобразуются в UNC путь до каталога со скриптом на SYSVOL.

В данном случае вы принудительно разрешили запуск любого (даже ненадежного) скрипта PowerShell с помощью параметра Bypass.

Как запустить скрипт входа один раз при входе нового пользователя в Windows Server 2003

В этой статье описано, как настроить сценарий или программу для первого запуска при первом запуске пользователя на компьютере.

Исходная версия продукта: Windows Server 2003
Исходный номер КБ: 325347

Аннотация

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

Эти действия применяются только к новым пользователям, которые никогда не вошел в систему на компьютере. Если у пользователя уже есть локальный профиль пользователя или перемещающийся профиль, сценарий или программа не запускаются.

Настройка сценария для запуска один раз при под учетной записи нового пользователя

Неправильное использование редактора реестра может привести к серьезным проблемам, которые могут потребовать переустановки операционной системы. Корпорация Майкрософт не может гарантировать, что вы сможете решить проблемы, связанные с неправильным использованием редактора реестра. Используйте редактор реестра на свой риск.

При установке продукта на основе Windows Server 2003 создается профиль пользователя по умолчанию. При первом входе пользователя профиль пользователя по умолчанию копируется в профиль пользователя.

Чтобы настроить сценарий или программу для запуска при входе нового пользователя в систему, выполните следующие действия:

Нажмите кнопку Пуск и выберите пункт Выполнить.

В поле «Открыть» введите regedit.exe и выберите «ОК».

Найдите в реестре следующий поднайм:
HKEY_USERS

В меню «Файл» выберите «Загрузить hive».

В диалоговом окне загрузки hive найдите файл Profilepath \Default User\Ntuser.dat, где Profilepath — это расположение файловой системы профиля пользователя по умолчанию. Выберите Открыть.

В диалоговом окне «Загрузка улья» введите имя для улья и выберите «ОК».

Файл Ntuser.dat скрыт. Если не удалось найти или загрузить файл Ntuser.dat, необходимо изменить параметры представления в проводнике Windows. Для этого выполните следующие действия:

  1. Выберите «Начните» и выберите проводник Windows.
  2. Выберите «Инструменты» и выберите «Параметры папки».
  3. Выберите вкладку «Вид».
  4. Щелкните, чтобы скрытие расширений для известных типов файлов.
  5. Выберите «Показать скрытые файлы и папки» и выберите «ОК».
  • Найдите в реестре следующий подмайк: HKEY_USERS\Test\Software\Microsoft\Windows\CurrentVersion\Runonce

    Где Test — это имя, которое вы дали улью Ntuser.dat на шаге 6.

    В меню «Правка» навести указатель на пункт «Новый» и выберите строку «Значение строки».

    В правой области дважды щелкните новое значение.

    В диалоговом окне «Изменение строки» введите полный путь и имя файла для программы или сценария для логотипа, а затем выберите «ОК».

    В левой области выберите «Тестовый улей».

    В меню «Файл» выберите «Выгрузить ульи».

    Выберите «Да» при запросе подтверждения выгрузки улья.

    Закройте редактор реестра. Этот сценарий выполняется для пользователя, у которого нет профиля пользователя. Чтобы просмотреть профили пользователей на локальном компьютере, выполните следующие действия.

    1. Выберите «Начните»,«На панели управления» и выберите пункт «Система».
    2. Выберите вкладку «Дополнительные».
    3. В области профилей пользователей выберите «Параметры».
      Профили пользователей перечислены в диалоговом окне профилей пользователей.
  • —>

    Читайте также:  Где найти картинку с экрана блокировки windows 10
    Оцените статью