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

上一篇,我们大概了解到了如何用PowerShell脚本(以下简称PS或PS脚本)创建一台虚拟机,以及自定义虚拟机相关的配置,这一篇,我们一起探讨一下如何实现批量创建虚拟机。

批量创建,顾名思义,就是让脚本运行一次,创建多台虚拟机,最简单的实现方法呢,就是循环,下面我们一起来看一段代码:

for($i=1;$i -le10;$i++)
{
$i
}

这是PS脚本中最简单的循环之一,运行之后,效果如下图:

这个PS脚本的意思呢,是从1循环到10,一共10次,每次干的事情呢,就是将变量$i的结果输出到屏幕。

OK,我们再来看一段代码:

for($i=1;$i -le10;$i++)
{
1
}

这段代码与上面的代码基本相似,但是大括号中的内容略有变化,先来看看运行结果:

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

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

  1. 通过循环可以输出多次。(废话?我也觉得。。。)
  2. 通过循环,输出的结果可以是相同的,也可以是不同的。
  3. 循环内部的主体可以与循环变量结合起来,也可以独立于循环变量。

以上几点有什么用呢?第一点,解决了我们主要的问题,批量创建虚拟机;还记得上篇的代码不?加上循环以后,我们再来看看代码:

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十周年快乐!最后,附上我们一起玩耍的照片,哈哈,找找看,我在哪?

时间: 2024-10-08 10:03:47

PowerShell创建虚拟机 (二、实现批量创建)的相关文章

Linx快速创建虚拟机,并在创建时指定其IP地址

一个小脚本,练习环境下大家可以用用:前提在 /var/lib/libvirt/images 目录下有用于创建虚拟机的模板镜像template.img及模板配置文件template.xml, #!/bin/bash#This script will create a virsh-domain named $1.IMG_DIR=/var/lib/libvirt/images#alias ssh="ssh -o StrictHostKeyChecking=no"#UUID=uuidgen#判

windows azure使用powershell创建虚拟机

上篇博文介绍了如何使用powershell控制azure虚拟机的启动和关闭,今天我们介绍下如何使用powershell创建虚拟机 首先,使用powershell登录azure,并查看虚拟机列表 首先,我们需要设定下虚拟机创建的环境 使用get-azuresubscription命令获取订阅名称信息 使用get-azurestorageaccount获取存储账户的名称 我们使用命令set-azuresubscription -subscriptionname "windows azureenter

使用Azure REST API创建虚拟机

使用Azure REST API创建虚拟机 使用REST API创建虚拟机之前,首先要确保Azure订阅中已经建好了"云服务"和"存储账号".如果没有的话,可以使用Azure管理页面,或Powershell命令行工具,或REST API来创建云服务和存储账号. https://msdn.microsoft.com/library/gg441304.aspx https://azure.microsoft.com/zh-cn/documentation/article

windows批量创建用户

一.建立用户的命令行语法: 建立用户:net  user  用户名  密码  /add           (如:net user test 123 /add)  提升权限:net  localgroup 用户权限组 用户名 /add      (如:net localgroup administrator test /add)      删除用户:net  user  用户名 /del         (如:net user test /del) 二.批量创建的方法: 利用EXCEL软件,创建

利用Azure Rest API 创建虚拟机

在此之前,我曾经看过一篇文章讲叙了如何利用Azure power shell team 提供的class library. 而就在这篇文章发布之后不久,我又发现微软发布了一个preview 版本的Windows Azure Management Libraries For .NET Nuget package来帮助.NET 开发人员来更好的控制Auzre Platform. 相比power shell team使用的library, Windows Azure Management Librar

基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:2.搭建环境-2.1创建虚拟机

2.1.           创建虚拟机 2.1.1.          创建虚拟机节点1 图略 2.1.2.          创建虚拟机节点2 操作如节点1.

批量创建用户与批量文件重命名

title: 批量创建用户与批量文件重命名 tags: 批量,用户,创建,重命名 批量创建用户与批量文件重命名 1. 批量创建用户 如果需要批量创建用户,且用户名为stu01-stu10,用户密码为随机的10位密码. 1.1 分析解答 如果用户名为stu01的话,我们可以采用for循环,直接变量范围为01-10,密码随机的话我们可以采用系统默认的随机变量RANDOM,因为默认的RANDOM只有5位数字,因此我们可以给它md5加密,然后取其中的8位字符当做密码.当然我们也可以不用循环,直接使用命令

Linux的发展,创建虚拟机并安装CentOS系统,

第1章 Linux的发展1.1. Linux发展 unix诞生1969年的贝尔实验室. 1986年Andrew S.Tanenbaum(谭邦宁)开发minix(mini unix),主要用于教学. Richhard Stallman(斯托曼)公司:自由软件基金会FSF 项目:葛奴计划GNUGNU=GNU is not unix优秀软件:bash(命令解释器),gawk(三剑客),emacs,gccGPL:通用公共许可a. 开源的免费传播,随意传播b. 随意修改,修改之后必须把修改的内容发出来GN

从现有的虚拟机创建vagrant box ,再利用新创建的box创建虚拟机

本人使用的虚拟机provider是virtualbox,OS是centos7 创建自己的virtualbox前,需要在virtualbox上已经搭建了一个虚拟机.如下为已经搭建好的虚拟机,虚拟机名称为cusbox_vb1 利用已经搭建好的虚拟机就可以创建自己的vagrant box.创建box之前需要先关闭虚拟机. 创建vagrant box vagrant package --base 虚拟机的名字 --output 要创建的box的名字 如:vagrant package --base cu