7 / 2008 R2 - WDS discover image + автоматическая установка

Ответить
Аватара пользователя
aldar

7 / 2008 R2 - WDS discover image + автоматическая установка

Сообщение aldar »

Здравствуйте!



пролог: по
Общее - [статья] Создание настроенного образа операционной системы
статье сделал эталонный образ системы. По циклам этих статей сделал файл ответов и интеграцию драйверов. Вроде всё хорошо но возникла потребность включать комьютеры в домен. Для этого развернул WDSServer и сразу натолкнулся на проблему: - клиентский компьютер и WDSServer в разных DHCP подсетях. Нашел решение использовать discover image WDSServer'a. То есть создал boot.wim, который находит WDSServer, запихал его в стандартный образ windows в папку sources вместо стандартного boot.wim.



Проблема: не знаю как использовать
файл ответов

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="windowsPE">
        <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" 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>en-US</UILanguage>
            </SetupUILanguage>
            <InputLocale>en-US</InputLocale>
            <SystemLocale>en-US</SystemLocale>
            <UILanguage>en-US</UILanguage>
            <UserLocale>en-US</UserLocale>
        </component>
        <component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <ImageInstall>
                <OSImage>
                    <InstallFrom>
                        <MetaData wcm:action="add">
                            <Key>/IMAGE/INDEX</Key>
                            <Value>1</Value>
                        </MetaData>
                    </InstallFrom>
                </OSImage>
            </ImageInstall>
            <UserData>
                <ProductKey>
                    <Key>*********************</Key>
                    <WillShowUI>OnError</WillShowUI>
                </ProductKey>
                <AcceptEula>true</AcceptEula>
                <FullName></FullName>
                <Organization>имя организации</Organization>
            </UserData>
        </component>
    </settings>
    <settings pass="specialize">
        <component name="Microsoft-Windows-Security-Licensing-SLC-UX" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <SkipAutoActivation>true</SkipAutoActivation>
        </component>
        <component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="x86" 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>
                    <Password>%USERPASSWORD%</Password>
                    <Username>%USERNAME%</Username>
                </Credentials>
                <JoinDomain>имя домена</JoinDomain>
                <UnsecureJoin>true</UnsecureJoin>
            </Identification>
        </component>
    </settings>
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" 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>
                <Enabled>true</Enabled>
                <Username>Administrator</Username>
                <LogonCount>2</LogonCount>
            </AutoLogon>
            <OOBE>
                <SkipUserOOBE>true</SkipUserOOBE>
                <SkipMachineOOBE>true</SkipMachineOOBE>
                <ProtectYourPC>1</ProtectYourPC>
                <NetworkLocation>Work</NetworkLocation>
                <HideEULAPage>true</HideEULAPage>
                <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
            </OOBE>           
            <UserAccounts>
                <DomainAccounts>
                    <DomainAccountList wcm:action="add">
                        <Domain>имя домена</Domain>
                        <DomainAccount wcm:action="add">
                            <Group>Administrators;Users</Group>
                            <Name>Domain Admins</Name>
                        </DomainAccount>
                    </DomainAccountList>
                </DomainAccounts>
            </UserAccounts>
        </component>
        <component name="Microsoft-Windows-International-Core" processorArchitecture="x86" 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>EN-US</SystemLocale>
            <UILanguage>EN-US</UILanguage>
            <UserLocale>EN-US</UserLocale>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="wim:c:/7work/dvd/sources/install.wim#Windows 7 ULTIMATE" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>
По идее их должно быть два: один для boot.wim, второй для install.wim. Не знаю как его правильней разделить, и после деления куда их засовывать? Есть варианты:

в корне диска

в диске -> папка sources
вкладка Client';}else{ div.style.display = 'none'; this.innerHTML = 'в настройках WDS сервера ->вкладка Client';} return false">в настройках WDS сервера ->вкладка Client

Изображениеt



свойства приготовленного образа';}else{ div.style.display = 'none'; this.innerHTML = ' в консоле WDS -> свойства приготовленного образа';} return false"> в консоле WDS -> свойства приготовленного образа

Изображение




Правильно ли я ввожу в домен?
Аватара пользователя
aldar

Re: 7 / 2008 R2 - WDS discover image + автоматическая установка

Сообщение aldar »

