Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Задача c клонированием VM.

Ответить
Настройки темы
PowerShell - Задача c клонированием VM.

Пользователь


Сообщения: 70
Благодарности: 2

Профиль | Отправить PM | Цитировать


Приветствую друзья!
Собственно в создании скриптов я полный ноль, посему без вашей помощи никак.
Задача следующая:
Есть VM на HyperV назовем ее BOSS_MAIN
Так же есть еще две VM BOSS_1 and BOSS_2
Необходимо написать скрипт, при запуске которого будут останавливаться и удаляться BOSS_1 и BOSS_2, далее делать копию с VM BOSS_MAIN и заново создавать с нее BOSS_1 BOSS_2
Вопрос следующий можно ли просто скопировать BOSS_MAIN и создать две VM, либо надо сначала экспортировать BOSS_MAIN потом создать две голые VM и только потом импортировать на них экспорт BOSS_MAIN?
Собственно нашел у вас следующий скрипт и немного подредактировал, чтобы сразу создавались VM без запроса параметров и перед созданием остановил, удалил BOSS_1 BOSS_2 и сделал экспорт BOSS_MAIN:

Stop-VM -vm BOSS_1
Remove-VM -vm BOSS_1
Stop-VM -vm BOSS_2
Remove-VM -vm BOSS_2

export-vm -vm BOSS_MAIN -path D:\backups\VM -copystate -wait -force

# Variables
$SRV1 = "BOSS_1"

$SRAM = 512MB

$SRV1VHD =40GB

$VMLOC = C:\HyperV

$Network1 = "Network1"

# Configure Hyper-V Virtual Network
remove-vmswitch $Network1 -force -erroractionsilentlycontinue
new-vmprivateswitch $Network1

# Create Virtual Machines
MD $VMLoc -erroractionsilentlycontinue
new-vm $SRV1 -path $VMLoc
new-vhd -vhdpaths $VMLoc\$SRV1 -size $SRV1VHD
add-vmdisk -vm $SRV1 -controllerid 0 -lun 0 -path $VMLoc\$SRV1
get-vm $SRV1 | add-vmdrive -controllerid 1 -lun 0 -dvd
get-vm $SRV1 | set-vmmemory -memory $SRAM
get-vm $SRV1 | add-vmnic -virtualswitch $Network1

$SRV1 = "BOSS_2"

$SRAM = 512MB

$SRV1VHD =40GB

$VMLOC = C:\HyperV2

$Network1 = "Network2"

# Configure Hyper-V Virtual Network
remove-vmswitch $Network2 -force -erroractionsilentlycontinue
new-vmprivateswitch $Network2

# Create Virtual Machines
MD $VMLoc -erroractionsilentlycontinue
new-vm $SRV2 -path $VMLoc
new-vhd -vhdpaths $VMLoc\$SRV2 -size $SRV1VHD
add-vmdisk -vm $SRV1 -controllerid 0 -lun 0 -path $VMLoc\$SRV1
get-vm $SRV2 | add-vmdrive -controllerid 1 -lun 0 -dvd
get-vm $SRV2 | set-vmmemory -memory $SRAM
get-vm $SRV2 | add-vmnic -virtualswitch $Network2

#Дальше, как мне сделать обратный импорт BOSS_MAIN на эти две виртуалки? предположу, что так:
Import-VM -vm BOSS_1 -path D:\backups\VM -copystate -wait -force
Import-VM -vm BOSS_2 -path D:\backups\VM -copystate -wait -force
#Я же правильно понимаю, что при импорте, я так же, как и при экспорте указываю ту же директорию, или же я должен указать директорию новых VM?

Отправлено: 23:50, 05-12-2013

 

Пользователь


Сообщения: 70
Благодарности: 2

Профиль | Отправить PM | Цитировать


BOSS_MAIN это эталон для двух других, то есть после удаления BOSS_1 и BOSS_2 должны создатся опять же они, но в точной копии, как BOSS_MAIN, в каком состоянии она будет все равно, хоть всегда в выключенном.
По ошибке, я уже разобрался ему не нравилось дублирование -vm

