Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista (http://forum.oszone.net/forumdisplay.php?f=83)
-   -   WDS discover image + автоматическая установка (http://forum.oszone.net/showthread.php?t=263777)

aldar 05-07-2013 06:34 2179614

WDS discover image + автоматическая установка
 
Здравствуйте!

пролог: по этой статье сделал эталонный образ системы. По циклам этих статей сделал файл ответов и интеграцию драйверов. Вроде всё хорошо но возникла потребность включать комьютеры в домен. Для этого развернул 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
Правильно ли я ввожу в домен?

aldar 13-08-2013 06:59 2200631

На самом деле для ввода в домен не обязательно иметь 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 24-08-2013 22:49 2207036

Цитата:

Пытался сделать по этой статье.
Как всегда 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 25-08-2013 01:44 2207143

Мой вариант:

Код:

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
Код:

<?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="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; ru-RU</InputLocale>
            <SystemLocale>ru-RU</SystemLocale>
            <UILanguage>ru-RU</UILanguage>
            <UserLocale>uk-UA</UserLocale>
            <UILanguageFallback>ru-RU</UILanguageFallback>
        </component>
        <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">
            <ImageInstall>
                <OSImage>
                    <InstallFrom>
                        <MetaData wcm:action="add">
                            <Key>/IMAGE/INDEX</Key>
                            <Value>1</Value>
                        </MetaData>
                    </InstallFrom>
                    <WillShowUI>OnError</WillShowUI>
                </OSImage>
            </ImageInstall>
            <UserData>
                <AcceptEula>true</AcceptEula>
                <FullName>User</FullName>
                <Organization>ReplaceMe5</Organization>
            </UserData>
        </component>
    </settings>
    <settings pass="specialize">
        <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">
            <ComputerName>ReplaceMe1</ComputerName>
            <RegisteredOrganization>ReplaceMe5</RegisteredOrganization>
            <TimeZone>FLE Standard Time</TimeZone>
        </component>
        <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>ReplaceMe4</Domain>
                    <Password>ReplaceMe2</Password>
                    <Username>ReplaceMe3</Username>
                </Credentials>
                <JoinDomain>ReplaceMe4</JoinDomain>
                <DebugJoin>true</DebugJoin>
                <MachineObjectOU>ReplaceMe6</MachineObjectOU>
            </Identification>
        </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; ru-RU</InputLocale>
            <SystemLocale>ru-RU</SystemLocale>
            <UILanguage>ru-RU</UILanguage>
            <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">
            <TimeZone>FLE Standard Time</TimeZone>
            <OEMInformation>
                <SupportPhone></SupportPhone>
                <Manufacturer>Sattva</Manufacturer>
                <Model>Unattended Windows 8 </Model>
                <SupportURL></SupportURL>
            </OEMInformation>
            <OOBE>
                <NetworkLocation>Work</NetworkLocation>
                <HideEULAPage>true</HideEULAPage>
                <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
                <HideLocalAccountScreen>true</HideLocalAccountScreen>
                <ProtectYourPC>1</ProtectYourPC>
                <SkipMachineOOBE>true</SkipMachineOOBE>
            </OOBE>
            <WindowsFeatures>
                <ShowInternetExplorer>true</ShowInternetExplorer>
                <ShowWindowsMediaPlayer>true</ShowWindowsMediaPlayer>
            </WindowsFeatures>
            <UserAccounts>
                <LocalAccounts>
                    <LocalAccount wcm:action="add">
                        <Password>
                            <Value>YQBkAG0AaQBuADEANAAwADMAMQA5ADgANgBQAGEAcwBzAHcAbwByAGQA</Value>
                            <PlainText>false</PlainText>
                        </Password>
                        <Name>Администратор</Name>
                        <Group>Administrators</Group>
                    </LocalAccount>
                </LocalAccounts>
            </UserAccounts>
            <AutoLogon>
                <Password>
                    <Value>YQBkAG0AaQBuADEANAAwADMAMQA5ADgANgBQAGEAcwBzAHcAbwByAGQA</Value>
                    <PlainText>false</PlainText>
                </Password>
                <Enabled>true</Enabled>
                <LogonCount>2</LogonCount>
                <Domain></Domain>
                <Username>Администратор</Username>
            </AutoLogon>
            <RegisteredOrganization></RegisteredOrganization>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="wim:f:/unattended/windows_8/multiboot_usb_8gb-16gb_flash_v7.0/sources/install.wim#Windows 8 Enterprise (64-bit)" xmlns:cpi="urn:schemas-microsoft-com:cpi"></cpi:offlineImage>
</unattend>


aldar 27-08-2013 07:19 2208329

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 04-09-2013 07:33 2212395

После нескольких попыток всё-таки добился того, что теперь вылазит окошко с текстбоксом, правда не понял каким образом.
Но вот возникла следующая проблема. 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 28-10-2013 23:34 2242896

Цитата:

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

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

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


Время: 09:18.

Время: 09:18.
© OSzone.net 2001-