Вернуться   W&PBBS > Software > Настройка и оптимизация ОС, общие вопросы
Имя
Пароль
FAQ Пометить все разделы прочитанными



Ответ
Опции темы
Старый 02-08-2015, 19:03 Ссылка на пост    #1
Sticker
Модератор
Снова туда, где море огней
 
Sticker
Техподдержка 2011
На форуме с: 30.09.02
Провел: 1мес. 4нед. 7ч. 52мин.

[info] Windows 10 - автоматическая установка и развёртывание в масштабе предприятия

Велкам, пипл!
Наша радиостанция "Неочевидное-вероятное" снова выходит в эфир для свежей трансляции.

Как развёртывать windows 7, мы уже обсудили там: -=[info] windows 7 - автоматическая установка и развёртывание в масштабе предприятия=-

Что нам потребуется:

1. windows 10 ADK: _http://go.microsoft.com/fwlink/p/?LinkId=526740
2. Образ windows 10 версии Pro или Enterprise.
За этим лучше обратиться на MSDN, версия Pro, которая выкачивается _https://www.microsoft.com/ru-ru/software-download/windows10 - не подходит
3. [опционально] Ознакомиться с _https://msdn.microsoft.com/en-us/library/dd744512(v=ws.10).aspx

Давайте начнём с автоустановки.

Наша задача - добиться, чтобы система задавала минимум вопросов в процессе и добавить свои "хотелки" к конечному результату.

Вариант 1: распаковываем ISO операционки, запускаем windows system image manager (WSIM) и "играем в кубики", наполняя файл автоответов нужными значениями. Сохраняем в файл autounattend.xml и записываем его в корень нашего ISO-файла любым ISO-редактором.
Вариант 2: берём готовый autounattend.xml, правим его по желанию (посолить/поперчить) и записываем его в корень нашего ISO-файла любым ISO-редактором.
Вариант 3: берём флэшку, выкачиваем _https://www.microsoft.com/ru-ru/download/windows-usb-dvd-download-tool , скармливаем ему наш ISO, записываем autounattend.xml в корень флэшки.

Вот тот autounattend.xml, что работает у меня для windows 10 Pro (с комментариями):

