Автоматизация подготовки диска к установке системы.
Два скрипта NewDisk.au3 и Unattend.au3:
http://forum.oszone.net/attachment.p...ntid=997&stc=1
http://forum.oszone.net/attachment.p...ntid=998&stc=1
http://forum.oszone.net/attachment.p...ntid=999&stc=1
Блин, как сделать, чтобы были рисунки?
С их помощью процесс развертывания системы на новом компьютере (друзья, дети, дети друзей и друзья детей) сводится к загрузке с CD Windows PE и исполнению этих самых скриптов.
Первым скриптом готовится диск: разбиение диска, его форматирование, развертывание WinPE, создание типовых папок, сбрасывание дистрибутива WinXP.
Привязка дистрибутива к машине и пользователю осуществляется вторым скриптом. Им правится unattend.txt: пользователь, настройки экрана, oem-драйвера и т.п. Самое муторное в этой процедуре - правка OemPnPDriversPath. Чтобы максимально облегчить редактирование этого параметра, включил в скрипт дополнительные средства обработки папки $oem$\$1\drivers.
Единственное, что приходится делать ручками (вернее, головой), отбирать для дистрибутива заготовки драйверов (включающие при необходимости скрипты автоустановки и подстройки последних). Как уже писал, для этого имею базу таких заготовок, которую по мере обновления драйверов и знакомства с новым железом периодически пополняю.
После такой подготовки, занимающей в несложном случае полчаса, остается запустить автоустановку WinXP. Проследив результат и подкорректировав исходники, вручаю "клиенту" работающую машину с "ноутбучным" комплектом ПО для автопереустановки системы, о котором рассказывал раньше.
Конечно, установка типовой системы с CD проще и быстрее. Для подобных целей имею собственный "супер-диск" с набором основных драйверов и типовых программ. Но чтобы донастроить установленную таким образом систему требуется квалификация. Вариант с дистрибутивом, полностью привязанным к машине, позволяет самому неподготовленному пользователю самостоятельно поддерживать работоспособность системы самым эффективным способом - периодически вчистую ее переустанавливая.
В продолжение разговора об интересных функциях.
При отладке работы NewDisk.au3 столкнулся с необходимостью считывать результаты командной строки непосредственно в память: WinPE работает с CD, жесткий диск еще не размечен, создавать виртуальный диск, чтобы выполнить
DiskPart.exe /S list.txt > 1.txt, не хотелось. Нашел красивую замену в лице CLIPCOPY.EXE (21Kb), считывающей выходные данные командной строки в clipboard. С помощью этой программульки считываю информацию о присутствующих в системе дисках следующим образом:
Код:

RunWait('%Comspec% /C DiskPart.exe /S $iDir$\dpartLIST$i$.txt | CLIPCOPY','',0)
$dsk=StringSplit(ClipGet(),@CRLF)
Еще одна находка.
Раньше для развертывания WinPE на жестком диске (использую WinPE, в том числе, и при переустановке системы для автоудаления "замусоренных" системных папок) запускал установку Консоли восстановления, которая нужна была только для получения файловой копии загрузочного сектора BOOTSECT.DAT. Добрые люди подсказали, что в BartPE есть плагин, делающий это проще, быстрее и гибче. Позаимствовал оттуда MKBT.EXE (26Kb) и NT2PELDR.EXE (16Kb). Теперь создание загрузчика WinPE выглядит так:
Код:

RunWait('@ScriptDir@\mkbt.exe -x -c $ds$ $ds$\Peldr.dat')
RunWait('@ScriptDir@\nt2peldr.exe $ds$\Peldr.dat')
IniWrite('$ds$\Boot.ini','operating systems','C:\Peldr.dat','"Microsoft Windows PE" /MiniNT')
Последние находки позволили оптимизировать NewDisk.au3 так, что теперь можно подготовить чужой диск, просто подключив его к своей машине.