У меня болит голова.
У меня тонна дисков дифференциала. Чтобы перемещать машины - и поскольку (слава богу) vm move НЕ копирует исходные коды дифференциальных дисков (к сожалению, экспорт копирует), моя идея состоит в том, чтобы иметь центральную копию всех мастеров на каждом компьютере Hyper-V.
Пример: VM X имеет vhdx с именем "System.vhdx" и отличается от ... \ masters \ x64-2012std.vhdx "
Чтобы стандартизировать пути дифференциальных дисков, я хотел бы, чтобы они были в c: \ Hyper-V \ Masters ....
В C не всегда достаточно места, поэтому я решил, что в \ Masters \ есть переход к реальному пути.
Работает, ИСКЛЮЧАЯ:
PowerShell set-vhd ...... \ system.vhdx -ParentPath c: \ Hyper-V \ Master ..... goon.vhdx
работает, ВМ запускается, НО ...
Get-VHD
позволяет мне видеть, что vhdx напрямую связан с файлом - каким-то образом Hyper-V сочло полезным РАЗРЕШИТЬ соединение и заменить его "реальным" путем к файлу.
Что полностью ломается, когда я перемещаю виртуальную машину на другой хост с другой компоновкой диска (а в настоящее время мы запланировали 3).
Есть ли способ обойти это? Я бы хотел, чтобы ParentPath был ParentPath, КАК Я ЕГО УСТАНОВИЛ, а не что-то измененное или чтобы получить ошибку.
PowerShell работает в совершенно другом пользовательском контексте, а иногда и на совершенно другом компьютере, чем сам Hyper-V. Поэтому любой путь к файлу, используемый в нем, должен быть полностью расширен, чтобы иметь смысл. Для относительных путей просто нет хорошего ответа на вопрос «относительно чего», потому что расширение пути к файлу может зависеть от контекста пользователя.
Однако я понимаю, что ваша стратегия дает ответ на этот вопрос, но большинство из них - нет. И код расширения пути просто использует базовое расширение пути .net, которое, очевидно, расширяет точки повторной обработки.
Вы можете попробовать поговорить напрямую со слоем WMI, а не использовать командлеты PowerShell. Вы можете найти множество примеров в блоге Бена Армстронга "Virtual PC Guy".