На самом деле для ввода в домен не обязательно иметь WDS сервер.

Нужно просто в файл ответов добавить вот такой код:

Код:

Код: Выделить всё

<component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="x86" 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>
                    <Password>пароль пользователя</Password>
                    <Username>имя пользователя</Username>
                </Credentials>
                <JoinDomain>имя домена.com</JoinDomain>
                <UnsecureJoin>false</UnsecureJoin>
                <DebugJoin>true</DebugJoin>
            </Identification>
        </component>

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



Но вот появился другой вопрос, как сделать так чтобы программа установки запрашивала имя компьютера. Пытался сделать по этой
статье
. То есть я загрузил файлы Winpeshi.ini и domainOU.vbs добавил в нужные папки в boot.wim. Но при установке ничего не спрашивает. Как сделать чтобы спрашивало? Можете дать какой-нибудь альтернативный вариант или более подробную статью. И если спросит, то на каком этапе установке будет српашивать?
Аватара пользователя
sattva

Re: 7 / 2008 R2 - WDS discover image + автоматическая установка

Сообщение sattva »

Цитата:



Пытался сделать по этой статье.



Как всегда Microsoft - напортачил...

вот правильный синтаксис domainOU.vbs





Код:

Код: Выделить всё

Option Explicit
Dim computerName, OU, unattendFile, WshShell, result, fso, unattendFileObject, strContents
 '---------------------------------------------------------------------- 
unattendFile = "C:\Windows\Panther\unattend.xml"
' параметры, заданные пользователем '---------------------------------------------------------------------- 
Set WshShell = WScript.CreateObject("WScript.Shell")
dim answer 
do while answer  vbYes
	computerName = InputBox("Введите имя компьютера", "Имя компьютера")
	OU = InputBox("Введите различающееся имя нужного подразделения", "Подразделение")
	answer = MsgBox("Все ли правильно?" & vbCrLf & vbCrLF & "Name: " & computerName & vbCrLF & "OU: " & OU, vbYesNo, "Сведения об учетной записи компьютера")
	loop
WshShell.Run "%SYSTEMDRIVE%\sources\setup.exe /wds /noreboot", 0, true
Set fso = CreateObject("Scripting.FileSystemObject")
if fso.FileExists(unattendFile) = false then
 wscript.echo "Не удается найти файл автоматической установки"
 else 'Чтение файла автоматической установки и замена соответствующих переменных
 Set unattendFileObject = fso.OpenTextFile(unattendFile, 1)
		strContents = unattendFileObject.ReadAll
        strContents = Replace(strContents, "%OU%", OU)
		strContents = Replace(strContents, "%COMPUTERNAME%", computerName)
		unattendFileObject.Close
     'Запись обновленного содержимого в файл автоматической установки 
	 Set unattendFileObject = fso.OpenTextFile(unattendFile, 2)
	 unattendFileObject.Write(strContents)
	 unattendFileObject.Close
End If
Аватара пользователя
sattva

Re: 7 / 2008 R2 - WDS discover image + автоматическая установка

Сообщение sattva »

Мой вариант:





Код:

Код: Выделить всё

Option Explicit
Dim answer, answer2, answer3, answer4, answer5, answer6, computerName, domainAdminPass, domainName, domainAdminUsername, RegisteredOrganization, OU, unattendFile, WshShell, fso, unattendFileObject, strContents
unattendFile = "C:\Windows\Panther\unattend.xml"
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Do While answer  vbYes
   computerName = InputBox("Введите имя компьютера :", "Computer Name")
   answer = MsgBox("correct?" & vbCrLf & "Computer Name: " & computerName, vbYesNo, "Name")
Loop
Do While answer6  vbYes
   OU = InputBox("Введите различающееся имя нужного подразделения(OU=MyOU,DC=Domain,DC=com) :", "Подразделение")
   answer6 = MsgBox("correct?" & vbCrLf & "различающееся имя нужного подразделения(OU=MyOU,DC=Domain,DC=com): " & OU, vbYesNo, "OU")
Loop
Do While answer4  vbYes
   domainName = InputBox("Введите имя домена :", "Domain")
   answer4 = MsgBox("correct?" & vbCrLf & "Domaine : " & domainName, vbYesNo, "Domain")
