Проблема, идея и решение Здравствуйте, мои дорогие дети.
Спешу сообщить, что мне в голову пришла еще одна идея, вылившаяся в эту заметку.
Идея, по сути, возникла из проблемы, которую подкинула моя любимая и уважаемая компания Microsoft и их новый продукт Windows Server 2012 R2. И тут я вовсе не иронизирую, они мне очень нравятся.
Но начнем по порядку.
Прежде всего отмечу, что помимо всего прочего я являюсь еще и тренером по всевозможным продуктам Microsoft, и соответственно мне доступны определенные вкусности в виде готовых виртуальных машин для подготовки к курсам в рамках учебного центра.
И вот, собственно, я решил попробовать загнать новый сервер, и, как обычно, развернуть на нем виртуальные машины из одного курса.
Я откачал эти машины, всё подготовил, распаковал.
И тут меня ждало ужасное.
Их категорически отказались ввозить.
В общем оказалось, что машины были экспортированы в Windows Server 2008 и не будут импортированы в Windows 2012 R2. Это не поддерживается по определенным техническим причинам.
Что же делать, как они могли, спросите вы, и будете правы.
В моем случае под рукой не оказалось Windows Server 2008 и я начал искать альтернативный вариант. В общем, это просто.
В одном из подкаталогов экспортированной машины находился файл с именем типа {GUID}.
exp. Он представляет конфигурацию экспортированной виртуальной машины.
Именно из-за этого он не импортируется, и мы собираемся это изменить.
Я решил просто взять из этого файла нужные мне настройки, привести их в соответствующий вид и просто создать новые виртуальные машины с такими же настройками, как и исходные.
Чтобы долго не заморачиваться, я решил выбрать из файла имя машины, путь к VHD-файлам, конфигурацию памяти и имя виртуальной сети, к которой эти машины должны подключиться.
Но не делайте этого руками, верно.
Более того, если открыть этот файл и посмотреть его содержимое, волосы на голове встают дыбом и пропадает желание искать в нем что-то вручную.
А если их больше одного.
В общем решено, будем писать скрипт
Скрипт
На чем мы пишем? Разумеется, на старом добром PowerShell 4, который идет в комплекте с новым сервером и Windows 8.1. С чего начать? Начнем сразу, а как же иначе? Открываем файл, благо там есть тип [xml], что упрощает ковыряние во внутренностях и дебрях экспортируемой конфигурации.Короче говоря, этот файл содержит набор классов WMI со значениями свойств.
Содержимое этих классов загружается в формате XML и записывается в файл.
Так как я не очень хорошо знаком с этими классами WMI, а также с XLM, мне пришлось помучаться, разбираясь с этими параметрами в лоб.
Вот что произошло:
Теги: #PowerShell #Poweshell; гипер-v;xml;xpathcls $tmp = dir "C:\Program Files\Microsoft Learning\20413\*\*.
exp" -Recurse $tmp | % { # read file [xml]$vm = gc $_.fullname # parsing of the various of different internal XML structures using "properties" notation # CLASSNAME Msvm_VirtualSystemGlobalSettingData $disks = ($vm.DECLARATIONS.DECLGROUP.'VALUE.OBJECT'.
instance | where classname -like "*resource*") | where {$_.property | where name -like "*units*" | where value -eq "disks"} $newVM = @{} # CLASSNAME Msvm_VirtualSystemGlobalSettingData $newVM.Global = $vm.DECLARATIONS.DECLGROUP.'VALUE.OBJECT'.
instance | where classname -like "*Msvm_VirtualSystemGlobalSettingData*" | select -ExpandProperty property | # below passage is most exciting % {$obj=@{}} {$obj["$($_.name)"]=$_.value} {new-object psobject -prop $obj} # disks configuration contains some internal nodes, extractiong them to get the paths to VHDs $newVM.Disks = $disks | % { $prop = @{}; $disk = $_; $disk | select -ExpandProperty property |
-
Отчет О Python
19 Oct, 24 -
Троян Spy Eye Устраняет Конкурентов
19 Oct, 24 -
Кольцевые Сети
19 Oct, 24