Вадим Стеркин

Создание загрузочного диска Windows PE с .NET Framework и PowerShell

Среда Windows PE входит в Windows ADK, который теперь объединяет средства развертывания и оценки различных параметров системы.

Сегодня в программе:

Что входит в Windows ADK

Раньше инструменты для подготовки операционной системы к развертыванию и оценки ее работы поставлялись отдельными наборами. Теперь Windows Assessment and Development Kit (далее ADK) объединил несколько пакетов.

Deployment and Imaging Tools и Windows Preinstallation Environment

Эти средства для подготовки Windows к развертыванию ранее входили в WAIK, а Windows System Image Manager даже не изменился внешне.

Windows Performance Toolkit

Набор инструментов для оценки производительности Windows, с которым вы уже знакомы из других материалов блога, раньше поставлялся в наборе SDK. Теперь в WPT входят новые средства для записи различных сценариев работы приложений и системы (Windows Performance Recorder) и просмотра записей (Windows Performance Analyzer).

Windows PE
Увеличить рисунок

Windows Assessment Toolkit

Это новый набор, лицом которого является Windows Assessment Console. С ее помощью можно оценивать различные параметры работы Windows и приложений, например, производительность или потребление энергии.

Windows PE
Увеличить рисунок

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

Загрузка и установка Windows ADK

Вы можете свободно скачать последнюю версию Windows ADK. На той же странице скачайте Windows PE add-on for the ADK.

Windows PE
Увеличить рисунок

Microsoft не предлагает к загрузке ISO, но с помощью установщика вы можете скачать полный комплект (инструкции на английском) и сделать из него образ, если необходимо. После установки вы найдете все наборы в папке Program Files\Windows Kits. Впрочем, если у вас 64-разрядная система, туда упадет лишь часть средств развертывания, а остальное окажется в Program files (x86).

Windows PE

История версий Windows PE

Полный список изменений в разных версиях есть в документации. Текущая версия – Windows PE for Windows 10. Она не претерпела существенных изменений по сравнению с предшественницей, но раньше среда развивалась более активно.

Например, на Windows PE 4.0 была основана среда предустановки Windows 8, что повлекло ряд значимых изменений по сравнению с Windows PE 3.1 времен Windows 7. Тогда расширился список пакетов (ссылка на актуальный документ), которые можно внедрить в PE. В частности именно в PE 4.0 добавились:

  • .NET (WinPE-NetFX) обеспечивает запуск приложений, которым требуется .NET Framework.
  • Powershell (WinPE-PowerShell) позволяет использовать PowerShell в среде PE. В состав ADK входит новая версия Powershell.
  • DISM PowerShell Cmdlets (WinPE-DismCmdlets) представляют собой новые командлеты третьей версии Powershell для создания и обслуживания WIM образов
  • Remote Network Driver Specification (WinPE-RNDIS) пригодится для доступа к удаленным клиентам из Windows PE
  • Windows PE Secure Startup (WinPE-SecureStartup) нужен для управления BitLocker и TPM.

Изменения в Windows PE 5.0 и 5.1 были не такие значительные. Но если 5.0 вошла в ADK, то 5.1 с поддержкой WimBoot (ныне неактуальной), надо было применять в качестве обновления.

Дальше я расскажу, как создать загрузочный диск Windows PE с поддержкой .NET Framework и Powershell. Инструкции были написаны для Windows PE 4.0, но вполне применимы к более новым версиям.

Подготовка рабочей папки

Введите в поиск среда средств (в англ. версии – deployment) и запустите от имени администратора командную строку средств развертывания. По сути это файл DandISetEnv.bat из папки Deployment and Imaging Tools, задающий необходимые переменные среды для быстрого доступа к инструментам командной строки.

Для работы с автоустановкой и Windows PE у меня давно создана переменная среды %ua%, ведущая в папку unattend в корне профиля. Вы можете создать такую же переменную на постоянной основе, либо только в рамках текущей сессии командной строки, как показано ниже.

• В командной строке

[code lang=”plain”]:: Задайте путь к рабочей папке (избегайте кириллицы и пробелов в пути)
set ua=C:\unattend
:: Создайте папку
md %ua%
[/code]

• В PowerShell

[code lang=”Powershell”]# Задайте путь к рабочей папке (избегайте кириллицы и пробелов в пути)
$env:ua = "C:\unattend"
# Создайте папку
md $env:ua
[/code]

Все дальнейшие команды будут использовать переменную %ua% вне зависимости от того, где у вас создана рабочая папка.

Копирование файлов Windows PE в рабочую папку

В ADK входит удобный файл copype.cmd, который делает эту работу одной командой.

Windows PE

Учтите, что с помощью DISM из 32-разрядной PE можно обслуживать Windows любой разрядности, а из 64-разрядной PE – только 64-разрядную. Во всех моих командах подразумевается создание 32-разрядной среды Windows PE. Для подготовки 64-разрядного диска замените везде x86 на amd64.

В командной строке выполните:

[code lang=”plain”]cd "..\Windows Preinstallation Environment"
copype.cmd x86 %ua%\winpe_x86\[/code]

