设为首页 收藏本站
查看: 1209|回复: 0

PowerShell创建虚拟机 (二、实现批量创建)

[复制链接]

尚未签到

发表于 2018-9-2 11:16:51 | 显示全部楼层 |阅读模式
  上一篇,我们大概了解到了如何用PowerShell脚本(以下简称PS或PS脚本)创建一台虚拟机,以及自定义虚拟机相关的配置,这一篇,我们一起探讨一下如何实现批量创建虚拟机。
  批量创建,顾名思义,就是让脚本运行一次,创建多台虚拟机,最简单的实现方法呢,就是循环,下面我们一起来看一段代码:
for($i=1;$i -le10;$i++)  
{
  
$i
  
}
  这是PS脚本中最简单的循环之一,运行之后,效果如下图:
DSC0000.jpg

  这个PS脚本的意思呢,是从1循环到10,一共10次,每次干的事情呢,就是将变量$i的结果输出到屏幕。
  OK,我们再来看一段代码:
for($i=1;$i -le10;$i++)  
{
  
1
  
}
  这段代码与上面的代码基本相似,但是大括号中的内容略有变化,先来看看运行结果:
DSC0001.jpg

  这段代码意思与刚才的相同,只是输出的结果不同而已,这段代码是输出了10个1。OK,肯定有人想问,不就一个循环,用得着截图两遍?粘贴两段代码?其实,我觉得这是必要的,因为对于做运维的我们来说,编程是个门槛,我相信大部分做运维的朋友对代码不是很熟,可能只是会一些简单的脚本(各大神、大牛除外啊~各位大大莫笑~),所以我个人觉得呢,从最简单的对比,更能看出差异化。
DSC0002.jpg DSC0003.jpg

  OK,上面两个脚本虽然只有一行不同,但输出结果的差异却不止一处。上面两段代码说明了以下几点:

  •   通过循环可以输出多次。(废话?我也觉得。。。)
  •   通过循环,输出的结果可以是相同的,也可以是不同的。
  •   循环内部的主体可以与循环变量结合起来,也可以独立于循环变量。
  以上几点有什么用呢?第一点,解决了我们主要的问题,批量创建虚拟机;还记得上篇的代码不?加上循环以后,我们再来看看代码:
for($i=1;$i -le10;$i++)  
{
  
#输入部分:
  
$vhdpath_new= read-host("请输入模板路径【包括文件名和后缀】")
  
$NewVMGeneration= read-host("请输入新建虚拟机的版本号")
  
$NewVMMemoryStartupBytes= read-host("请输入启动内存")
  
$name= read-host("请输入虚拟机名称")
  
$NewVMSwitchName= read-host("请输入虚拟机需要连接网络的名称")
  
$NewVMvCPU= read-host("请输入虚拟机的虚拟CPU数量")
  
#创建部分:
  
New-VM -VHDPath $vhdpath_new -Generation $NewVMGeneration -MemoryStartupBytes $NewVMMemoryStartupBytes  -Name $name -SwitchName $NewVMSwitchName
  
Set-VMProcessor -VMName $name -Count $NewVMvCPU
  
}
  其实这段代码就是将上面第二段代码中的循环体"1"替换成了上篇的代码,最终实现的功能就是将上篇的脚本连续运行10次,手动输入10次之后就可以创建10个虚拟机了!
  运行之后就发现,问题来了!每次都要输入许多重复的内容,其实我们需要的自定义配置就那么点,比如只需要虚拟机名称和硬盘名称不同,其他配置都可以保持相同,那该怎么办呢?So Easy!把输入部分,除了虚拟机名称,其他部分拿出来就是了啊!
#输入部分:  
$vhdpath_new= read-host("请输入模板路径【包括文件名和后缀】")
  
$NewVMGeneration= read-host("请输入新建虚拟机的版本号")
  
$NewVMMemoryStartupBytes= read-host("请输入启动内存")
  
$NewVMSwitchName= read-host("请输入虚拟机需要连接网络的名称")
  
$NewVMvCPU= read-host("请输入虚拟机的虚拟CPU数量")
  
for($i=1;$i -le10;$i++)
  
{
  
#输入部分:
  
$name= read-host("请输入虚拟机名称")
  
#创建部分:
  
New-VM -VHDPath $vhdpath_new -Generation $NewVMGeneration -MemoryStartupBytes $NewVMMemoryStartupBytes  -Name $name -SwitchName $NewVMSwitchName
  
Set-VMProcessor -VMName $name -Count $NewVMvCPU
  
}
  这下大功告成,现在我们的脚本已经能够实现批量创建虚拟机了!到这儿,我们都的脚本核心内容大致完成,但还是用户体验还不是很好,下一个篇章,我们继续探讨,让我们的脚本能够适应不同的环境~
  题外话:今天在南京,我们51cto在南京的小伙伴们在一起玩耍的挺High的,共同参与了51cto的十周年庆典,技术成就梦想,祝51cto十周年快乐!最后,附上我们一起玩耍的照片,哈哈,找找看,我在哪?
DSC0004.jpg

DSC0005.jpg




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-561493-1-1.html 上篇帖子: PowerShell操作DNS创建SRV记录 下篇帖子: 用PowerShell查找域中微软停止支持的Windows Server 2003服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表