用powercli练练手,需从实际案例出发,本节将使用powercli写两个demo,一个是创建模板,并根据模板创建新的虚机;另一个demo是克隆虚机。


【注意】

  1、创建模板与克隆操作只能在vcenter上使用

  2、powercli是 异步任务,因此需等待一个任务完成后,再去执行下一个任务。(使用 -Runasync 与 -ErrorAction stop 类似于linux中的nohup与&的使用)

一、创建模板并根据模板生成虚机

$task = Stop-VM win -Confirm:$false -ErrorAction Stop -RunAsync        #停止虚机,并放后台
while( $task.state -eq "Running" )                          #使用while循环时刻监控上一任务是否结束
{
$task = Get-Task -ID $task.id
} $task1 = New-Template -VM ( Get-VM win2 ) -Name "tp" -Location "nickdc" -ErrorAction Stop -RunAsync    #根据虚机创建模板
while( $task1.state -eq "Running" )
{
$task1 = Get-Task -ID $task1.id
} #根据模板创建虚机
$task2 = New-VM -Name win3 -Template ( Get-Template tp) -VMHost (Get-VMHost 10.32.2.99) -Datastore (Get-Datastore datastore1) -ResourcePool testpool -ErrorAction Stop -RunAsync
while( $task2.state -eq "Running" )
{
$task2 = Get-Task -ID $task2.id
} Start-vm win3                  #开启虚机

二、克隆虚机

脚本过程:确认虚机名与虚机所在的磁盘--> 连接vcenter-->关闭虚机-->克隆虚机-->开启虚机

$eap = $ErrorActionPreference
Try{
$ErrorActionPreference = 'Stop' # set vm name & clone vm name
$sourcevmname = "abcd"
$clonevmname = "123" # check vm name
$tip1 = Read-Host "make sure source vm name is $sourcevmname , if true , input 'y/Y' "
$tip2 = Read-Host "make sure clone vm name $clonevmname , if true , input 'y/Y'" if ( $tip1 -eq "y|Y" -and $tip2 -eq "y|Y" )
{
echo "please make sure vm name "
exit 1
} #connect vcentr
$vcenterip = "8.8.8.8"
$user = "administrator@vsphere.com"
$passwd = "123456"
Connect-VIServer $vcenterip -User $user -Password $passwd -SaveCredentials
sleep 20 $starttime = date -Format "HH:mm:ss"
echo "start time : $starttime" #shutdown vm
echo (get-vm $sourcevmname).PowerState
if( (get-vm $sourcevmname).PowerState -eq "PoweredOn" )
{
stop-vm $sourcevmname -Confirm:$false
echo "stop vm"
sleep 30
} #clone vm
$myDatastore = Get-Datastore -Name datastore1
$vmhost = Get-VMHost -Name 10.32.2.99
$pool = Get-ResourcePool -Name testpool
echo "start clone vm..."
$task = New-VM -Name $clonevmname -VM $sourcevmname -Datastore $myDatastore -VMHost $vmhost -ResourcePool $pool -RunAsync -ErrorAction Stop
while( $task.state -eq "Running" )
{
$task = Get-Task -ID $task.id
}
echo "clone ok!" sleep 5 #start vm
echo "start vm"
start-vm $clonevmname
echo "everything ok!" $usetime = (New-TimeSpan $starttime ).TotalMinutes
$msg = "clone take {0:n0} minutes" -f $usetime
echo $msg
}
Catch{
Write-Host "error !"
Exit 1
}
Finally{
$ErrorActionPreference = $eap
}

  