Первая команда переходит в папку с наборами файлов Windows PE, а вторая запускает файл copype.cmd с параметрами x86 для создания 32-разрядной PE и %ua%\winpe_x86\ для копирования необходимых файлов в эту папку, с которой мы будем работать дальше.

Работа с WIM-образом Windows PE

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

Шаг 1 – Подключение образа

Подключение WIM-образа выполняется одной командой с помощью утилиты DISM. Если вы часто работаете с WIM-образами, не повредит сначала очистить все предыдущие подключения.

[code lang=”plain”]dism /Cleanup-Wim
dism /Mount-Wim /WimFile:%ua%\winpe_x86\media\sources\boot.wim /index:1 /MountDir:%ua%\winpe_x86\mount[/code]

Шаг 2 – Добавление пакетов в образ

Пакеты находятся в папке WinPE_OCs, и мы добавим четыре пакета:

  • .Net Framework
  • PowerShell
  • командлеты DISM
  • WMI

Первая команда переходит в папку, а вторая добавляет пакеты:

[code lang=”plain”]cd x86\WinPE_OCs
dism /image:%ua%\winpe_x86\mount /Add-Package /PackagePath:WinPE-NetFx.cab /PackagePath:WinPE-PowerShell.cab /PackagePath:WinPE-DismCmdlets.cab /PackagePath:WinPE-wmi.cab[/code]

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

Windows PE
Увеличить рисунок

Вы можете добавить любые другие пакеты из папки WinPE_OCs. Например, WinPE-Scripting.cab обеспечит работу сценариев Windows Script Host (WSH). Но учтите, что каждый пакет увеличивает размер образа Windows PE.

Важно! Для работы PowerShell необходим .NET Framework, поэтому сначала нужно добавлять пакет WinPE-NetFx4.cab, и только вслед за ним WinPE-PowerShell3.cab и WinPE-DismCmdlets.cab.

Поскольку добавление пакетов сродни установке программ, при импорте WinPE-PowerShell3.cab без пакета .NET будет возникать ошибка 0x800f081e. Создавая свой первый диск, я добавлял пакеты в правильном порядке. Но потом случайно изменил его, когда собрал все пакеты в одну команду. Для решения проблемы пришлось плясать с бубном (в прямом смысле слова :)

Проверить наличие пакетов в образе вы можете командой:

[code lang=”plain”]dism /image:%ua%\winpe_x86\mount /Get-Packages[/code]

Шаг 3 – Добавление драйверов

Этот шаг необязателен, поскольку Windows PE содержит базовый набор драйверов, в том числе и для сетевых карт. Доступ к сети может вам понадобиться, например, для сохранения захваченного WIM-образа на сетевом диске.

Если возникла необходимость, с помощью DISM можно добавить:

  • отдельный драйвер, указав путь к INF-файлу
  • все драйверы из папки, указав путь к ней и ключ /recurse

Примеры этих команд:

[code lang=”plain”]dism /Image:%ua%\winpe_x86\mount /Add-Driver /Driver:C:\drivers\mydriver.INF
dism /Image:%ua%\winpe_x86\mount /Add-Driver /Driver:C:\drivers /recurse[/code]

Шаг 4 – Добавление своих утилит и сценариев

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

[code lang=”plain”]xcopy /e /y "%userprofile%\PortableSoft\Tools" %ua%\winpe_x86\media\Tools\[/code]

Альтернативно, вы можете скопировать утилиты прямо в папку System32 образа. Тогда их можно будет запускать, не переходя в папку Tools или не указывая полный путь. Я, однако, предпочитаю отделять мух от котлет.

На примере Windows PE 3.1 я уже рассказывал о том, как организовать запуск своих программ и сценариев при старте PE. В этом плане новая версия Windows PE, похоже, не содержит ничего нового.

Шаг 5 – Сохранение изменений и отключение образа

Обе операции выполняются в рамках одной команды.

[code lang=”plain”]dism /Unmount-Wim /MountDir:%ua%\winpe_x86\mount\ /Commit[/code]

Если что-то пошло не так, и вы не хотите сохранять изменения, используйте ключ /Discard.

В папке media теперь находится готовый дистрибутив Windows PE. На его основе можно создать загрузочный образ ISO для записи на диск или носитель USB (флэшку).

Создание ISO-образа или флэшки с Windows PE

Для экспериментов на виртуальной машине загрузочный ISO образ удобнее:

[code lang=”plain”]oscdimg -n -b%ua%\winpe_x86\fwfiles\etfsboot.com %ua%\winpe_x86\media %ua%\winpe_x86\iso\winpe_x86.iso[/code]

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

Загрузочная флэшка с Windows PE более универсальна, поскольку существует множество устройств без DVD-привода. Я уже описывал во всех подробностях процесс создания флэшки на примере Windows PE 3.1, поэтому здесь лишь ограничусь списком команд diskpart.

Команды для подготовки загрузочной флэшки

[code lang=”plain”]diskpart
list disk
:: Будьте внимательны, указывая номер диска с USB-носителем!
select disk 1
clean
create partition primary
select partition 1
active
format fs=fat32 quick
assign
exit[/code]

После выполнения этих команд вашей флэшке будет присвоена буква (например, K). Остается скопировать на флэшку содержимое папки media.

[code lang=”plain”]xcopy %ua%\winpe_x86\media\*.* /s /e /f К:\[/code]

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

