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

为简化实验环境中Hyper-V虚拟机的网络配置过程,博主编写了一款Shell脚本,该脚本能够自动查找并匹配待导入虚拟机的网络设置,实现虚拟机网络的快速导入与配置。

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


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

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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$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
       }
}









本文转自 翟老猫 51CTO博客,原文链接:http://blog.51cto.com/3387405/1586496,如需转载请自行联系原作者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值