码迷,mamicode.com
首页 > 其他好文 > 详细

批量导入Hyper-V虚拟机时自动创建虚拟网卡关联虚拟交换机

时间:2014-12-05 01:59:50      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:hyper-v   批量导入   powershell   

每次拿到用于实验活动的虚拟机时,都会配套拿到一份电子文档,里面写明了用于实验环境导入时预先创建Hyper-V虚拟机所需的虚拟网络设置;有些实验类型的虚拟机网络非常繁杂,单独创建太过繁琐,可是不创建虚拟机又无法正常导入Hyper-V的环境,所以作为懒人中的战斗懒,就顺手写了一个脚本,大致就是拿到拿到待导入的虚拟机路径,查找虚拟机配置文件,考虑到多个虚拟网络会有重叠,因此将每个独立虚拟机网路的位置保留下来;最后将这些虚拟机网络与当前环境下的虚拟机网络进行匹配,如果没有则导入。

这里的懒人实在是懒,因此其实对于试验用的虚拟机只需要导入Private内部类型就足够了,我们的实验室虚拟机环境并没有提供外网连接;如果真要再区分内外网,那要考虑的因素就会多很多了!

写Shell也不是本人非常擅长的,不敢说慎用,说仅供参考和测试使用吧!


$VMNetconfig= @()


$CurrentSwitches= (Get-VMSwitch).name

$VMpath="待导入的虚拟机路径"

$VMconfigfiles= (Get-ChildItem-Recurse$VMPath\*.XML|Where-Object {$_.BaseName -match"^[\da-zA-Z]{8}-[\da-zA-Z]{4}-[\da-zA-Z]{4}-[\da-zA-Z]{4}-[\da-zA-Z]{12}$"})

$VMconfigfiles|ForEach {

[xml]$VMconfig =Get-Content$_

$VMNetconfig+=Select-Xml-Xml$VMconfig-XPath"//AltSwitchName"|% {$_.Node.‘#text‘}

}

[System.Collections.Generic.HashSet[string]]$UniqueNetconfig =$VMNetconfig.split("")


foreach ($UniqueNetin$UniqueNetconfig)

{

if ($CurrentSwitches-notcontains"$UniqueNet")

       {

New-VMSwitch-SwitchTypePrivate-Name$UniqueNet-Verbose

       }

}

批量导入Hyper-V虚拟机时自动创建虚拟网卡关联虚拟交换机

标签:hyper-v   批量导入   powershell   

原文地址:http://3387405.blog.51cto.com/3377405/1586496

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!