How to Attach and Copy files from a VHD in Windows 10
Recently, one of my external hard disks was stolen, and it could not have come at a worse time. I needed some important files that I had backed up to the drive. The only other way I could retrieve them was on my other external disk, but they were buried in system images that I had created. You might think my only option is to restore those system images.
Note: This will work on Windows 10 Pro only and not the Home version. For more on how to create a VHD, read our article: How to Turn Your Physical Computer into a Virtual Machine.
Most of those images are for PCs that are running new versions of Windows or have died many years ago. When Microsoft released Windows Vista, it added a feature to select editions called Complete PC Backup that would later become known as a system image in Windows 7. Thankfully, when you create one, it stores your entire backup of a PC as a VHD file (Virtual Hard Disk). Since the release of Windows 7, Microsoft added native VHD support in File Explorer. Here’s a look at how to copy and manage files on a VHD in Windows 10.
Mount a VHD File in Windows 10
Make sure you have your VHD file accessible. Then bring up the hidden quick access menu and select Disk Management.
Then click the Action > Attach VHD.
Navigate to the location of the VHD file. As I noted, I’m using a VHD file stored as a Windows System Image.
The VHD file is then mounted in Disk Management, just as though it was a regular physical drive.
Proceed to browse the VHD, copy and open files as you would any external drive connected to your PC.
When you’re done using the VHD, simply eject it like you would any attached storage.
What to Do if the VHD Isn’t Assigned a Drive Letter?
Sometimes your VHD might not have a drive letter assigned when you attach it, especially if it’s the first time you are attaching the file. You can work around this issue by assigning it one.
Right-click the VHD file then click Change Drive Letter and Paths.
Click Add then select the Assign the following drive letter: radio box then click in the drive letter list box then select an available drive letter. Click OK then OK again.
Since virtual disks are treated like physical ones, you can assign them permanent drive letters, too.
Creating and mounting VHDs is a useful feature built into Windows. If you’re interested in other ways, you can use VHD files, check out our article on setting up a dual-boot configuration using a VHD drive.
Mount-VHD
Mounts one or more virtual hard disks.
Syntax
Description
The Mount-VHD cmdlet mounts one or more virtual hard disks.
Examples
Example 1
Mounts a virtual hard disk where the path to the virtual hard disk file is c:\test\testvhdx.vhdx.
Example 2
Mounts a virtual hard disk in read-only mode where the path to the virtual hard disk file is c:\test\testvhdx.vhdx.
Example 3
Attaches a virtual hard disk to the system where the path to the virtual hard disk file is c:\test\testvhdx.vhdx, and gets the volumes associated with it.
Parameters
Runs the cmdlet in a remote session or on a remote computer. Enter a computer name or a session object, such as the output of a New-CimSession or Get-CimSession cmdlet. The default is the current session on the local computer.
Type: | CimSession [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies one or more Hyper-V hosts on which a virtual hard disk is to be mounted. NetBIOS names, IP addresses, and fully qualified domain names are allowable. The default is the local computer. Use localhost or a dot (.) to specify the local computer explicitly.
Type: | String [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Prompts you for confirmation before running the cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies one or more user accounts that have permission to perform this action. The default is the current user.
Type: | PSCredential [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies that the virtual hard disk is to be mounted without assigning drive letters to the volumes contained within the virtual hard disk.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies that an object is to be passed through to the pipeline representing the virtual hard disk to be mounted.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the path to the virtual hard disk file for the virtual hard disk to be mounted. If a filename or relative path is specified, the virtual hard disk path is calculated relative to the current working directory.
Type: | String [ ] |
Aliases: | FullName |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies that the virtual hard disk is to be mounted in read-only mode.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the unique ID of a VHD set.
Type: | Guid |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Shows what would happen if the cmdlet runs. The cmdlet is not run.
Автоматическое монтирование VHD/VHDX-диска при загрузке Windows
В Windows 7 и Windows Server 2008 R2 появилась возможность создавать и подключать файлы виртуальных дисков (VHD/VHDX) прямо из консоли управления дисками (Disk Management). Такие виртуальные диски выглядят в системе как отдельные физические диски и могут использоваться для хранения произвольных данных. Существенный недостаток таких дисков — при каждой перезагрузке Windows приходится каждый раз вручную монтировать все VHD/VHDX файлы. Кроме того, право на монтирование файлов виртуальных дисков vhd есть только у администраторов компьютера, простые пользователи не могут самостоятельно подключить VHDx файл (каждый раз приходится вмешиваться администратору).
В этой статье мы покажем, как автоматически монтировать vhd/vhdx файл при загрузке системы, так, чтобы виртуальные диски были доступны и простым пользователям (не обладающих правами администратора)
В Windows отсутствует встроенная возможность автомонтирования vhd-файлов при перезагрузке системы, поэтому нам придется разработать собственный механизм монтирования. В этом нам поможет планировщик заданий Windows и утилита diskpart.
Итак, создадим текстовый файл (C:\Scripts\attach_vhd.txt) со следующим кодом:
select vdisk file=»C:\vhd2\w10vhd.vhdx»
attach vdisk
select part 1
assign letter=K
exit
где:
C:\vhd2\w10vhd.vhdx – полный путь к VHD или VHDX образу диска
K –буква диска, которую нужно назначить VHD образу
Данный сценарий подключает указанный vhd файл, выбирает на нем первый раздел и назначает ему данную букву диска. Если на диске несколько разделов, измените код соответствующим образом, указав номер раздела, который нужно подключать.
Запустите Windows Task Scheduler (Taskschd.msc) и создайте новое задание планировщика (Actions -> Create Task). Настройте его следующим образом:
- Вкладка General:
- Укажите имя задания (Name):automountvhdx;
- Отметьте, что он должно запускаться независимо от того, вошел пользователь в систему или нет (Runwhetheruserisloggedonornot);
- Укажите, что задание должно запускаться с максимальными привилегиями ( Run with highest privileges);
- Вкладка Triggers:
- Добавьте новый триггер запуска при загрузке (AtStartup) с настройками по-умолчанию.
- Добавьте новый триггер запуска при загрузке (AtStartup) с настройками по-умолчанию.
- Вкладка Actions:
- Создадим новое действие New:
- Действие запуск программы (Start a program);
- Программа/скрипт: diskpart ;
- В качестве аргументов программы укажем: /s«C:\Scripts\attach_vhd.txt» ;
- Создадим новое действие New:
- На вкладке Conditions снимите галку у опции «Start the task only if the computer is on AC power«.
- Сохраните изменения. Система попросит вас указать данные учетной записи, из-под которой будет запускаться задание (учетная запись должна обладать правами администратора).
Чтобы задание выполнялось от имени системы, еще раз откройте его свойства и на вкладке General нажмите кнопку Change User or Group. В окне выбора пользователя укажите system и сохраните изменения.
Теперь при следующей перезагрузке компьютера указанный виртуальный VHDx диск будет смонтирован автоматически.
Если вы хотите, чтобы виртуальный vhdx диск монтировался не в отдельную букву диска, а в папку, измените код в файле c:\Scripts\attach_vhd.txt на:
select vdisk file=»C:\vhd2\w10vhd.vhdx»
attach vdisk
select part 1
assign mount=»c:\mount»
exit
В результате выполнения данной команды виртуальный диск будет смонтирован в отдельный каталог на вашем физическом диске (в данном каталоге будет отображаться содержимое vhdx файла).
Можно смонтировать не только локальный VHD диск, но и диск из сетевого каталога через UNC путь.
select vdisk fils=»\\192.168.1.100\share\shared.vhdx»
Для тестирования работы коды вашего скрипта автоматического подключения виртуальных дисков не обязательно каждый раз перезагружать компьютер, достаточно в командной строке с правами администратора выполнить команду:
diskpart /s c:\Scripts\attach_vhdx.txt
Если ваш код не содержит ошибок, то команда подключит vhdx файл и в системе появится новый диск.
Данные способы автоматического подключения виртуальных дисков работают как в Windows 10, так и в Windows 8.1 и Win 7.
Если вы больше любите PowerShell, можно автоматически смонтировать VHDX диск с помощью следующего PoSh скрипта в автозагрузке (для управления дисками изспользуются командлеты из модуля Storage):