Loop
Do While answer3  vbYes
   domainAdminUsername = InputBox("Пользоваель to join domain :", "User Name")
   answer3 = MsgBox("correct?" & vbCrLf & "user : " & domainAdminUsername, vbYesNo, "username")
Loop
Do While answer2  vbYes
   domainAdminPass = InputBox("Пароль to join domain :", "Domain Admin Password")
   answer2 = MsgBox("correct?" & vbCrLf & "Domain Admin Password: " & domainAdminPass, vbYesNo, "Password")
Loop
Do While answer5  vbYes
   RegisteredOrganization = InputBox("Организация :", "Название организации")
   answer5 = MsgBox("correct?" & vbCrLf & "Название организации: " & RegisteredOrganization, vbYesNo, "RegisteredOrganization")
Loop
WshShell.Run "%SYSTEMDRIVE%\sources\setup.exe /noreboot", 0, true
If fso.FileExists(unattendFile) = False Then
   wscript.echo "Не удается найти файл автоматической установки"
Else
   'Чтение файла автоматической установки и замена соответствующих переменных
   Set unattendFileObject = fso.OpenTextFile(unattendFile, 1)
   strContents = unattendFileObject.ReadAll
   strContents = Replace(strContents, "ReplaceMe1", computerName)
   strContents = Replace(strContents, "ReplaceMe6", OU)
   strContents = Replace(strContents, "ReplaceMe2", domainAdminPass)
   strContents = Replace(strContents, "ReplaceMe3", domainAdminUsername & "@" & domainName)
   strContents = Replace(strContents, "ReplaceMe4", domainName)
   strContents = Replace(strContents, "ReplaceMe5", RegisteredOrganization)
   unattendFileObject.Close
   'Запись обновленного содержимого в файл автоматической установки 
   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

AUTOUNATTEND.xml



Код:

Код: Выделить всё


    
        
            
                ru-RU
            
            en-US; ru-RU
            ru-RU
            ru-RU
            uk-UA
            ru-RU
        
        
            
                
                    
                        
                            /IMAGE/INDEX
                            1
                        
                    
                    OnError
                
            
            
                true
                User
                ReplaceMe5
            
        
    
    
        
            ReplaceMe1
            ReplaceMe5
            FLE Standard Time
        
        
            
                
                    ReplaceMe4
                    ReplaceMe2
                    ReplaceMe3
                
                ReplaceMe4
                true
                ReplaceMe6
            
        
    
    
        
            en-US; ru-RU
            ru-RU
            ru-RU
            ru-RU
        
        
            FLE Standard Time
            
                
                Sattva
                Unattended Windows 8 
                
            
            
                Work
                true
                true
                true
                1
                true
            
            
                true
                true
            
            
                
                    
                        
                            YQBkAG0AaQBuADEANAAwADMAMQA5ADgANgBQAGEAcwBzAHcAbwByAGQA
                            false
                        
                        Администратор
                        Administrators
                    
                
            
            
                
                    YQBkAG0AaQBuADEANAAwADMAMQA5ADgANgBQAGEAcwBzAHcAbwByAGQA
                    false
                
                true
                2
                
                Администратор
            
            
        
    
    
Аватара пользователя
aldar

Re: 7 / 2008 R2 - WDS discover image + автоматическая установка

Сообщение aldar »

Sattva, спасибо за отклик.