Цитата: > <?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<servicing></servicing>
<settings pass="windowsPE"> ; Идёт фаза WinPE. Пока мы общаемся с загрузочным носителем
<component name="Microsoft-windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DiskConfiguration>
<WillShowUI>OnError</WillShowUI>
</DiskConfiguration>
<UserData>
<ProductKey>
<Key>W269N-WFGWX-YVC9B-4J6C9-T83GX</Key> ; Официальный ключ для активации через KMS
<WillShowUI>OnError</WillShowUI>
</ProductKey>
<AcceptEula>true</AcceptEula> ; Пропускаем пользовательское соглашение
<FullName>*</FullName>; На какого пользователя регистрируем
<Organization>*</Organization> ; На какую организацию регистрируем
</UserData>
<EnableFirewall>false</EnableFirewall> ; Отключаем межсетевой экран на время установки
<EnableNetwork>true</EnableNetwork> ; Включаем сеть
<ImageInstall>
<OSImage>
<InstallFrom>
<MetaData wcm:action="add">
<Key> /IMAGE/NAME</Key>
<Value>windows 10 Pro</Value> ; Указываем ту редакцию, которую будем устанавливать
</MetaData>
</InstallFrom>
</OSImage>
</ImageInstall>
</component>
<component name="Microsoft-windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SetupUILanguage>
<UILanguage>ru-RU</UILanguage>
</SetupUILanguage>
<InputLocale>en-US</InputLocale>
<SystemLocale>ru-RU</SystemLocale>
<UILanguage>ru-RU</UILanguage>
<UILanguageFallback>en-US</UILanguageFallback>
<UserLocale>ru-RU</UserLocale>
</component> ; Да-да, мы любим английскую раскладку по умолчанию, а всё остальное - по-русски!
</settings>
<settings pass="specialize"> ; Пошла фаза specialize. Файлы ОС скопированы на диск, идёт конфигурация
<component name="Microsoft-windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DisableWER>1</DisableWER> ; Отключаем windows Error Reporting
</component>
<component name="Microsoft-windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<AutoLogon>
<Password>
<Value>USE_WSIM</Value> ; В первый раз мы будем входить под аккаунтом локального администратора. Пароль кодируется, поэтому нужно будет поменять его через WSIM. В результате автовхода аккаунт администатора будет автоматически разблокирован
<PlainText>false</PlainText> ; Но вы можете сменить false на true и ввести выше пароль в явном виде
</Password>
<Enabled>true</Enabled>
<LogonCount>1</LogonCount>
<Username>Administrator</Username> ; Независимо от того, в какой локализации вы ставите систему - файл ответов принимает аккаунт администратора как Administrator
</AutoLogon>
<ProductKey>W269N-WFGWX-YVC9B-4J6C9-T83GX</ProductKey> ; Ключи в фазах PE и specialize разрешается иметь разными (например, первый - dummy, а второй - MAK. Но у нас всё идёт через KMS
<ComputerName>*</ComputerName> ; Имя компьютера будет сгенерировано автоматически
</component>
<component name="Microsoft-windows-IE-InternetExplorer" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SearchScopes>
<Scope wcm:action="add">
<ScopeDefault>true</ScopeDefault>
<ScopeUrl>http://www.google.com/search?q={searchTerms}</ScopeUrl>
<ScopeDisplayName>Google</ScopeDisplayName>
<ScopeKey>Google</ScopeKey>
</Scope>
</SearchScopes> ; Ставим поиск Google по умолчанию в IE
<DisableAccelerators>true</DisableAccelerators>
<DisableFirstRunWizard>true</DisableFirstRunWizard>
<DisableOOBAccelerators>true</DisableOOBAccelerators>
<ShowInformationBar>true</ShowInformationBar>
</component> ; Отключаем все экраны приветствия в IE
<component name="Microsoft-windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<fDenyTSConnections>false</fDenyTSConnections> ; Включаем RDP, по умолчанию будет авторизация NLA
</component>
</settings>
<settings pass="oobeSystem"> ; Вышли на "экран приветствия". Финальные настройки
<component name="Microsoft-windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<InputLocale>en-US</InputLocale>
<SystemLocale>ru-RU</SystemLocale>
<UILanguage>ru-RU</UILanguage>
<UILanguageFallback>en-US</UILanguageFallback>
<UserLocale>ru-RU</UserLocale> ; Да-да, русская локаль и английская раскладка по умолчанию!
</component>
<component name="Microsoft-windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<OOBE>
<HideEULAPage>true</HideEULAPage>
<HideLocalAccountScreen>true</HideLocalAccountScreen>
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<ProtectYourPC>3</ProtectYourPC> ; Это всё нужно, чтобы вам не задавались вопросы, нужно ли подключаться к wifi и принимаете ли вы лицензионное соглашение
</OOBE>
<windowsFeatures>
<ShowInternetExplorer>true</ShowInternetExplorer>
<ShowMediaCenter>false</ShowMediaCenter>
<ShowwindowsMediaPlayer>false</ShowwindowsMediaPlayer> ; Не совсем уверен, что это действует, но пусть будет
</windowsFeatures>
<RegisteredOwner>*</RegisteredOwner>
<RegisteredOrganization>*</RegisteredOrganization> ; Имя, организация...
<UserAccounts>
<AdministratorPassword>
<Value>USE_WSIM</Value>
<PlainText>false</PlainText> ; См. выше. Нужно либо использовать WSIM, либо менять plaintext на true
</AdministratorPassword>
</UserAccounts>
<TimeZone>Russian Standard Time</TimeZone> ; Временнная зона. Вписывается руками, для просмотра доступных можно набрать tzutil /l
</component>
</settings>
<cpi:offlineImage cpi:source="wim:c:/install.wim#windows 10 Pro" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>


Установка прошла нормально? Отлично, теперь нашпиговываем систему нужным софтом, чтобы совершить сакральный sysprep.
Попутно хочу заметить, что категорически не стоит использовать один и тот же файл автоответов для автоустановки и sysprep. Почему? Во-первых, это не рекомендует m$, во-вторых, некоторые дублирующиеся ответы не дадут sysprep нормально отработать (помните, мы меняли провайдера поиска в IE? Во второй раз таокй же параметр не даст sysprep отработать).

Самураи, наверное, уже заметили, что в файле автоответов не отключался UAC и windows Defender. Это сделано по той причине, что при отключенном UAC не работают "плиточные" приложения типа "погоды", а defender отказывается отключаться вообще. Это - норма! (С)

Также не был исправлен баг со включением компьютера в домен. Поясню - подключение в домен возможно только на фазе specialize, но имя для него присваивается только в фазе oobe. Поэтому машина в итоге якобы оказывается в домене, но учётная запись для неё там не создаётся. m$ до сих пор рекомендует использовать автогенерируемое имя (параметр computername), но это жутко неудобно - её же потом переименовывать...

Поэтому - перед sysprep будем работать напильником. Готовы? Начали.

Первым делом нужно подготовить файл автотоветов для sysprep.
У меня получился такой:
Цитата: > <?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="specialize">
<component name="Microsoft-windows-ErrorReportingCore" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DisableWER>1</DisableWER>
</component> ; Отключим windows error reporting
<component name="Microsoft-windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> ; Включаем машину в домен
<Identification>
<Credentials>
<Domain>domain</Domain>
<Password>password</Password>
<Username>user</Username>
</Credentials>
<JoinDomain>domain</JoinDomain>
<TimeoutPeriodInMinutes>5</TimeoutPeriodInMinutes> ; Обратите внимание - даже если сеть к машине не подключена - то операция ввода в домен идёт по умолчанию 15 минут! Минимальное время ожидания - 5 минут, его и выставим <MachineObjectOU>OU=Computers,DC=domain,DC=local</MachineObjectOU> ; Это не обязательно, но при правильном указании DNAME - работает
</Identification>
</component>
<component name="Microsoft-windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<AutoLogon>
<Password>
<Value>USE_WSIM</Value>
<PlainText>false</PlainText> ; Пароль администратора, рассматривался раньше
</Password>
<Enabled>true</Enabled>
<LogonCount>1</LogonCount>
<Username>Administrator</Username>
</AutoLogon>
<ProductKey>W269N-WFGWX-YVC9B-4J6C9-T83GX</ProductKey> ; KMS-клиентский ключ
<ComputerName>CNAME_REPLACE</ComputerName> ; Об этом чуть позже...
<CopyProfile>true</CopyProfile> ; Очень хороший параметр, копирующий настройки из того профиля, под которым мы делали настройку, в Default User. То есть все пользователи, впервые заходящие на машину, будут иметь тот же рабочий стол и те же настройки.
</component>
<component name="Microsoft-windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<fDenyTSConnections>false</fDenyTSConnections> ; RDP включаем
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<InputLocale>en-US</InputLocale>
<SystemLocale>ru-RU</SystemLocale>
<UILanguage>ru-RU</UILanguage>
<UILanguageFallback>en-US</UILanguageFallback>
<UserLocale>ru-RU</UserLocale>
</component>
<component name="Microsoft-windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<OOBE>
<HideEULAPage>true</HideEULAPage>
<HideLocalAccountScreen>true</HideLocalAccountScreen>
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
<HideOnlineAccountScreens>true</HideOnlineAccountScreens>
<HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
<ProtectYourPC>1</ProtectYourPC>
</OOBE>
<windowsFeatures>
<ShowInternetExplorer>true</ShowInternetExplorer>
<ShowMediaCenter>false</ShowMediaCenter>
<ShowwindowsMediaPlayer>false</ShowwindowsMediaPlayer>
</windowsFeatures>
<RegisteredOwner>*</RegisteredOwner>
<RegisteredOrganization>*</RegisteredOrganization>
<UserAccounts>
<AdministratorPassword>
<Value>USE_WSIM</Value>
<PlainText>false</PlainText>
</AdministratorPassword>
</UserAccounts>
<TimeZone>Russian Standard Time</TimeZone>
</component>
</settings> ; Тут всё аналогично с файлом автоустановки
<cpi:offlineImage cpi:source="wim:c:/install.wim#windows 10 Pro" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>


Сохраните этот файл под названием sysprep.xml

Далее - нужно применить "костыль". Ещё с времён windows 7 имя компьютера запрашивается на фазе OOBE, когда машина ну никак не может быть включена в домен, это происходит на фазе specialize.

Создайте на вашей любимой флэшке каталог sysprep. Скопируйте туда sysprep.xml. Подмонтируйте её на букву D

Теперь создайте в том же каталоге файлы:

modcname.cmd
Код:
reg add HKLM\System\Setup /v CmdLine /t REG_SZ /d "wscript C:\windows\System32\Sysprep\cname.vbs" /f

cname.vbs
Код:
Option Explicit
Dim answer, computerName, unattendFile, WshShell, fso, unattendFileObject, strContents, charnum

unattendFile = "C:\windows\Panther\unattend.xml"
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Do While answer <> vbYes
 Do
 computerName = InputBox("Enter Computer Name:", "Computer Name")
 if Len(computername) > 15 Then
 wscript.echo "Error: computername is longer than 15 symbols"
 else exit do
 end if
 Loop
     answer = MsgBox("Is this correct?" & vbCrLf & "Computer Name: " & computerName & vbCrLf & "Length: " & Len(computername) , vbYesNo, "Verify Name")
Loop
If fso.FileExists(unattendFile) = False Then
   wscript.echo "ERROR: Could not find the unattend file"
Else
   'Read the unattend file in and replace apprpriate variables
   Set unattendFileObject = fso.OpenTextFile(unattendFile, 1)
   strContents = unattendFileObject.ReadAll
   strContents = Replace(strContents, "CNAME_REPLACE", computerName)
   unattendFileObject.Close
   'Write the updated contents back to the unattend file
   Set unattendFileObject = fso.OpenTextFile(unattendFile, 2)
   unattendFileObject.Write(strContents)
   unattendFileObject.Close
End If
' Launch setup (will use the modified unattend.xml)
WScript.Sleep 5000
WshShell.Run "%WINDIR%\System32\oobe\windeploy.exe", 0, True

и prepare.cmd, чтобы не париться с копированием вручную:
Код:
@echo off
copy /Y cname.vbs c:\windows\system32\sysprep\
start /wait c:\windows\system32\sysprep\sysprep.exe /unattend:d:\sysprep\sysprep.xml /generalize /oobe /quit
call modcname.cmd
pause.

Готовы "к запечатыванию?" Теперь запустите prepare.cmd.
После того, как отработает - выключите машину и выполните захват в wim, gho, vhd - кому как удобней.
В результате при развёртывании системы выскочит сообщение о необходимости назвать компьютер, после ввода поменяет его в unantend.xml - и машина должна благополучно включиться в домен с нужным именем.

Благодарности за помощь в написании этой статьи:
Mischa Taylor: http://misheska.com/blog/2013/07/27...stall-settings/
Mike EEC: https://social.technet.microsoft.co...a-computer-name

Редактировалось Sticker
29-10-2019 20:03.
Sticker вне форума   Вставить выделенное      Ответить с цитированием
Старый 02-04-2016, 15:42 Ссылка на пост    #2
Sticker
Модератор
Снова туда, где море огней
 
Sticker
Техподдержка 2011
На форуме с: 30.09.02
Провел: 1мес. 4нед. 7ч. 52мин.

И ещё о варианте, если вы будете sysprep-ить десятку, перед этим выполнив установку в режиме обновления со старой (Win7, 8 или предыдущего билда 10). По мне - так это вполне удобно, не нужно поднимать всё заново, устанавливая софт и выполняя хитроумные настройки.

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

Но и тут можно поработать напильником.

1. Само собой, ставим все апдейты.
2. Очень рекомендую перед "запечатыванием" выполнить cleanmgr, отметив все галки. Это не только подчистит ненужные временные файлы, но и удалит windows.old, а также выкинет пакеты апдейтов, которые были перекрыты другими.
3. Для полной эстетики можно удалить C:\Users\Default.migrated

4. А вот и рецепт настойки напильника:
Код:
reg delete HKLM\SYSTEM\Setup\Upgrade /f
reg delete HKLM\SYSTEM\Setup /v Upgrade /f
reg add HKLM\SYSTEM\Setup\Status\SysprepStatus /v CleanupState /t REG_DWORD /d 2 /f
reg add HKLM\SYSTEM\Setup\Status\SysprepStatus /v GeneralizationState /t REG_DWORD /d 7 /f
cscript c:\windows\System32\slmgr.vbs -dli
(скорректировано)
Сохраняем в *.bat и запускаем. После употребления sysprep отработает в обычном режиме.

Благодарность Harry Caskey за первоначальный вариант: http://www.harrycaskey.com/how-to-r...erating-system/
Благодарность Redline за скорректированный вариант: http://moonlightsoft.blogspot.ru/20...-vista2008.html

Редактировалось Sticker
19-09-2018 23:13.
Sticker вне форума   Вставить выделенное      Ответить с цитированием
Старый 23-04-2016, 02:37 Ссылка на пост    #3
Sticker
Модератор
Снова туда, где море огней
 
Sticker
Техподдержка 2011
На форуме с: 30.09.02
Провел: 1мес. 4нед. 7ч. 52мин.



Теперь - немного об интеграции драйверов.

Я придерживаюсь стратегии держать их в "золотом образе"уже нет, см. -*[info] windows 10 - автоматическая установка и развёртывание в масштабе предприятия*-.

Сведения ниже в посте приводятся для понимания работы setupcomplete.cmd и dpinst.

Спойлер

Редактировалось Sticker
29-10-2017 13:47.
Sticker вне форума   Вставить выделенное      Ответить с цитированием
Старый 31-05-2016, 22:12 Ссылка на пост    #4
Sticker
Модератор
Снова туда, где море огней
 
Sticker
Техподдержка 2011
На форуме с: 30.09.02
Провел: 1мес. 4нед. 7ч. 52мин.

Включил проверку в cname.vbs, не длиннее ли имя компьютера 15 символов (иначе при разворачивании выйдет ошибка), см.шапку.
Sticker вне форума   Вставить выделенное      Ответить с цитированием
Старый 18-08-2017, 14:44 Ссылка на пост    #5
Sticker
Модератор
Снова туда, где море огней
 
Sticker
Техподдержка 2011
На форуме с: 30.09.02
Провел: 1мес. 4нед. 7ч. 52мин.

О выполнении задач при первом входе в систему (aka Runonceex)

Я решил поменять стратегию и исключить из образа драйверы по-максимуму, так как вариант с сетевым централизованным обновляемым их хранилищем будет удобнее. Установка драйверов будет идти сразу после первого логона.

Более того, с помощью данного метода можно решить и другие задачи (например, применение твиков, доустановка ПО, апдейтов и тд). Причём это всё можно будет гибко изменять, часто даже не пересобирая образ.

Единственное условие - машина на время установки обязательно должна быть подключена в локальную сеть.

1. Наш файл C:\windows\setup\scripts\setupcomplete.cmd изменим таким образом:
Код:
call c:\windows\setup\scripts\runonce.cmd
2. В C:\windows\setup\scripts создадим файл runonce.cmd, который создаст ветку реестра HKLM\SOFTWARE\Microsoft\windows\CurrentVersion\RunOnceEx с необходимым нам наполнением, к примеру:
Код:
@echo off

SET KEY=HKLM\SOFTWARE\Microsoft\windows\CurrentVersion\RunOnceEx

REG ADD %KEY% /V TITLE /D "Post-install tasks" /f

REG ADD %KEY%\001 /VE /D "Rebooting" /f
REG ADD %KEY%\001 /V 1 /D "shutdown -r -t 05 -f" /f

REG ADD %KEY%\002 /VE /D "Meditating" /f
REG ADD %KEY%\002 /V 1 /D "timeout 10" /f

REG ADD %KEY%\003 /VE /D "Installing chipset drivers" /f
REG ADD %KEY%\003 /V 1 /D "\\server\share\SetupChipset.exe -s -norestart" /f

REG ADD %KEY%\004 /VE /D "Installing driver-pack" /f
REG ADD %KEY%\004 /V 1 /D "\\server\share\DPInst64.exe /S /SA /SE /SW /SH" /f

REG ADD %KEY%\005 /VE /D "Finalizing installation" /f
REG ADD %KEY%\005 /V 1 /D "\\server\share\mytasks.cmd" /f

EXIT
3. В C:\windows\drivers ничего не храним, теперь это контрпродуктивно...
4. Теперь о том, почему в списке команд присутствует перезагрузка. Уж не знаю, с чем это связано, но после первого логина после установки десятка отчаянно тупит (не устанавливается половина драйверов, не открываются некоторые апплеты...), поэтому первая вещь после установки, которую надо выполнить - это перезагрузка. Вторая команда с таймаутом - это "заглушка", чтобы не успел выполняться и не удалился до второй перезагрузки пункт с установкой драйвер-пака.
Чтобы два раза автоматом войти в систему, нужно будет поменять sysprep.xml/unattend.xml следующим образом:
Цитата: > <AutoLogon>
<Password>
...
<Enabled>true</Enabled>
<LogonCount>2</LogonCount>
<Username>Administrator</Username>
</AutoLogon>


Теперь организуем сетевой ресурс \\server\share (идеально - с гостевым доступом, или с заведённым пользователем с той же учёткой, под которой мы делаем первый вход в систему после разворачивания образа). Кидаем туда драйвер-пак и dpinst. При необходимости докидываем туда же дополнительные патчи, апдейты, установщики и т.д.

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

Редактировалось Sticker
19-08-2017 00:12.
Sticker вне форума   Вставить выделенное      Ответить с цитированием
Старый 19-08-2017, 00:49 Ссылка на пост    #6
Sticker
Модератор
Снова туда, где море огней
 
Sticker
Техподдержка 2011
На форуме с: 30.09.02
Провел: 1мес. 4нед. 7ч. 52мин.

Небольшое дополнение касаемо драйверов - практически все драйверы от семёрки прекрасно проглатываются десяткой, кроме видео. Тут всё жёстко.
Так что для графических адаптеров нужно заводить в репозитарии отдельный раздел исключительно под десятку.
Sticker вне форума   Вставить выделенное      Ответить с цитированием
Старый 28-10-2017, 19:39 Ссылка на пост    #7
Sticker
Модератор
Снова туда, где море огней
 
Sticker
Техподдержка 2011
На форуме с: 30.09.02
Провел: 1мес. 4нед. 7ч. 52мин.

Если кто-то готовит разворачивание билда 1709 и автологон не отрабатывает - это <censored>.

http://www.winhelponline.com/blog/windows-10-sign-screen-appears-twice-fall-creators-update/

Меняем вот так:

Sticker вне форума   Вставить выделенное      Ответить с цитированием
Старый 29-10-2017, 13:51 Ссылка на пост    #8
Sticker
Модератор
Снова туда, где море огней
 
Sticker
Техподдержка 2011
На форуме с: 30.09.02
Провел: 1мес. 4нед. 7ч. 52мин.

Скорректирован скрипт для подчистки следов апгрейда ОС, чтобы sysprep отработал - во втором посте.

Редактировалось Sticker
29-10-2019 20:02.
Sticker вне форума   Вставить выделенное      Ответить с цитированием
Старый 09-02-2018, 14:07 Ссылка на пост    #9
Sticker
Модератор
Снова туда, где море огней
 
Sticker
Техподдержка 2011
На форуме с: 30.09.02
Провел: 1мес. 4нед. 7ч. 52мин.

Немного о кастомизации.

1. "Выносим" плитки из Start Menu и заменяем прикреплённые ярлыки в панели задач на свои.

Самый простой способ - создать файл кастомизации LayoutModification.xml и скопировать его в профиль по умолчанию.

Подробнее о формате таких файлов: https://docs.microsoft.com/ru-ru/wi...ns-and-policies

Файл у меня имеет такой вид:
Код:
<LayoutModificationTemplate
    xmlns="http://schemas.microsoft.com/Start/2014/LayoutModification"
    xmlns:defaultlayout="http://schemas.microsoft.com/Start/2014/FullDefaultLayout"
    xmlns:start="http://schemas.microsoft.com/Start/2014/StartLayout"
    xmlns:taskbar="http://schemas.microsoft.com/Start/2014/TaskbarLayout"
    Version="1">
<LayoutOptions StartTileGroupCellWidth="6" />
<DefaultLayoutOverride>
<StartLayoutCollection>
<defaultlayout:StartLayout GroupCellWidth="6" />
</StartLayoutCollection>
</DefaultLayoutOverride>
<CustomTaskbarLayoutCollection PinListPlacement="Replace">
<defaultlayout:TaskbarLayout>
<taskbar:TaskbarPinList>
<taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\windows\Start Menu\Programs\Accessories\Internet Explorer.lnk" />
<taskbar:DesktopApp DesktopApplicationLinkPath="%APPDATA%\Microsoft\windows\Start Menu\Programs\System Tools\File Explorer.lnk" />
<taskbar:DesktopApp DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\windows\Start Menu\Programs\Google Chrome.lnk" />
<taskbar:DesktopApp DesktopApplicationLinkPath="%ALLUSERSPROFILE%\Microsoft\windows\Start Menu\Programs\Microsoft Office\Microsoft Outlook 2010.lnk" />
</taskbar:TaskbarPinList>
</defaultlayout:TaskbarLayout>
</CustomTaskbarLayoutCollection>
</LayoutModificationTemplate>

Затем положим его рядом с нашим prepare.cmd и в командник добавим строчку
Код:
copy /y %~dp0LayoutModification.xml "%localappdata%\Microsoft\windows\Shell\"

В итоге при использовании CopyProfile=True в файле автоответов кастомизация попадёт в профиль по умолчанию и при входе в систему пользователи будут иметь "почти классическое" меню "Пуск" без плиток и 4 ярлыка на таскбаре (Хром, IE, проводник и Outlook).

2. "Нежное" удаление плиточных приложений (начиная с билда 1803 нежно не получится, см. пост ниже).
Спойлер

Редактировалось Sticker
19-09-2018 23:20.
Sticker вне форума   Вставить выделенное      Ответить с цитированием
Старый 06-05-2018, 19:33 Ссылка на пост    #10
Sticker
Модератор
Снова туда, где море огней
 
Sticker
Техподдержка 2011
На форуме с: 30.09.02
Провел: 1мес. 4нед. 7ч. 52мин.

В 1803 с плиточными приложениями стало ещё суровей. После десяточки попыток сделать sysprep с теми же настройками, как в 1709 - каким-то чудом прошла только одна, а все остальные sysprep обрывал, ссылаясь на неисправимую ошибку.

Курение %windir%\system32\sysprep\panther\setupact.log выявило, что запечатывание обрывалось из-за невозможности удаления appx (обычно - *LanguageExperience*). Перенесение удаления "плиток" до sysprep скриптом, указанным в предыдущем посте, тоже не сильно помогло - ругань пошла на совершенно новые appx.

В итоге пришлось оставить удаление "плиток" до sysprep (и для надёжности - ещё и в setupcomplete.cmd) следующим скриптом (удаляем всё, кроме "Калькулятора"):
Код:
Import-module Appx
Import-module Dism

Get-AppxPackage -AllUsers | where-object {$_.name -notlike "*Microsoft.windowsCalculator*"} | Remove-AppxPackage
Get-AppxProvisionedPackage -online | where-object {$_.packagename -notlike "*Microsoft.windowsCalculator*"} | Remove-AppxProvisionedPackage -online

и в итоге prepare.cmd приобретает следующий вид:
Код:
@echo off
copy /Y %~dp0cname.vbs c:\windows\system32\sysprep\
copy /Y %~dp0remappx.ps1 %systemroot%\setup\scripts\
copy /y %~dp0LayoutModification.xml "%localappdata%\Microsoft\windows\Shell\"
powershell -executionpolicy bypass %systemroot%\setup\scripts\remappx.ps1 >nul
powershell -executionpolicy bypass %systemroot%\setup\scripts\remappx.ps1 >nul
powershell -executionpolicy bypass %systemroot%\setup\scripts\remappx.ps1 >nul
start /wait c:\windows\system32\sysprep\sysprep.exe /unattend:d:\sysprep\sysprep.xml /generalize /oobe /quit
call modcname.cmd
pause.

С прогоном скрипта 3 раза - точно работает. Но может хватить и двух - зависит от погоды в Рэдмонде <sarcasm>.

Редактировалось Sticker
06-05-2018 21:32.
Sticker вне форума   Вставить выделенное      Ответить с цитированием
Старый 15-10-2018, 22:19 Ссылка на пост    #11
Sticker
Модератор
Снова туда, где море огней
 
Sticker
Техподдержка 2011
На форуме с: 30.09.02
Провел: 1мес. 4нед. 7ч. 52мин.

В build 1809 в плане процесса sysprep ничего особенно не поменялось.

Из неприятного - похоже, окончательно сломали установку видеодрайверов через dpinst. Причём только видеодрайверов. Либо device manager и указание, откуда брать драйверы, либо фирменный инсталлятор от производителя видеоадаптера.

Печаль.

P.S. всё же Nvidia устанавливается через dpinst, но не устанавливается Intel...
P.P.S. похоже, проблема касается только видеодрайверов для Core 8-го поколения.

Редактировалось Sticker
22-10-2018 12:50.
Sticker вне форума   Вставить выделенное      Ответить с цитированием
Старый 14-01-2019, 23:48 Ссылка на пост    #12
Sticker
Модератор
Снова туда, где море огней
 
Sticker
Техподдержка 2011
На форуме с: 30.09.02
Провел: 1мес. 4нед. 7ч. 52мин.

Об уменьшении размера образа.

Весьма ощутимый эффект может дать всего одна команда перед запечатыванием:
Код:
Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase

В результате выполнения из WinSxS удалятся старые и "перекрытые" версии компонентов, выигрыш в свободном месте может составить несколько гигабайт. Единственное но - деинсталлировать установленные на тот момент апдейты уже будет нельзя.

Подробнее почитать можно тут: _https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/clean-up-the-winsxs-folder
Sticker вне форума   Вставить выделенное      Ответить с цитированием
Старый 29-10-2019, 20:00 Ссылка на пост    #13
Sticker
Модератор
Снова туда, где море огней
 
Sticker
Техподдержка 2011
На форуме с: 30.09.02
Провел: 1мес. 4нед. 7ч. 52мин.


Why did my PC restart?

В какой-то момент после обновления на билд 1903 я заметил любопытную картину. Хотя в подготовке к sysprep ничего не менялось - система стала разворачиваться весьма неторопливо.

Выражалось это в 15-минутном ожидании на фазе "Getting ready" после первой перезагрузки. Цепочка шариков всё это время медитативно вращалась, никакой дисковой активности не было, машина уже была удалённо доступна через WMI, загрузка процессора была около 2-5% - но система просто выжидала какой-то тайм-аут, попутно занимаясь стандартными процедурами "холостого хода".

По прошествии 15 минут ОС делала резкий рывок и дальше уже шла на первый логон, как и было прописано в unattend.xml. От характеристик ПК картина никак не зависела - ждать приходилось ровно столько же даже на топовых моделях с NVMe-дисками.

Замедление разворачивания на 15 минут было абсолютно некритично и по SLA ешё был огоромный запас, но мне стало жутко интересно, что это за "новинка" и как с ней бороться.

Первым делом я сунулся в setupcomplete.cmd и убрал оттуда дополнительный вызов скрипта, удаляющего плиточные приложения. На проблему это никак не повлияло, но теперь могу сказать, что достаточно их удалять только до запуска sysprep.

В процессе гугления стандартных тайм-аутов на 15 минут в ОС windows я наткнулся на несколько упоминаний того, что присутствие в файле автоответов параметров <SkipMachineOOBE> и <SkipUserOOBE> может вызвать в процессе разворачивания как сильную задумчивость, так и яркие галлюцинации. Потому что данные параметры упразднены ещё со времён Висты и якобы не должны использоваться в продакшене вообще.

Ну что ж, был неправ (шапка скорректирована). Убираю параметры из unattend.xml, запускаю разворачивание и... вау, мы моментально проскакиваем "Getting ready" и выходим на финишную прямую - надпись "Подождите" на голубом фоне. Светодиод активности диска весело моргает, кулер повышает-понижает обороты - в общем, уважаемые пассажиры, пристегните ремни, мы готовимся к посад... эээ, что?? Oooh, shit!!

Система на полном ходу уходит в незапланированную перезагрузку и после непродолжительной паузы выдаёт картинку из начала поста. Круто, я таких раньше никогда не видел, но что теперь-то не так?

Задачка оказалась "со звёздочкой". Дело в том, что групповыми политиками у нас останавливались и отключались две "телеметрические" службы - DiagTrack и dmwappushservice. Политики применяются как раз после первой перезагрузки. А в последних билдах windows 10 перед окном приветствия должна обязательно "позвонить домой" (когда появляется надпись про "важные обновления"), для чего задействуются упомянутые службы. Если они отключены - ОС впадает в панику, что приводит к описанной неожиданной перезагрузке.

Чтобы оставить всё "как было" (ну, почти), нужно сделать две вещи:

1. В setupcomplete.cmd вписать следующее:
Код:
sc config DiagTrack start= auto
net start DiagTrack
sc config dmwappushservice start= auto
net start dmwappushservice
2. Политику сконфигурировать так, чтобы службы отключались, но сразу не останавливались - иначе фокус не получится. Одну загрузку со слежкой переживём.

Теперь всё работает как надо. Союз напильника и Гугла в очередной раз спасает ситуацию!

--
Благодарю за помощь Roadrunnerli: https://social.technet.microsoft.co...win10itprosetup

Редактировалось Sticker
29-10-2019 22:23.
Sticker вне форума   Вставить выделенное      Ответить с цитированием
Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра Оценка этой теме
Оценка этой теме:

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

vB коды Вкл.
[IMG] код Вкл.
Быстрый переход





Предупреждение: Никакого детского порно в запросах и ссылках.
Любое упоминание детского порно в контексте будет пресекаться.


Часовой пояс GMT +4, серверное время: 19:16.