PDA

Показать полную графическую версию : [решено] Выполнение команд Dism через bat файл


Страниц : [1] 2

quelilyn3
24-01-2020, 13:10
Как можно автоматизоровать команды Dism через bat файл?

Я использую обычные команды для экспорта, монтирования и т.д, но если их использовать через бат файл (*.bat, *.cmd) ошибка:
Error 50: The request is not supported.

p.s
Цель сделать выполнение команд без ошибок, и без установки ADK, такое делают для удобства.
Смотрел содержимое, не понял как убрать ошибки.


Dism /Mount-Wim /WimFile:"%~dp0DVD\sources\install.wim" /index:3 /MountDir:"%~dp0Mount"
Dism /Unmount-Wim /MountDir:"%~dp0Mount" /Commit

Smarty
24-01-2020, 13:15
quelilyn3, сверьте свои команды с Global Options for Servicing and Imaging Commands (https://docs.microsoft.com/ru-ru/windows-hardware/manufacture/desktop/dism-global-options-for-command-line-syntax#global-options-for-servicing-and-imaging-commands)

quelilyn3
24-01-2020, 13:19
Smarty, Не понял, не вижу ошибок... Эти команды выполняются c успехом (так dism пишет), но в конце ошибка лезет.
Или что полный путь нужен, а если я его не знаю? Это неудобно каждый раз пути писать.

p.s
Пробовал по другому, переходил в папку с файлом, команды выполняет успешно, и в конце сюрприз.

Smarty
24-01-2020, 13:35
quelilyn3, приведите весь текст скрипта, что между mount и unmount.

quelilyn3
24-01-2020, 13:46
приведите весь текст скрипта, что между mount и unmount. »


@echo off
cd /d "%~dp0DISM"
dism.exe /Mount-Wim /WimFile:"%~dp0DVD\sources\install.wim" /index:3 /MountDir:"%~dp0Mount"
reg load "HKLM\TK_SOFTWARE" "%~dp0Mount\Windows\System32\config\SOFTWARE"
reg add "HKLM\TK_SOFTWARE\Policies\Microsoft\Windows NT\SystemRestore" /v "DisableSR" /t REG_DWORD /d "1" /f
reg unload "HKLM\TK_SOFTWARE"
dism.exe /Unmount-Wim /MountDir:"%~dp0Mount" /Commit
dism.exe /Unmount-Wim /MountDir:"%~dp0Mount" /Discard
dism.exe /Cleanup-wim
pause


Поднять права до TrustedInstaller (запуск основного файла через отдельный файл)

NSudo.exe -U:T -P:E


Или так

NSudo.exe -U:T -P:E reg load "HKLM\TK_SOFTWARE" "%~dp0Mount\Windows\System32\config\SOFTWARE"
NSudo.exe -U:T -P:E reg add "HKLM\TK_SOFTWARE\Policies\Microsoft\Windows NT\SystemRestore" /v "DisableSR" /t REG_DWORD /d "1" /f


Я убрал всё кроме этого, ошибка осталась по прежнему

Dism /Mount-Wim /WimFile:"%~dp0DVD\sources\install.wim" /index:3 /MountDir:"%~dp0Mount"
Dism /Unmount-Wim /MountDir:"%~dp0Mount" /Commit


p.s
MSMG Toolkit работает по этому принципу, ошибок нет от него.

Vadikan
24-01-2020, 13:53
quelilyn3, емнип надо использовать двойные символы процентов (%%)

Smarty
24-01-2020, 13:55
dism.exe /Unmount-Wim /MountDir:"%~dp0Mount" /Commit
dism.exe /Unmount-Wim /MountDir:"%~dp0Mount" /Discard »
Сначала вы сохраняете изменения в образе, потом отменяете?
Попробуйте так:
@echo off
dism.exe /Mount-Wim /WimFile:"%~dp0DVD\sources\install.wim" /index:3 /MountDir:"%~dp0Mount"
reg load "HKLM\TK_SOFTWARE" "%~dp0Mount\Windows\System32\config\SOFTWARE"
NSudo.exe -U:T -P:E reg add "HKLM\TK_SOFTWARE\Policies\Microsoft\Windows NT\SystemRestore" /v "DisableSR" /t REG_DWORD /d "1" /f
reg unload "HKLM\TK_SOFTWARE"
dism.exe /Unmount-Wim /MountDir:"%~dp0Mount" /Commit
pause
Скрипт должен лежать в одной папке с папкой DVD.
NSudo.exe -U:T »
Там владелец вроде СИСТЕМА, а не TrustedInstaller.
емнип »
вип

quelilyn3
24-01-2020, 14:38
Попробуйте так »

Работает, но только если установлен ADK, осталось определить местоположение самого dism.exe и nsudo.exe

%~dp0DVD
%~dp0Tools\DISM\dism.exe - со всеми файла своими
%~dp0Tools\nsudo.exe

p.s
Они в разных подпапках с bat файлом.


@echo off
"%~dp0Tools\DISM\dism.exe" /Mount-Wim /WimFile:"%~dp0DVD\sources\install.wim" /index:3 /MountDir:"%~dp0Mount"
reg load "HKLM\TK_SOFTWARE" "%~dp0Mount\Windows\System32\config\SOFTWARE"
"%~dp0Tools\NSudo.exe" -U:T -P:E reg add "HKLM\TK_SOFTWARE\Microsoft\Windows Defender\Features" /v "TamperProtection" /t REG_DWORD /d "0" /f
"%~dp0Tools\NSudo.exe" -U:T -P:E reg add "HKLM\TK_SOFTWARE\Policies\Microsoft\Windows Defender" /v "DisableAntiSpyware" /t REG_DWORD /d "1" /f
reg unload "HKLM\TK_SOFTWARE"
"%~dp0Tools\DISM\dism.exe" /Unmount-Wim /MountDir:"%~dp0Mount" /Commit
pause


Пока что такой вариант, пробую
Работае!

Smarty
24-01-2020, 14:47
quelilyn3, dism у всех лежит в папке Windows\System32, поэтому прописывать путь к нему не нужно.
У вас другая версия, что он лежит отдельно?
reg load "HKLM\TK_SOFTWARE" »
Кавычки можно убрать.
Вообще, если вы монтируете образ только для того, чтобы отключить восстановление, то проще это сделать через SetupComplete.cmd (http://www.oszone.net/8604/SetupComplete).
И остальные твики для HKLM можно внести так же.

quelilyn3
24-01-2020, 15:03
У вас другая версия, что он лежит отдельно? »

ADK Preview

quelilyn3
24-01-2020, 15:19
Smarty,

Конечный результат, только что делать с параметрами -U:T -P:E?
Я имею в виду, в кавычки или в переменную можно или их взять.


@echo off
set "dism_path=%~dp0Tools\DISM"
set "nsudo_path=%~dp0Tools"

"%dism_path%\dism.exe" /Mount-Wim /WimFile:"%~dp0DVD\sources\install.wim" /index:3 /MountDir:"%~dp0Mount"
reg load "HKLM\TK_SOFTWARE" "%~dp0Mount\Windows\System32\config\SOFTWARE"
"%nsudo_path%\NSudo.exe" -U:T -P:E reg add "HKLM\TK_SOFTWARE\Microsoft\Windows Defender\Features" /v "TamperProtection" /t REG_DWORD /d "0" /f
"%nsudo_path%\NSudo.exe" -U:T -P:E reg add "HKLM\TK_SOFTWARE\Policies\Microsoft\Windows Defender" /v "DisableAntiSpyware" /t REG_DWORD /d "1" /f
reg unload "HKLM\TK_SOFTWARE"
"%dism_path%\dism.exe" /Unmount-Wim /MountDir:"%~dp0Mount" /Commit
pause


Такая же ситуация с

oscdimg.exe -lW10X64 -m -u2 -b%~dp0DVD\boot\etfsboot.com "%~dp0\DVD" %~dp0\W10X64.iso

Smarty
24-01-2020, 17:03
quelilyn3, про NSudo я ничего не знаю, не пользовался.
Такая же ситуация с »
Лучше
"%~dp0Tools\oscdimg.exe" -h -m -o -u2 -udfver102 -lCCCOMA_X64FRE_RU-RU_DV9 -bootdata:2#p0,e,b"%~dp0DVD\boot\etfsboot.com"#pEF,e,b"%~dp0DVD\efi\microsoft\boot\efisys.bin" "%~dp0DVD" "%~dp0W10X64.ISO"
Будет загрузчик для MBR и EFI.

Созданным по подобному типу "Сборщиком дистрибутива" пользуюсь года с 11-12-го.

quelilyn3
25-01-2020, 13:49
Лучше »

Вот про это я не знал, хотя обычный на uefi работает, может это до своего времени.

Smarty
25-01-2020, 14:06
хотя обычный на uefi работает »
На виртуалке в режиме EFI образ, записанный без \efi\microsoft\boot\efisys.bin не грузится, а виртуалкой пользуюсь часто.
На реальном железе EFI не проверял, поскольку и с BIOS (MBR) всё хорошо.
Споры по поводу BIOS\MBR vs UEFI\GPT мне не интересны, использую ежемесячный полный бекап системы, а железо укладывается и в возможности BIOS.

quelilyn3
25-01-2020, 14:25
Smarty, Можете показать как сделать ISO на Powershell?

p.s
Powershell быстро развивается, в последнее время!

Smarty
25-01-2020, 14:37
quelilyn3, хотите усложнить процесс? Разбирайтесь (https://gallery.technet.microsoft.com/scriptcenter/New-ISOFile-function-a8deeffd).
Здесь (http://www.jbmurphy.com/2012/01/13/powershell-scripts-to-create-a-winpe-4-0-wimiso/) вроде попроще.

quelilyn3
25-01-2020, 14:43
хотите усложнить процесс? »
Powershell написан на C#, именно из за этого он унаследовал столько недостатков, плюсов тоже немало.

Smarty
25-01-2020, 14:46
quelilyn3, что мешает? Развивайтесь, потом все покажете как это сделать на PowerShell.

quelilyn3
25-01-2020, 14:49
Smarty, Давно уже всё сделано
http://thelowercasew.com/create-an-iso-file-with-powershell

Smarty
25-01-2020, 14:56
Давно уже всё сделано »
Ну, если вы считаете, что вместо 1 строки в CMD 80 строк на PowerShell лучше, никто вас останавливать не будет. :)




© OSzone.net 2001-2012