Windows PE
Увеличить рисунок

Видно, что .NET Framework успешно добавлен, поскольку отображается список командлетов DISM в PowerShell 3. В ближайшее время я покажу, как использовать их для работы с WIM-образами из Windows PE.

Чтобы не терять время зря, вы пока можете прочесть интересные факты и полезные советы на тему Windows PE, а также поэкспериментировать с запуском приложений и заменой интерфейса командной строки на любимый файловый менеджер.


А вы пользуетесь Windows PE или другими дисками собственного изготовления? Расскажите в комментариях, какие диски вы используете для обслуживания и восстановления системы!

Comments

119 responses to “Создание загрузочного диска Windows PE с .NET Framework и PowerShell”

  1. baw17 Avatar

    в работе помогает MSDaRT_2010-Blueforce + ERDcommander для XP

  2. Виталий Avatar
    Виталий

    Сколько это добро весит?

  3. Vadim Sterkin Avatar

    Виталий, гм… думал, что размер ADK указан в статье. 1.2 Гб :) Добавил.

    Максим, пришлось удалить ваш комментарий. Догадайтесь почему…

  4. Valerii Avatar

    Вадим, большое спасибо за обзор. Хотелось бы услышать Ваше мнение о необходимости использования командлетов PowerShell для DISM в преддверии обзора на эту тему. Какой выигрыш это дает по сравнению с обычными возможностями командной строки? Remoting (winrm+winrs или PowerShell remoting) был доступен и раньше, если о нем говорить. В общем, я пока себе не нашел ответа на этот вопрос.

  5. Виталий Avatar
    Виталий

    Vadim Sterkin: Виталий, гм… думал, что размер ADK указан в статье. 1.2 Гб :) »

    Отлично. Не ожидал. А то прочитал список того, что объединили, начал считать про себя число образов DVD, а тут вполне человеческий размер. Надо будет посмотреть.

  6. Vadim Sterkin Avatar

    Valerii, да я и сам сомневаюсь в том, что обзор командлетов DISM так уж необходим на страницах моего блога :)

    Как вы отметили, в корпоративной среде он не дает ничего нового, Наверное, наиболее вероятный сценарий – это когда “технику в поле” нужно подкорректировать образ.

    Домашним пользователям вряд ли очень нужно обслуживание образов из PE именно с DISM, т.к. захват/применение обеспечит imagex.

  7. Therion1966 Avatar
    Therion1966

    Windows PE – пользуюсь, причём очень активно! Только не собственного изготовления, а от Зверя и др. :(
    До сих пор не было времени (да и желания, если честно) вникнуть в процесс. Теперь, после Вашей статьи, пожалуй, попробую. :) Спасибо, в очередной раз!
    P.S.
    А вообще, на данный момент использую “ZverDvD v2011.9 + Alkid SE 2011.9” (записан на DVD) и “MultiBoot_2K10_1.6.2P1_conty9” (на флэшке, две XP и 7-ка).
    P.P.S
    Таки да, чуть не забыл! Поздравляю с годовщиной блога! Извините, что с опозданием. :)

  8. CtrlSoft Avatar

    Понравилось что в новой версии WinPE включен режим aero, пускай и базовый. Хотелось бы в WinPE3.1 такого. Возможно ли?

  9. Vadim Sterkin Avatar

    Therion1966, понятно, у вас полный набор г-сборок :) Спасибо за поздравления.

    CtrlSoft, даже если и возможно, то овчинка не стоит выделки.

  10. Therion1966 Avatar
    Therion1966

    Vadim Sterkin: Therion1966, понятно, у вас полный набор г-сборок :)
    »

    Ага. :( Год как “на вольных хлебах”, ИП, ремонт и настройка компов. Много приходится по людям болтаться, а у них чего только не бывает!
    Для себя-то, понятно, никогда этого не использую.У меня, почему-то, всё работает без проблем. Что я делаю не так? :)

  11. tr011_tmn Avatar
    tr011_tmn

    с интересом ознакомился с материалом. Буду пробовать скрестить WinPE 4.0 с установкой Win7 дабы по максимуму задействовать предоставленный функционал :-)
    Тем паче что давно хочу реализовать свой Boot.Wim, и наличие FrameWork актуально для меня на этапе установки.

  12. Виталий Avatar
    Виталий

    tr011_tmn: Буду пробовать скрестить WinPE 4.0 с установкой Win7 »

    Лучше с ХР.

  13. 0sten Avatar
    0sten

    Долго пытался понять, почему Майкрософт при работе с wim архивами ушёл от быстрого wimfltr к более чем в пять раз медленному winmount. Не понял, но могу предположить только, что в целях использования скриптов Powershell, которые могут управлять DISM и не могли управлять Imagex’ом. Но, возможно, ошибаюсь, чего-то не знаю – и поэтому не могу понять высший смысл этого перехода.

    1. Vadim Sterkin Avatar

      Imagex может только монтировать образы и получать информацию о них. DISM – это полноценная система обслуживания образа. Но никто не мешает вам монтировать образ с imagex.

  14. 0sten Avatar
    0sten

    Только сегодня заметил такие милые вещи в новом DISM’е, как /Mount-Image и /Commit-Image, которые позволяют работать не только с WIM, но и с VHD образами, а также /Capture-Image и /Apply-Image, которые делают полностью излишним ImageX.
    Осталось каком-нибудь китайцу-любителю написать metro-style GUI для нового DISM’a, и штатный WinPE будет отличным инструментом для работы с образами. Можно, конечно, и в комстроке, но это же не наш путь :)

  15. Алексей Г Avatar
    Алексей Г

    Вадим. У меня тут вопрос по пакетам возник. Я настраиваю winpe4.0 для установке по pxe. Какие пакеты надо иметь в образе pe, чтобы установка запустилась?
    WMI и DISM достаточно?
    wim из дистров win8beta не грузятся (идёт автозапуск без staranet, и ошибка wmi)

    1. Vadim Sterkin Avatar

      Алексей, не пробовал это делать, да и подробностей не вижу. Руководство для 7 здесь (в 8 д.б. аналогично).

  16. Алексей Г Avatar
    Алексей Г

    Vadim Sterkin,

    Да, я пользовался этой статьёй. В общем у меня получилось настроить DHCP, TFTP сервер, и загрузчик. Буду пробовать настроить образ PE методом проб, ошибок и экспериментов)
    О результатах отпишусь.

  17. Leo Лапыч Avatar
    Leo Лапыч

    А у меня при выполнении
    [code language=””]dism /image:%ua%\winpe_x86\mount /Add-Package /PackagePath:WinPE-NetFx4.cab /PackagePath:WinPE-PowerShell3.cab /PackagePath:WinPE-DismCmdlets.cab /PackagePath:WinPE-wmi.cab[/code]
    выдаёт
    [code language=””]Failed to find the resources for this executable.[/code]
    То же самое выдаёт и при запуске
    [code language=””]dism[/code]
    без параметров.
    Должен ли я воспользоваться imagex или есть способ побороть возникающую ошибку (я знаю, он всегда есть, вопрос величины усилий).

    А путём imagex и не получилось пойти, потому как нету peimg.
    Ещё забыл сообщить: ОС WinXPSP3 (x86).

    1. Vadim Sterkin Avatar

      Windows XP не входит в список поддерживаемых систем, и да, dism в ней нет.

  18. Leo Лапыч Avatar
    Leo Лапыч

    Vadim Sterkin, ясно, но тогда не понял шутки юмора инсталлятора, позволившего установить ADK на неподдерживаемую систему.

    1. Vadim Sterkin Avatar

      Об этом тоже написано на той же странице

      You can install the Application Compatibility Toolkit (ACT) on any of these operating systems and also on Windows Vista® Service Pack 2 (SP2),Windows® XP SP3, or Windows Server 2003.

      Там могут быть просто инструменты командной строки или прочие утилиты, которые работают в XP. Но если вы хотите делать то, что описано в статье, вам нужен DISM – Windows 7/8.

  19. sega18 Avatar
    sega18

    хотелось бы увидеть инструкцию по обновленному adk
    заранее благодарю

    1. Vadim Sterkin Avatar

      На каких конкретно шагах выполнения инструкции у вас возникли трудности с обновленным ADK? Какие конкретно трудности возникли?

  20. sega18 Avatar
    sega18

    вадим спасибо за быстрый ответ,а по сути не могу Net интегр-ть
    при копировании с родным copype раб,папка пуста, ладно- смонтировал wim -пакет Net , Powershell ошибка

    1. Vadim Sterkin Avatar

      С трудом понимаю вашу проблему, но попробуйте явно указать путь: copype x86 c:\test\
      И следите за выводом в командной строке – там же пишется все.

  21. sega18 Avatar
    sega18

    извини обманул -дерево папок :
    fwfiles
    media
    mount
    смонтировал – добавляю пакеты
    Ошибка: 87

    The packadepath option is not recognized in this context.
    For more information, refer to the help.

  22. sega18 Avatar
    sega18

    почему то с 3го раза пошло
    добавил Net первый и один, в куче -ошибка почему-то
    благодарю

    1. Vadim Sterkin Avatar

      В статье же объясняется, что .NЕТ должен идти первым.

  23. sega18 Avatar
    sega18

    хочу просто поблагодарить за твои статьи и рассылку-грамотно и актуально !очень много почерпнул из них
    с искренним уважением сега

    1. Vadim Sterkin Avatar

      Я рад, что у вас все получилось :)

  24. Сергей Avatar

    Добрый день, огромное спасибо за полезную статью, как всегда увлекательно и информативно.
    А поделитесь пожалуйста содержимым вашей папки tools, какие утилиты вы используете, интересно узнать.

    1. Vadim Sterkin Avatar

      Сергей, спасибо за отклик.

      Я рассказывал о многих утилитах из этой папки на страницах блога. Например, 10 лучших бесплатных программ для быстрой диагностики Windows.

  25. Алексей Avatar
    Алексей

    разрядность Windows PE должна совпадать с разрядностью обслуживаемой системы

    Вадим, а какие именно действия нельзя выполнить если разрядность не совпадает? Создать/развернуть образ системы с другой разрядностью у меня получилось, включить компоненты на 64-битной системе из winpe x86 тоже. В интернетах прочитал, что с дровами заморочки могут быть. Только это, или что-то еще? Подскажите пожалуйста.

    1. Vadim Sterkin Avatar

      Алексей, пожалуй, тут надо было поточнее выразиться. Кратко, из х86 можно обслуживать х86 и х64, а из х64 только х64. Я потом дополню материал, а пока цитата.

      Обслуживание образа Windows в Windows PE

      Образы Windows можно обслуживать в среде Windows PE. Однако необходимо учесть некоторые аспекты при планировании стратегии обслуживания. Ознакомьтесь со следующими требованиями к обслуживанию образов в среде Windows PE.

      Запуск системы DISM с обслуживающего компьютера Windows PE

      Поддерживаемыми обслуживающими компьютерами DISM являются Windows PE для Windows Vista и Windows PE для Windows 7. При запуске системы DISM с обслуживающего основного компьютера Windows PE можно использовать 32-разрядную версию системы DISM для обслуживания образа любой архитектуры. Но 64-разрядные версии системы DISM можно использовать только для обслуживания образа соответствующей архитектуры.

  26. сергей Avatar
    сергей

    “Введите в поиск deployment и запустите от имени администратора” а если нет поиска,можно как нибудь запустить этот файл в командной строке?

    1. Vadim Sterkin Avatar

      Сергей, можно. Найдите папку, в которую установился ADK – подсказка там же на картинке…

  27. Sam Avatar
    Sam

    подскажите пожалуйста что значит “Задайте путь к рабочей папке” ?

    1. Vadim Sterkin Avatar

      Судя по кавычкам, это цитата, но я ничего такого в статье не вижу. Поэтому поясните свой вопрос.

  28. Sam Avatar
    Sam

    Vadim Sterkin,

    в самой статье, в подзаголовке Подготовка рабочей папки.
    там где надо вписывать в командную строку.
    написано Задайте путь к рабочей папке (избегайте кириллицы и пробелов в пути).

    1. Vadim Sterkin Avatar

      Это папка, в которой будут все файлы. Где-то же должно это находиться :)

  29. Sam Avatar
    Sam

    Vadim Sterkin,

    Все разобрался спасибо за помощь

  30. Юрий Avatar
    Юрий

    Привет. Не подскажите, а каковы условия распространения? Например, я делаю вот такую сборку… вставляю в нее программу написанную мной лично.. продавать могу?

    заранее благодарен

    1. Vadim Sterkin Avatar

      Юрий, думаю, что никаких прав на распространение Windows PE у вас нет. Можете уточнить в форуме лицензирования на TechNet или OSZone.

  31. Юрий Avatar
    Юрий

    Vadim Sterkin,

    Скажите, а как тогда люди патентуют свои программы на основе Windows PE?

    http://www.antiwinlocker.ru/images/stories/ss_antiwinlocker/awlcd-auth.gif

    http://www.antiwinlocker.ru/antiwinlockerlivecdmanual.html

    1. Vadim Sterkin Avatar

      Юрий, а я и не уверен, что это запатентовано. А продавать можно что угодно :) Как я сказал, я не эксперт по лицензированию ^^

  32. Сергей Avatar
    Сергей

    Здравствуйте, Вадим. Подскажите, как правильно настроить startnet.cmd. Мне кажется консоль в winpe работает иначе, чем в винде.
    К примеру я создал файл, для запуска ТС с конфигом startTC.cmd и в startnet.cmd прописал следующее:
    [code language=””]start "%SystemDrive%\Program Files\TotalCmd\startTC.cmd"
    wpeinit
    [/code]
    При запуске winpe открывается второе окно консоли, но скрипт startTC.cmd в нем не выполняется. В главной консоли выполняется wpeinit. Приходится вручную запускать мой скрипт.
    Так вот вопрос – как в фоновом режиме запускать приложение(желательно без дополнительной консоли) перед wpeinit?

    P.S.: использую новую версию ADK и мне как полнейшему нубу в этом деле было сложновато разобраться в новых названиях папок))
    http://www.microsoft.com/ru-ru/download/details.aspx?id=30652

    Сергей,

    http://s.neepic.net/624af98f8ede7348333fde395b6519be
    открывается консоль в названии содержащая мой скрипт, но не выполняет его, а ждет, пока я дам задание.

    1. Vadim Sterkin Avatar

      Сергей, так в PE переменой %SystemDrive% соответствует буква Х, RAM-диск.

      Как я понял, вы пытаетесь запустить ТС при старте PE.
      1. Положите папку TotalCmd в корень диска PE (папка ISO).
      2. Запускайте TC из startnet.cmd

  33. Сергей Avatar
    Сергей

    Vadim Sterkin,

    да, я это читал и с запуском у меня проблем нет. Проблема в том, КАК он запускается. Мне надо, чтобы первым делом запускался ТС, а за ним, сразу, не дожидаясь окончания работы ТС, запускался wpeinit или любая другая команда, которая стоит в startnet.cmd.

    Как я сказал, чтобы в командной строке запустить процесс и не дожидаться его окончания я использую команду Start, но в PE она работает иначе, чем в Windows. Вместо запуска моего скрипта в новом терминале, она просто открывает новый терминал.

    С расположением и вызовом ТС у меня нет проблем. Про %SystemDrive%, Х:\ и RAM я тоже осведомлен. Тут все дело в работе консоли.

    1. Vadim Sterkin Avatar

      Сергей, wpeinit запускается долго, тут ничего не поделаешь. А проблема ваша в команде – там же пишет, что файл не найден. Непонятно, что вам мешает вызывать TC напрямую из startnet. Правильно так:
      [code lang=”plain”]start /min /d"X:\Program Files\TotalCmd" startTC.cmd[/code]
      Это должно решить вопрос с запуском TC.

  34. Сергей Avatar
    Сергей

    Разобрался. Спасибо за статью и помощь!

  35. Аркадий Avatar
    Аркадий

    Вадим, такой вопрос:
    Как сделать, или может у вас есть диск с Windows 8 PE, с которого может загружаться на ноуте Packard Bell с режимом БИОСа UEFI ??

    Скачал торрент Boot CD с Win 8 PE, записал на болванку, а ноут с него не грузится !
    Хотел поделить диск C: на куски Акронисом с CD так не удалось.
    А переключать БИОС в режим Legacy BOOT боюсь, после перестройки может не загрузиться Винда !

  36. Сергей Avatar
    Сергей

    А как, имея файл Instal.wim с раздела Recovery ноутбука, сделать из него загрузочную флешку?
    Или как обновиться имея чистую, заново установленную Windows 8 x64 PRO до первоначального состояния системы со всеми предустановленными прогами, имея файл Instal.wim с раздела Recovery ноутбука? (Ну т.е. случайно снес оригинальную систему – мой случай – но сохранил содержимое папки Recovery – теперь хочу вернуть систему в первоначальный вид – либо из под чистой сторонней установленной винды, либо установив заново но из файлов раздела Recovery – там папка sources и файл Instal.wim – вот только как это сделать???)

  37. Vadim Sterkin Avatar

    Сергей, примените WIM из PE, почините загрузку. Техподдержка в форуме.

  38. Сергей Avatar
    Сергей

    Подскажите, а как можно в загруженном WinPE узнать букву диска, с которого она загружалась? Может быть есть какая то переменная среды? Или эту букву можно вручную установить в загрузчике?

    Для чего это:
    При старте WinPE запускается TC, у которого на панели инструментов есть ссылки на все установленные программы. Но не все программы можно запихнуть в wim архив – он разбухает, а это плохо. Поэтому некоторые программы хотелось бы держать именно на флешке. Так вот как правильно задать путь к этим программам, чтобы при запуске ТС на разных компьютерах он всегда имел правильные ярлыки для запуска утилит и инструментов?
    Без использования плоской загрузки.

    1. Vadim Sterkin Avatar

      Сергей, изучайте возможности своего файлового менеджера – есть внутренние переменные %commander_drive% и %commander_path%.

      1. Сергей Avatar
        Сергей

        я знаю о внутренних переменных ТС. Это не то. Объясню по другому.

        ТС находится внутри boot.wim и выполняется в winpeshl.ini.
        Раздел WinPE, загруженной из boot.wim, всегда имеет букву X:\.
        А раздел флешки, на котором лежат boot.wim и прочие программы/утилиты, на разных компьютерах может иметь разные буквы, как и любой съемный носитель(предположим это D:\).

        Как создать ссылку на панели ТС на запуск программ с диска D:\(раздел флешки), чтобы она работала на разных ПК и с использованием разных флешек?

        З.Ы.: наводку на редактирование HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices взял отсюда:
        http://forum.oszone.net/post-2083366.html#post2083366

        Удалось присвоить букву диску путем редактирования HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices в boot.wim.
        Но такой метод сработает только для 1 накопителя. Если я перепишу образ на другую флешку – придется заново редактировать раздел под нее и удалять лишние данные о старой флешке.

        Как сделать толково? Копал в сторону bcdedit – но ничего не нашел.

        1. Vadim Sterkin Avatar

          Объясню по другому.
          ТС находится внутри boot.wim и выполняется в winpeshl.ini.

          Нет, это называется “предоставлю больше инфо, чем в исходном вопросе” :)

          я знаю о внутренних переменных ТС. Это не то

          Не то, потому что у вас TC не на флэшке, а зачем-то засунут в boot.wim. Ничто не мешает поместить его на флэшку, раз у вас там все утилиты сложены. А из startnet.cmd определять букву флэшки с помощью старого доброго маркерного файла и запускать TC.
          [code lang=”plain”]FOR %%d IN (c d e f g h i j k l m n o p q r s t u v w x y z) DO IF EXIST %%d:\marker.txt SET FLASH=%%d:
          start %FLASH%\TotalCmd\totalcmd.exe[/code]

          См. также А вы совершаете эти 4 ошибки на форумах? (1 и 2).

        2. Владимир Куприков Avatar
          Владимир Куприков

          Сергей, я так понял, что у Вас ТС запускается из winpeshl.ini в разделе [LaunchApp] или [LaunchApps]

          Если в разделе [LaunchApp], то у Вас больше ничего не получится, там можно запускать только одну команду.
          Поэтому в раздел [LaunchApps] включите команды, как сказал Вадим:

          [code lang=”plain”]FOR %%d IN (c d e f g h i j k l m n o p q r s t u v w x y z) DO IF EXIST %%d:\marker.txt SET FLASH=%%d:
          start <путь к папке с ТС>\totalcmd.exe
          [/code]
          В дальнейшем для любых обращений к флешке, исользуйте переменную %FLASH%

          Но я сразу же отказался от использования winpeshl.ini. Оболочка в виде ТС это хорошо, но командная строка все-таки лучше. (Ну так, на всякий случай, после выхода из TC)
          Поэтому использовал файл startnet.cmd

          [code lang=”plain”]@echo off
          :=========================================
          : Настройка среды предустановки Windows PE
          :=========================================

          : Инициализация поддержки сети и устройств Plug-and-Play
          :——————————————————-
          wpeinit

          : Задание переменной %DiskRoot%, соответствующей букве диска загрузочной флешки
          :——————————————————————————
          FOR %%i IN (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO IF EXIST %%i:\usbdrive.tag SET DiskRoot=%%i:

          : Изменение переменной %Path%
          :—————————-
          set PATH=%DiskRoot%\utility;%PATH%

          : Вызов командного файла для продолжения настройки
          :————————————————-
          BootWinPE.cmd
          [/code]
          Только для случая внесения изменений в автозагрузку WinPE без сборки/разборки файла boot.wim, создал на флешке файл BootWinPE.cmd, куда включил все окончательные команды.

          [code lang=”plain”]@echo off
          :===============================================================================
          : Настройка среды предустановки Windows PE (продолжение – вызов из startnet.cmd)
          :===============================================================================

          : Назначение английской раскладки клавиатуры
          :——————————————-
          wpeutil SetKeyboardLayout 0409:00000409

          : Запуск Windows Commander
          :————————-
          %DiskRoot%\utility\shell\WINCMD\WINCMD32.EXE %DiskRoot% %DiskRoot%\utility /i=%DiskRoot%\utility\shell\WINCMD\wincmd.ini
          [/code]
          Правда пока этой возможностью еще не воспользовался. Если только во время отладки автозагрузки.

          P.S. Я использую Windows Commander 5.0 – мне его вполне хватает.

          Кстати, после выхода из WC английская раскладка клавиатуры почему-то переключается на русскую :-(
          В WC стартует английская раскладка, а в коммандной строке русская не смотря на команду “wpeutil SetKeyboardLayout 0409:00000409”
          Пока не могу понять в чем дело?

          Вадим, может подскажете. ;-)

          1. Vadim Sterkin Avatar

            Поэтому в раздел [LaunchApps] включите команды, как сказал Вадим

            Владимир, я сказал добавить команды в startnet.cmd. Я сомневаюсь, что они отработают из winpeshl.ini в указанном вами виде. Вы сами проверяли это? Так или иначе, из командного файла они точно отработают.

            По раскладке – это древний косяк, в свое время я его не победил (видимо, не работает).

  39. Владимир Куприков Avatar
    Владимир Куприков

    Вы сами проверяли это?

    Не стал связываться с winpeshl.ini. Старый добрый autoexec.bat лучше :-).
    мне это очень сильно напомнило этап 1-windowsPE файла ответов. Ну ни как не смог приципить к нему переменную %FLASH%. Запоминалась только вручную когда войдешь в cmd по Shift+F10. А в файле ответов – нет. Похоже там что-то связано с несколькими сессиями cmd. Но я так и не понял.

    Я сомневаюсь, что они отработают из winpeshl.ini в указанном вами виде.

    Ну пусть Сергей попробует, а вдруг у него получится и он нам об этом напишет. Он ведь использует именно его.
    А если не получится, то перейдет на startnet.cmd, если конечно захочет.

    По раскладке — это древний косяк, в свое время я его не победил (видимо, не работает).

    Вот и у меня не получилось…

  40. Сергей Avatar
    Сергей

    По поводу winpeshl.ini:
    Все команды из winpeshl.ini выполняются. Не важно сколько или какие разделы вы используете app или apps или вместе. Выполняется ВСЁ. Другое дело, что команды выполняются строго в том порядке в котором там прописаны – это раз. Во вторых они команда начинает выполняться только после того, как закончится предыдущая. И в третьих(нельзя сказать в третьих, т.к. это следствие из первых 2) – если [LaunchApp] указать ТС, а после добавить команды в [LaunchApps] – они будут выполняться только после закрытия ТС, но т.к. ТС указан как оболочка, то после выполнения команд из [LaunchApps] сразу последует выключение WinPE.

    Поэтому я поступил следующим образом: в winpeshl.ini я прописал только ТС как оболочку, а в плагин autoruns для TC прописал прочие команды типо wpeinit и сейчас добавлю ту команду для поиска флешки, что вы предложили.

    Таким образом сразу при запуске WinPE у меня стартует готовый к работе ТС, а в фоне выполняются прочие команды.

    На счет консоли – так ее можно запросто вызвать из ТС. Хоть просто набрать на клаве cmd, хоть ярлык на панель добавить.

    Раскладка)):
    А зачем, Владимир, вы меняете раскладку при каждом запуске? Ведь можно один раз прописать:
    [code lang=”plain”]Dism /image:%ua%\winpe_x86\mount\ /Set-InputLocale:en-US;ru-RU[/code]После чего при запуске по умолчанию будет англ, и можно сменить на рус как обычно.

    З.Ы.: Вадим, не считаю, что изначально дал вам недостаточно информации. Я сказал и что я хочу сделать и ЗАЧЕМ я это хочу.
    Все же продолжу искать другие методы по получению буквы флешки. Пока буду использовать перебор, но это уж какой то некрасивый метод.

    1. Vadim Sterkin Avatar

      Сергей, спасибо за разъяснения по поводу winpeshl.ini. Я писал о нем в статье про 3.0, так что уже подзабыл подробности.

      Пока буду использовать перебор, но это уж какой то некрасивый метод.

      Вам шашечки или ехать? :)

      Вадим, не считаю, что изначально дал вам недостаточно информации. Я сказал и что я хочу сделать и ЗАЧЕМ я это хочу.

      Я остаюсь при своем мнении, поскольку ключевой момент – внедрение TC в boot.wim. В своих статьях я привожу примеры с размещением папки Tools в корне флэшки. В этом случае внутренних переменных TC достаточно для решения вашей задачи, поэтому мой ответ состоял из одной строки. У вас другой случай? Сорри, я не телепат :)

      1. Максим Avatar
        Максим

        Скажите Вадим, а вы не знаете почему начиная от Win8 ADK, нет ISO образов с этим инструментом?
        P.S. IDROID нашел сообразительность в скачивании с торрент трекера.

        1. Vadim Sterkin Avatar

          Максим, я не знаю. И вы напрасно качали это с торрентов – это же предварительная версия. Видимо, придется обновить статью для самых смекалистых.

          1. Максим Avatar
            Максим

            Мне нужна основа. Конечно у меня есть adksetup.exe скачан с сайта МС. Но качать 4.1 ГБ я не собираюсь. Лучше обновлю предварительную версию с помощью этого файла. Спасибо за ответы

          2. Vadim Sterkin Avatar

            Но качать 4.1 ГБ я не собираюсь. Лучше обновлю предварительную версию с помощью этого файла

            Ну да, скачать 1.2GB Developer Preview – легко, а 4GB последней версии – не, не надо. Дело ваше, но я считаю плохой идеей использовать предварительные версии вместо актуальных, особенно когда заходит речь об инструментах для создания образов.

    2. Владимир Куприков Avatar
      Владимир Куприков

      А зачем, Владимир, вы меняете раскладку при каждом запуске?

      Действительно, а зачем? Так я и не понял почему. В первых сборках 3.0 и 3.1 я так и делал.
      Видно сработал принцип: либо забыл, либо ассоциации с установленной Windows.

      Я настраиваю Windows на русский язык, так как часто в установленной системе приходится пользоваться сначала именно русским языком. Да и не один я работаю на домашнем компьютере. И друзья чаще открывают сначала Word или Однокласники, а не командную строку для отладки и ремонта.
      Когда-то в старых “Зверевых” сборках настройка на английский язык мне очень сильно мешала и надоедала. А изменить ее было никак нельзя. Но возможно я тогда чего-нибудь не знал. Теперь все делаю сам.

      После непродолжтельной работы в WinPE с 3.0 до 4.1 понял, что для себя и, именно, в WinPE нужен сначала английский.

      Таким образом сразу при запуске WinPE у меня стартует готовый к работе ТС, а в фоне выполняются прочие команды.

      Сергей, интересно, а какие?
      Я в сущности использую ТС только для удобного перемещения по дереву каталогов на флешке и диске, копирования, перемещения, удаления, запуска утилит и т.п.
      Для выполнения последовательности часто выполняемых команд, я использую скрипты.
      В моем и Вадима случае, у нас тоже стартует готовый к работе TC.

      1. Сергей Avatar
        Сергей

        Владимир Куприков: В моем и Вадима случае, у нас тоже стартует готовый к работе TC. »

        да я не спорю, просто речь зашла о winpeshl.ini – я постарался подробней объяснить как я с его помощью реализовал запуск. Мне удобней использовать ТС как основной инструмент. И запускать приложения, в том числе и консоль удобней(да и быстрей) уже из него. Поэтому я сделал так.

        1. Сергей Avatar
          Сергей

          Вот такая команда:
          [code lang=”plain”]for /F "tokens=3" %%a in (‘reg query HKLM\SYSTEM\CurrentControlSet\Control\ /v PEBootRamdiskSourceDrive’) do set flash=%%a[/code]

          Пробовал добавлять значение flash в реестр:
          [code lang=”plain”]reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v flash /t REG_SZ /d %flash:~0,2% /f[/code]

          Но все новые окна(запущенные приложения) используют переменные того приложения из которого были запущены(1) и игнорируют записи в реестре(2). Изза этого воспользоваться переменной flash можно только используя startnet с примерным содержанием:
          [code lang=”plain”]wpeinit

          for /F "tokens=3" %%a in (‘reg query HKLM\SYSTEM\CurrentControlSet\Control\ /v PEBootRamdiskSourceDrive’) do set flash=%%a

          start "" "%ProgramFiles%\TotalCmd\TOTALCMD.EXE"[/code]

          Использовать переменную flash в моей старой конфигурации запуска(опираясь на winpeshl.ini) не получается, т.к. ее надо выполнять перед запуском ТС.