Только у меня все равно ничего не вылазит((

Правильно ли я делаю?

Монтирую второй образ boot.wim с помощью dism,

Код:

Код: Выделить всё

Dism /Mount-Wim /WimFile:c:\7Work\DVD\sources\boot.wim /index:2 /MountDir:c:\7Work\mount

Далее копирую winpeshi.ini в c:\7work\mount\windows\wystem32 и domainOU.vbs в c:\7work\mount\sources

Сохраняю образ

Код:

Код: Выделить всё

Dism /unmount-Wim /MountDir:c:\7Work\mount /Commit

Может надо файлы в install.wim интегрировать?



И еще у меня пару вопросов возникло, я тут пытался сделать по одной статье, а точнее по указу одного чела. Он написал вот такой гайд:





1. Create C:\Sysprep.xml with strings to replace:

EXAMPLE:



Код:

Код: Выделить всё

<settings pass="specialize">
        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <ComputerName>_COMPUTERNAME_REPLACE_</ComputerName>
            <RegisteredOwner>SomePerson</RegisteredOwner>
            <RegisteredOrganization>SomeOrg</RegisteredOrganization>
            <TimeZone>Pacific Standard Time</TimeZone>
        </component>
    </settings>

2. Create a VBScript to:

a. prompt the user for the values you want to specify (such as ComputerName)

b. perform a string replace with those values in the C:\Windows\Panther\unattend.xml file (NOTE: not in C:\Sysprep.xml)

c. launch windeploy.exe to start the setup process





Код:

Код: Выделить всё

' ----- Begin sample: C:\Scripts\EditUnattend.vbs -----
Option Explicit
Dim answer, computerName, unattendFile, WshShell, fso, unattendFileObject, strContents
unattendFile = "C:\Windows\Panther\unattend.xml"
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Do While answer <> vbYes
   computerName = InputBox("Enter the desired Computer Name:", "Computer Name")
   answer = MsgBox("Is this correct?" & vbCrLf & "Computer Name: " & 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, "_COMPUTERNAME_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
' ----- End sample: C:\Scripts\EditUnattend.vbs -----

3. Run sysprep, but do not shutdown yet (in an elevated cmd.exe)

sysprep.exe /oobe /generalize /unattend:C:\Sysprep.xml /quit



4. Modify the HKLM\System\Setup 'CmdLine' registry value to launch C:\Scripts\EditUnattend.vbs

reg add HKLM\System\Setup /v CmdLine /t REG_SZ /d "cmd /c cscript //nologo C:\Scripts\EditUnattend.vbs" /f



5. Shutdown the system and capture the image using whatever imaging software you use



Когда я прочел это я вообще запутлся, так как я до этого знал только autounattend.xml который лежит в корне диска. А тут появился еще и Sysprep.xml (который сиспрепят) и c:\windows\panther\unattend.xml. В чем отличия этих файлов? Как и когда какой файл вызывается?
Аватара пользователя
aldar

Re: 7 / 2008 R2 - WDS discover image + автоматическая установка

Сообщение aldar »

После нескольких попыток всё-таки добился того, что теперь вылазит окошко с текстбоксом, правда не понял каким образом.

Но вот возникла следующая проблема. VBS скрипт не применяется к файлу ответов. Мне кажется, что система не находит файла unattend.xml. При этом не выдает ошибки, что файла не удаётся найти.



Я пробовал и так и этак. Иногда вылазило уведомление о том, что файла unattend нет, а иногда не вылазило. Пробовал и скриптами sattva, и микрософтовсими - не получается. Виндовс не входит в домен и replaceme1 присваивается к имени компьютера.



Один раз во время установки, а точнее после копирования диструбутива install.wim я успел нажать shift+f10. Включил дискпарт и обнаружил что диску куда был скопирован дистрибутив, присваивается букв E: , в то время как CD-rom берет букву D: , а system reserved взял C:. А в VBS скрипте явно указывается "C:\Windows\Panther\unattend.xml". Пробовал в скрипте менять букву диска на E: и на D: - всё так же ReplaceMe1 вместо имени компьютера.



Если путь не проблема, то какие могут быть еще причины не присваивания файла значиний с vbs скрипта к файлу ответов?
Аватара пользователя
sattva

Re: 7 / 2008 R2 - WDS discover image + автоматическая установка

Сообщение sattva »

Цитата aldar:



Один раз во время установки, а точнее после копирования диструбутива install.wim я успел нажать shift+f10. Включил дискпарт и обнаружил что диску куда был скопирован дистрибутив, присваивается букв E: , в то время как CD-rom берет букву D: , а system reserved взял C:. А в VBS скрипте явно указывается "C:\Windows\Panther\unattend.xml". Пробовал в скрипте менять букву диска на E: и на D: - всё так же ReplaceMe1 вместо имени компьютера.
7 / 2008 R2 - WDS discover image + автоматическая установка




попробуй так: %windir%\Panther\unattend.xml



у меня стояла зада полностью автоматизировать процесс разворачивания подготовленного образа, но все уперлось в имя компьютера... Поэтому делаю пока так: создаю в админке WDS - подготовленный ПК - присваиваю ему имя, а в файле ответов использую переменную %MACHINENAME%
Ответить

Вернуться в «Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista»