Автоматичне монтування 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 файл, вибирає на ньому перший розділ і призначає йому цю букву диска. Якщо на диску кілька розділів, змініть код відповідним чином, вказавши номер розділу, який потрібно підключати.

Примітка. З метою безпеки бажано змінити NTFS дозволу на файл «C: \ Scripts \ attach_vhdx.txt», так щоб прості користувачі не могли його змінити.

Запустіть Windows Task Scheduler (Taskschd.msc) І створіть нове завдання планувальника (Actions -> Create Task). Налаштуйте його таким чином:

  • вкладка General:
    • Вкажіть ім'я завдання (Name): Automountvhdx;
    • Відзначте, що він має запускатися незалежно від того, увійшов користувач в систему чи ні (Run whether user is logged on or not);
    • Вкажіть, що завдання має запускатися з максимальними привілеями ( Run with highest privileges);
  • вкладка Triggers:
    • Додайте новий тригер запуску при завантаженні (At Startup) З настройками за замовчуванням.
  • вкладка Actions:
    • Створимо нову дію New:
      • Дія запуск програми (Start a program);
      • Програма / скрипт: diskpart ;
      • В якості аргументів програми вкажемо: /s «C: \Scripts\attach_vhd.txt»;

  • на вкладці Conditions зніміть галку у опції «Start the task only if the computer is on AC power«.
  • Збережіть зміни. Система попросить вас вказати дані облікового запису, з-під якої буде запускатися завдання (обліковий запис повинен мати права адміністратора).

Щоб завдання виконувалося від імені системи, ще раз відкрийте його властивості і на вкладці General натисніть кнопку Change User or Group. У вікні вибору користувача вкажіть system і збережіть зміни.

Ви можете створити завдання планувальника з допомогою PowerShell або за допомогою schtasks:

schtasks / create / tn "automountvhdx" / tr "diskpart.exe / s 'c: \ Scripts \ attach_vhdx.txt'" / sc ONLOGON / ru SYSTEM

Тепер після перезавантаження сторінки комп'ютера вказаний віртуальний VHDx диск буде змонтований автоматично.

Примітка. Як правило, диск з'являється в списку доступних дисків не відразу, а через 30-60 секунд після завантаження Windows.

Якщо ви хочете, щоб віртуальний 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):

mount-vhd -path C: \ vhd2 \ w10vhd.vhdx -PassThru | Get-Disk | Get-Partition | Set-Partition -NewDriveLetter G