Я сталкивался с подобной ситуацией, и я надеюсь, что это может помочь вам ...
Я сделал резервную копию диска C моей старой рабочей станции на виртуальном жестком диске с меткой диска "Old_BG7". Файл VHDX в настоящее время находится на сервере в моем центре обработки данных (\\bgserver\e $\Backup\NetOpsBG7_C $ .vhdx). Я хотел, чтобы этот виртуальный диск был подключен как мой диск E: при каждом входе в систему. Проблема, с которой я столкнулся, заключалась в том, что Diskpart не всегда назначал один и тот же номер тома моему виртуальному диску.
Вот что я сделал, чтобы обойти эту проблему, и до сих пор она работала для меня.
Я создал запланированное задание, которое запускает пакетный сценарий (C:\Users\BG\AppData\Roaming\BG_Stuff\NetOpsBG7_E $ .cmd) при входе в систему с повышенными привилегиями. Этот пакетный скрипт выглядит так:
@echo off
diskpart /s "%userprofile%\AppData\Roaming\BG_Stuff\NetOpsBG7_C$.cfg"
for /f "tokens=2,3* delims= " %%i in ('echo list volume ^| diskpart ^| find /i "Old_BG7"') do if not %%j==E (echo select volume=%%i>"%userprofile%\AppData\Roaming\BG_Stuff\tmpScript.cfg" && echo assign letter=E>>"%userprofile%\AppData\Roaming\BG_Stuff\tmpScript.cfg" && echo exit>>"%userprofile%\AppData\Roaming\BG_Stuff\tmpScript.cfg" && diskpart /s "%userprofile%\AppData\Roaming\BG_Stuff\tmpScript.cfg" && del /q "%userprofile%\AppData\Roaming\BG_Stuff\tmpScript.cfg")
exit 0
Первая команда в пакетном сценарии вызывает этот стандартный сценарий diskpart (C:\Users\BG\AppData\Roaming\BG_Stuff\NetOpsBG7_C $ .cfg):
select vdisk file="\\bgserver\e$\Backup\NetOpsBG7_C$.vhdx"
attach vdisk
exit
Однако настоящее волшебство происходит во второй строке пакетного сценария. Я повторяю команду "список томов" в Diskpart, передавая эти выходные данные с помощью команды "НАЙТИ", чтобы найти метку моего диска VHD "Old_BG7", а затем использую "FOR" для возврата двух переменных: номера тома и буквы диска установленный VHD. Затем команда 'IF' вступает во владение и проверяет, соответствует ли буква диска VHD букве "E" или нет. Если это так, он просто выходит и выходит; но если нет, он пишет, выполняет, а затем удаляет временный сценарий Diskpart (C:\Users\BG\AppData\Roaming\BG_Stuff\tmpScript.cfg).
Так, например, если буква диска, назначенная виртуальному жесткому диску, не была "E", а его номер тома оказался равным 5, то tmpScript будет выглядеть так:
select volume=5
assign letter=E
exit
Надеюсь это поможет...
- = В