Отправлено: 14:25, 27-12-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 280
Благодарности: 72

Профиль | Отправить PM | Цитировать


Ну вот попробовал сегодня... и проблем вообще не нашел..

Исходное состояние
BOSS_MAIN - Делаем шаблон, делаем экспорт виртуалки в отдельную папку. Удаляем виртуальную машину.
далее.. то что ниже.

читать дальше »

Код: Выделить весь код
$ImportPath="D:\Hyper-V\Export_VM\BOSS_MAIN\BOSS_main\Virtual Machines\E55453FE-1382-4786-9717-25BA9C36248A.XML"
$BOSSFolder="D:\Hyper-V\virtualMashine\tmp"
Stop-VM -Name BOSS_1 -TurnOff
Stop-VM -Name BOSS_2 -TurnOff
Remove-VM -Name BOSS_1 -Force
Remove-VM -Name BOSS_2 -Force
del $BOSSFolder\BOSS_1 -Recurse -Force
del $BOSSFolder\BOSS_2 -Recurse -Force
Import-VM -Path $ImportPath  -copy  -VhdDestinationPath $BOSSFolder\BOSS_1\hdd -GenerateNewId -SnapshotFilePath $BOSSFolder\BOSS_1\Snapshots -VirtualMachinePath  $BOSSFolder\BOSS_1
Rename-VM -Name BOSS_MAIN -NewName BOSS_1
Import-VM -Path $ImportPath -copy  -VhdDestinationPath $BOSSFolder\BOSS_2\hdd -GenerateNewId -SnapshotFilePath $BOSSFolder\BOSS_2\Snapshots -VirtualMachinePath  $BOSSFolder\BOSS_2
Rename-VM -Name BOSS_MAIN -NewName BOSS_2

Отправлено: 03:03, 28-12-2013 | #12


Пользователь


Сообщения: 70
Благодарности: 2

Профиль | Отправить PM | Цитировать


То есть получается, что BOSS_MAIN удаляется? А если мне необходимо, чтобы она всегда была, мне надо будет помимо BOSS_1 и BOSS_2 также еще и импортировать ее же в BOSS_MAIN?
Код: Выделить весь код
export-vm BOSS_MAIN -path D:\backups\VM -copystate -wait -force
Remove-VM -Name BOSS_MAIN -Force
$ImportPath="D:\Hyper-V\Export_VM\BOSS_MAIN\BOSS_main\Virtual Machines\E55453FE-1382-4786-9717-25BA9C36248A.XML"
$BOSSFolder="D:\Hyper-V\virtualMashine\tmp"
Stop-VM -Name BOSS_1 -TurnOff
Stop-VM -Name BOSS_2 -TurnOff
Remove-VM -Name BOSS_1 -Force
Remove-VM -Name BOSS_2 -Force
del $BOSSFolder\BOSS_1 -Recurse -Force
del $BOSSFolder\BOSS_2 -Recurse -Force
Import-VM -Path $ImportPath  -copy  -VhdDestinationPath $BOSSFolder\BOSS_MAIN\hdd -GenerateNewId -SnapshotFilePath $BOSSFolder\BOSS_MAIN\Snapshots -VirtualMachinePath  $BOSSFolder\BOSS_MAIN
Import-VM -Path $ImportPath  -copy  -VhdDestinationPath $BOSSFolder\BOSS_1\hdd -GenerateNewId -SnapshotFilePath $BOSSFolder\BOSS_1\Snapshots -VirtualMachinePath  $BOSSFolder\BOSS_1
Rename-VM -Name BOSS_MAIN -NewName BOSS_1
Import-VM -Path $ImportPath -copy  -VhdDestinationPath $BOSSFolder\BOSS_2\hdd -GenerateNewId -SnapshotFilePath $BOSSFolder\BOSS_2\Snapshots -VirtualMachinePath  $BOSSFolder\BOSS_2
Rename-VM -Name BOSS_MAIN -NewName BOSS_2

Отправлено: 09:43, 28-12-2013 | #13


Пользователь


Сообщения: 70
Благодарности: 2

Профиль | Отправить PM | Цитировать