使用powercli创建模板与克隆虚机的更多相关文章

  1. vSphere克隆虚机重启网卡报错

    使用VMware vSphere克隆虚机,修改IP重启网卡报错: 解决报错: 修改 /etc/udev/rules.d/70-persistent-net.rules 文件,克隆后会多出eth2和et ...

  2. 克隆虚机网卡出现 Device eth0 does not seem to be present, delaying initialization 错误

    错误原因    克隆的Linux系统在新的机器上运行,新服务器网卡物理地址已经改变.而/etc/udev/rules.d/70-persistent-net.rules这个文件确定了网卡和MAC地址的 ...

  3. 远程管理 KVM 虚机 - 每天5分钟玩转 OpenStack(5)

    上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机.其实 virt-manager 也可以管理其他宿主机上的虚机.只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即 ...

  4. 云与备份之(1):VMware虚机备份和恢复

    本系列文章会介绍云与备份之间的关系,包括: (1)VMware 虚机备份和恢复 (2)KVM 虚机备份和恢复 (3)云与备份 (4)OpenStack 与备份 (5)公有云与备份 1. 与备份有关的V ...

  5. 远程管理 KVM 虚机

    上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机.其实 virt-manager 也可以管理其他宿主机上的虚机.只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即 ...

  6. O005、远程管理 KVM 虚机

    参考https://www.cnblogs.com/CloudMan6/p/5256018.html   上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机,其实 virt ...

  7. Terraform:创建 Azure 虚机

    笔者在前文<Terraform 简介>中简单介绍了 Terraform 相关的概念,本文让我们使用 Terraform 在 Azure 上创建一个虚机,以此来直观体验一下 Terrafor ...

  8. Openstack之Nova创建虚机流程分析

    前言        Openstack作为一个虚拟机管理平台,核心功能自然是虚拟机的生命周期的管理,而负责虚机管理的模块就是Nova. 本文就是openstack中Nova模块的分析,所以本文重点是以 ...

  9. OpenStack 创建虚机过程简要汇总

    1. 总体流程 翻译自原文(英文):https://ilearnstack.com/2013/04/26/request-flow-for-provisioning-instance-in-opens ...

随机推荐

  1. 什么是 MFA?

    Multi-Factor Authentication (MFA) 是一种简单有效的最佳安全实践方法,它能够在用户名和密码之外再额外增加一层安全保护. 启用 MFA 后,用户登录阿里云网站时,系统将要 ...

  2. 几种访问HDFS文件的客户端的总结

    HDFS是英文Hadoop Distributed File System的缩写,中文翻译为Hadoop分布式文件系统,它是实现分布式存储的一个系统,所以分布式存储有的特点,HDFS都会有,HDFS的 ...

  3. Vue——核心思想--mvvm

    Vue的核心思想为数据驱动和组件化. 一.数据驱动——双向绑定 Vue是一种MVVM框架.而DOM是数据的一个种自然映射.传统的模式是通过Ajax请求从model请求数据,然后手动的触发DOM传入数据 ...

  4. 【转】FIddler+Proxifer工具对windows PC客户端进行抓包

    开篇:要想实现写爬虫,抓取到数据,首先我们应该分析客户端和服务器的请求/响应,前提就是我们能监控到客户端是如何与服务器交互的,下面来记录下常见的三种情况下的抓包方法 1.PC端浏览器网页抓包网页板抓包 ...

  5. nave node 的虚拟环境管理工具

    nave 是类似python venv 的node 虚拟环境管理工具 安装 npm install -g nave 简单使用 帮助命令 Usage: nave <cmd> Commands ...

  6. 17-网页,网站,微信公众号基础入门(使用Adobe Dreamweaver CS6 制作网页/网站)

    https://www.cnblogs.com/yangfengwu/p/11351182.html https://www.cnblogs.com/yangfengwu/p/11200767.htm ...

  7. 原生js如何判断元素出现在可视区

    元素出现在可视区 scorll滑动的距离>=当前元素距离浏览器最顶端的高度+当前元素自身的高度-当前可视区的高度 触底 scorll滑动的距离>=当前scroll总高度-当前可视区的高度

  8. 织梦一二级导航菜单被点击顶级栏目高亮(加class)解决方法

    织梦一二级导航菜单被点击的栏目高亮显示方法详解,废话不多说直接举例说明: 织梦一级菜单被点击栏目高亮调用方法: {dede:channel typeid ='1'  type ='son' curre ...

  9. 分析WordPress数据表之分类标签表(功能篇)

    数据表分析 wp_terms(分类标签表) 表字段如下:term_id(分类或标签ID)name(分类或标签名)slug(别名)term_group(分类标签组,我想应该是用于排序分组) wp_ter ...

  10. 使用 Microsoft.Web.Administration 管理iis

    How to Automate IIS 7 Configuration with .NET How to Automate IIS 7 Configuration with .NET Are you ...