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

Компьютерный форум 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 | Цитировать


Немного поправил скрипт:

Код: Выделить весь код
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 F:\VM\export\BOSS_MAIN\export -copystate -wait -force


# Variables
$SRV2 = "BOSS_1"

$SRAM = 512MB

$SRV2VHD = 40GB

$VMLOC = "F:\VM\export\BOSS_1"

$Network2 = "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 $SRV2VHD
add-vmdisk -vm $SRV2 -controllerid 0 -lun 0 -path $VMLoc\$SRV2
get-vm $SRV2 | add-vmdrive -controllerid 1 -lun 0 -dvd
get-vm $SRV2 | set-vmmemory -memory $SRAM
get-vm $SRV2 | add-vmnic -virtualswitch $Network2

$SRV3 = "BOSS_2"

$SRAM = 512MB

$SRV3VHD = 40GB

$VMLOC = "F:\VM\export\BOSS_2"

$Network3 = "Network3"

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

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

Import-VM -vm BOSS_1 -path F:\VM\export\BOSS_MAIN\export -copystate -wait -force
Import-VM -vm BOSS_2 -path F:\VM\export\BOSS_MAIN\export -copystate -wait -force
Собственно он все делает, кроме импорта в этом проблема, ну и в целом, может по коду какие замечания поправки будут?

И еще такой вопрос при остановке и удалении VM он меня спрашивает, точно ли я хочу провести это действие, можно ли как то это обойти, чтобы он сразу останавливал и удалял их без запроса?
Еще вопрос: после того, как он создает заново VM BOSS_1 BOSS_2 , то начинает ругаться при создании VHD мол, что уже такой жесткий существует, это что получается, при удалении VM VHD не удаляется? это надо отдельно прописать, чтобы VHD удалялось после удаления VM?

Последний раз редактировалось Mishanya3624, 06-12-2013 в 15:12.


Отправлено: 09:22, 06-12-2013 | #2



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

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


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


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

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


Если делаю команду на импорт такой :
Код: Выделить весь код
Import-VM -vm BOSS_1 -path 'F:\VM\export\BOSS_MAIN\export\BOSS_MAIN\Virtual Machines\37057F64-D1E1-48FD-80B6-1B28ED948AB2.exp' –Copy -GenerateNewId[/b]
То ругается так:
Import-VM : Не удается найти параметр, соответствующий имени параметра "vm".
D:\ps1.ps1:56 знак:14
+ Import-VM -vm <<<<  BOSS_1 -path 'F:\VM\export\BOSS_MAIN\export\BOSS_MAIN\Virtual Machines\37
057F64-D1E1-48FD-80B6-1B28ED948AB2.exp' -Copy -GenerateNewId
    + CategoryInfo          : InvalidArgument: (:) [Import-VM], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Import-VM
Странно, что он ругается на BOSS_1 ведь я должен указать VM на которую необходимо сделать импорт...

Последний раз редактировалось Mishanya3624, 06-12-2013 в 15:12.


Отправлено: 10:09, 06-12-2013 | #3


Ветеран


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

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


Mishanya3624, код на форуме оформляется тэгом [code].

Отправлено: 13:21, 06-12-2013 | #4


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


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

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


Поправил, жду теперь помощи.
По поводу:
Код: Выделить весь код
И еще такой вопрос при остановке и удалении VM он меня спрашивает, точно ли я хочу провести это действие, можно ли как то это обойти, чтобы он сразу останавливал и удалял их без запроса?
Нашел ответ, но пока еще не доработал до совершенства, перед:
Код: Выделить весь код
Stop-VM -vm BOSS_1
Remove-VM -vm BOSS_1
Stop-VM -vm BOSS_2
Remove-VM -vm BOSS_2
Ставить: echo |Y

Отправлено: 15:22, 06-12-2013 | #5


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


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

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


Ну что никто, никак, ничем не поможет?

Отправлено: 22:14, 08-12-2013 | #6


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


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

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


При записи строки импорта:
Код: Выделить весь код
Import-VM BOSS_1 -path 'F:\VM\export\BOSS_MAIN\export\BOSS_MAIN\Virtual Machines\37057F64-D1E1-48FD-80B6-1B28ED948AB2.exp'
Появляется такая ошибка в PowerShell:
Код: Выделить весь код
Get-WmiObject : Сервер RPC недоступен. (Исключение из HRESULT: 0x800706BA)
C:\Program Files\modules\hyperV\VM.ps1:331 знак:40
+                 $VSMgtSvc=Get-WmiObject <<<<  -ComputerName $server -Namespace $HyperVNamespa
ce -Class "MsVM_virtualSystemManagementService"
    + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], COMException
    + FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCom
   mand

Нельзя вызвать метод для выражения со значением NULL.
C:\Program Files\modules\hyperV\VM.ps1:332 знак:54
+                 $Result=$VSMgtSvc.importVirtualSystem <<<< ($path,(-not $ReuseIDs.Ispresent)
)
    + CategoryInfo          : InvalidOperation: (importVirtualSystem:String) [], RuntimeExcept
   ion
    + FullyQualifiedErrorId : InvokeMethodOnNull

Не удается преобразовать значение NULL в тип "ReturnCode" из-за недопустимых значений перечисле
ния. Укажите одно из следующих значений перечисления и повторите попытку. Возможны следующие зн
ачения перечисления: "OK, JobStarted, Failed, AccessDenied, NotSupported, Unknown, Timeout, Inv
alidParameter, SystemInUse, InvalidStateForOperation, IncorrectDataType, SystemNotAvailable, Ou
tOfMemory, FileNotFound".
C:\Program Files\modules\hyperV\VM.ps1:337 знак:64
+                 else       {Write-Verbose ([ReturnCode]$result. <<<< returnValue)
    + CategoryInfo          : NotSpecified: (:) [], RuntimeException
    + FullyQualifiedErrorId : RuntimeException
Службы RPC и DCOM - сервера запущены...
Что может быть?

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


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


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

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


Разговор с самим собой))

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


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


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

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


Ну неужели никто не работал с VM через Power shell......

Отправлено: 16:13, 26-12-2013 | #9


Старожил


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

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


не совсем понятно. BOSS_MAIN это работающая машина? или держите как шаблон для BOSS_1 И BOSS_2.
По поводу ошибки
Цитата Mishanya3624:
То ругается так:
Import-VM : Не удается найти параметр, соответствующий имени параметра "vm".
D:\ps1.ps1:56 знак:14
+ Import-VM -vm <<<< BOSS_1 -path 'F:\VM\export\BOSS_MAIN\export\BOSS_MAIN\Virtual Machines\37
057F64-D1E1-48FD-80B6-1B28ED948AB2.exp' -Copy -GenerateNewId »
get-help Import-VM -Online
не нашел там параметра '-vm'

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



Компьютерный форум 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




 
Переход