Попробовал запустить через повер шел это:
Код: Выделить весь код
export-vm BOSS_MAIN -path D:\bacupVM -copystate -wait -force
Remove-VM BOSS_MAIN -Force
$ImportPath="D:\bacupVM\BOSS_MAIN\Virtual Machines\37057F64-D1E1-48FD-80B6-1B28ED948AB2.exp"
$BOSSFolder="F:\VM\export\BOSS_MAIN\Virtual Machines"
Stop-VM BOSS_1 -TurnOff
Stop-VM BOSS_2 -TurnOff
Remove-VM BOSS_1 -Force
Remove-VM BOSS_2 -Force
del $BOSSFolder\BOSS_1 -Recurse -Force
del $BOSSFolder\BOSS_2 -Recurse -Force
Import-VM -Path $ImportPath  -copy  -VhdDestinationPath $BOSSFolder\BOSS_MAIN\hdd -GenerateNewId -SnapshotFilePath $BOSSFolder\BOSS_MAIN\Snapshots -VirtualMachinePath  $BOSSFolder\BOSS_MAIN
Import-VM -Path $ImportPath  -copy  -VhdDestinationPath $BOSSFolder\BOSS_1\hdd -GenerateNewId -SnapshotFilePath $BOSSFolder\BOSS_1\Snapshots -VirtualMachinePath  $BOSSFolder\BOSS_1
Rename-VM BOSS_MAIN -NewName BOSS_1
Import-VM -Path $ImportPath -copy  -VhdDestinationPath $BOSSFolder\BOSS_2\hdd -GenerateNewId -SnapshotFilePath $BOSSFolder\BOSS_2\Snapshots -VirtualMachinePath  $BOSSFolder\BOSS_2
Rename-VM BOSS_MAIN -NewName BOSS_2
Он ругается так(не понимает команды):
Код: Выделить весь код
PS D:\> .\ps1
Stop-VM : Не удается найти параметр, соответствующий имени параметра "TurnOff".
D:\ps1.ps1:5 знак:24
+ Stop-VM BOSS_1 -TurnOff <<<<
    + CategoryInfo          : InvalidArgument: (:) [Stop-VM], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Stop-VM

Stop-VM : Не удается найти параметр, соответствующий имени параметра "TurnOff".
D:\ps1.ps1:6 знак:24
+ Stop-VM BOSS_2 -TurnOff <<<<
    + CategoryInfo          : InvalidArgument: (:) [Stop-VM], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Stop-VM

Import-VM : Не удается найти параметр, соответствующий имени параметра "copy".
D:\ps1.ps1:11 знак:35
+ Import-VM -Path $ImportPath  -copy <<<<   -VhdDestinationPath $BOSSFolder\BOSS_MAIN\hdd -Gene
rateNewId -SnapshotFilePath $BOSSFolder\BOSS_MAIN\Snapshots -VirtualMachinePath  $BOSSFolder\BO
SS_MAIN
    + CategoryInfo          : InvalidArgument: (:) [Import-VM], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Import-VM

Import-VM : Не удается найти параметр, соответствующий имени параметра "copy".
D:\ps1.ps1:12 знак:35
+ Import-VM -Path $ImportPath  -copy <<<<   -VhdDestinationPath $BOSSFolder\BOSS_1\hdd -Generat
eNewId -SnapshotFilePath $BOSSFolder\BOSS_1\Snapshots -VirtualMachinePath  $BOSSFolder\BOSS_1
    + CategoryInfo          : InvalidArgument: (:) [Import-VM], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Import-VM

Имя "Rename-VM" не распознано как имя командлета, функции, файла скрипта или выполняемой програ
ммы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего по
вторите попытку.
D:\ps1.ps1:13 знак:10
+ Rename-VM <<<<  BOSS_MAIN -NewName BOSS_1
    + CategoryInfo          : ObjectNotFound: (Rename-VM:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Import-VM : Не удается найти параметр, соответствующий имени параметра "copy".
D:\ps1.ps1:14 знак:34
+ Import-VM -Path $ImportPath -copy <<<<   -VhdDestinationPath $BOSSFolder\BOSS_2\hdd -Generate
NewId -SnapshotFilePath $BOSSFolder\BOSS_2\Snapshots -VirtualMachinePath  $BOSSFolder\BOSS_2
    + CategoryInfo          : InvalidArgument: (:) [Import-VM], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Import-VM

Имя "Rename-VM" не распознано как имя командлета, функции, файла скрипта или выполняемой програ
ммы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего по
вторите попытку.
D:\ps1.ps1:15 знак:10
+ Rename-VM <<<<  BOSS_MAIN -NewName BOSS_2
    + CategoryInfo          : ObjectNotFound: (Rename-VM:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Отправлено: 11:19, 28-12-2013 | #14


Старожил


Сообщения: 280
Благодарности: 72

Профиль | Отправить PM | Цитировать


Цитата Mishanya3624:
Он ругается так(не понимает команды): »


Какая версия Hyper-V и PS.
Я пробовал на Windows 8 и Windows Hyper-V Server 2012 R2

читать дальше »

Код: Выделить весь код
PS C:\Windows\system32>>>>> $PSVersionTable
 
Name                           Value                                                                        
----                           -----                                                                        
PSVersion                      3.0                                                                          
WSManStackVersion              3.0                                                                          
SerializationVersion           1.1.0.1                                                                      
CLRVersion                     4.0.30319.18051                                                              
BuildVersion                   6.2.9200.16628                                                               
PSCompatibleVersions           {1.0, 2.0, 3.0}                                                              
PSRemotingProtocolVersion      2.2



Цитата Mishanya3624:
То есть получается, что BOSS_MAIN удаляется? А если мне необходимо, чтобы она всегда была, мне надо будет помимо BOSS_1 и BOSS_2 также еще и импортировать ее же в BOSS_MAIN? »


А зачем чтобы она была постоянно?

Ну можно и постоянно.

Отправлено: 23:25, 28-12-2013 | #15


Пользователь


Сообщения: 70
Благодарности: 2

Профиль | Отправить PM | Цитировать


Все из-под WinServer 2008R2
Постоянно, чтобы каждый раз было с чего копировать, то есть на BOSS_MAIN будет стоят настроенная винда, а BOSS_1 BOSS_2 это будут ПК тестестировщиков и вот, когда они убьют ее, то по нажатию кнопки их машины удалятся и создадутся заново с BOSS_MAIN и снова тестить пока опять не убьют систему.

Отправлено: 08:51, 30-12-2013 | #16


Старожил


Сообщения: 280
Благодарности: 72

Профиль | Отправить PM | Цитировать


Цитата Mishanya3624:
Все из-под WinServer 2008R2 »
К сожалению нет Win2008R2 чтобы проверить. Но у меня отрабатывает норм все.

Цитата Mishanya3624:
Постоянно, чтобы каждый раз было с чего копировать, то есть на BOSS_MAIN будет стоят настроенная винда »
Ну да настроил машину экспортнул ее. все дальше виртуалка тебе эта не нужна удаляешь ее. а копии он уже будет из импортированной папки делать. Единственное что, это если надо шаблон перенастроить, то надо будет опять импортировать ее перенастроить и заново экспортировать. Более долгий процесс.

Последний раз редактировалось Molchune, 30-12-2013 в 10:29.


Отправлено: 10:18, 30-12-2013 | #17


Пользователь


Сообщения: 70
Благодарности: 2

Профиль | Отправить PM | Цитировать


Ок, попробую поднять на виртуалке 2012R2 и там попробовать.

Отправлено: 10:24, 30-12-2013 | #18



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Задача c клонированием VM.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Задача bangybam Программирование и базы данных 1 09-12-2012 14:47
C/C++ - C++ Задача SanchezArz Программирование и базы данных 5 20-11-2010 18:12
C/C++ - Задача svdanik Программирование и базы данных 8 04-10-2010 00:41
Задача С++ papam Программирование и базы данных 1 28-11-2005 11:34
Проблема с клонированием w2k!!!! J Fox Microsoft Windows NT/2000/2003 7 17-03-2003 15:58




 
Переход