在Hyper-V群集中,不需要设置VM的自启动,当宿主机意外关机重新启动后,上面的VM会自动转移到另一台主机;如果另一台主机处于关机状态,则宿主机重新启动后,其VM也会自启动(如果其VM在宿主机关机前已处于关机状态,则不会自启动)

# Get-Module -ListAvailable

#导入VMM管理模块
#Import-Module -Name virtualmachinemanager

#定义变量
$VMName = "psvmname"
$VMDescription = "psdescrib1"
$computerName = "pspcname1"
$templateName = "Template_Win08R2_3"
$hostName = "hyperv01.testt.com"

$vmhost = Get-SCVMHost | ? {$_.Name -eq $hostName}
$vmtemplate = Get-SCVMTemplate -VMMServer localhost |? {$_.name -eq $templateName}

#新建虚拟机:阻止动态优化,延迟30S启动,开机自启动,关闭GuestOS
New-SCVirtualMachine -Name $VMName -ComputerName $computerName -VMTemplate $vmtemplate -Description $VMDescription -BlockDynamicOptimization $true -ReturnImmediately -DelayStartSeconds "30" -path "C:\ClusterStorage\Volume1\" -VMHost $vmhost -StartVM -StartAction AlwaysAutoTurnOnVM -StopAction ShutdownGuestOS

-Domain "" -DomainJoinCredential

-Workgroup ""

############################################################

$UserName = "administrator"
#将纯文本字符串“boc.123”转换为安全字符串,并将结果存储在 $Password变量中
$Password = ConvertTo-SecureString "boc.123" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($UserName,$Password)

$cred.password
$cred.username
#Get-WmiObject Win32_OperatingSystem -Credential $cred -Computer 192.168.12.6

############################################################

======================================================

# Get-Module -ListAvailable
#导入VMM管理模块
#Import-Module -Name virtualmachinemanager

#定义变量
$VMName = "psvmname"
$VMDescription = "psdescrib"
$computerName = "pspcname"
$templateName = "Template_Win08R2_2"
$hardwareprofileName = "ConfigFile_Hardware"
$guestosprofileName = "ConfigFile_OS"
$hostName = "hyperv02.testt.com"

$vmhost = Get-SCVMHost | ? {$_.Name -eq $hostName}
$vmtemplate = Get-SCVMTemplate -VMMServer localhost |? {$_.name -eq $templateName}
$vmhwprofile = Get-HardwareProfile -VMMServer localhost | ? {$_.Name -eq $hardwareprofileName}
$vmosprofile = Get-GuestOSProfile -VMMServer localhost | ? {$_.Name -eq $guestosprofileName}
#使用已有的硬件和OS配置文件创建一个新的临时模板
New-SCVMTemplate -Name "Temporary NewTemplate43210" -Template $vmtemplate -HardwareProfile $vmhwprofile -GuestOSProfile $vmosprofile -ComputerName $computerName
$template_New =Get-SCVMTemplate |? {$_.name -eq "Temporary NewTemplate43210"}
#设置虚拟机配置信息
$vmconfig = New-SCVMConfiguration -VMTemplate $template_New
Set-SCVMConfiguration -VMConfiguration $vmconfig -VMHost $vmhost
Update-SCVMConfiguration -VMConfiguration $vmconfig

#新建虚拟机
New-SCVirtualMachine -Name $VMName -VMConfiguration $vmconfig -Description $VMDescription -BlockDynamicOptimization $false -ReturnImmediately -DelayStartSeconds "0" #-JobGroup "32082ef0-f4e5-4346-89a7-94bb7754dc5d"

#删除临时模板
Get-SCVMTemplate | ? {$_.Name -eq "Temporary NewTemplate43210"} |Remove-SCVMTemplate

可参考:http://technet.microsoft.com/en-us/library/jj654339(v=sc.10).aspx

=============================================================

New-VM

#########################################脚本功能########################################
#该脚本用来新建虚机,虚机可运行于不同宿主机上,使用前先编辑vmconfig.csv文件,确定虚机配置
######################################################################################### #定义变量
#定义虚机配置文件名称,该文件与脚本位于相同目录下
$configFileName = "vmconfig.csv"
#定义虚拟交换机名称
$VMSwitchName = "Broadcom NetXtreme Gigabit Ethernet - Virtual Switch" #脚本开始
$CurrentPath = $MyInvocation.MyCommand.Path.substring(0,$MyInvocation.MyCommand.Path.LastIndexOf('\')+1)
$configFilePath = $CurrentPath + $configFileName
$vmconfigs = Import-Csv $configFilePath
foreach ($vmconfig in $vmconfigs)
{
$vmName = $vmconfig.Name
$vmPath = $vmconfig.Path
$vmPath2 = Join-Path $vmconfig.Path $vmName
$vmVHDPath = Join-Path $vmPath2 "Virtual Hard Disks"
New-Item $vmVHDPath -ItemType directory -Force|Out-Null
$OldVHDFile = $vmconfig.OldVHDPath
Copy-Item -Path $OldVHDFile $vmVHDPath
$OldVHDFileName = $OldVHDFile.Split("\")[$OldVHDFile.Split("\").Length-1]
$NewVHDFileName = $vmName + "_" + $OldVHDFileName
Rename-Item "$vmVHDPath\$OldVHDFileName" $NewVHDFileName
$vmVHDFilePath = $vmVHDPath + "\" + $NewVHDFileName
$Phy_ServerName = $vmconfig.Server
$MemorySize = ([int64]$vmconfig.Memory)*1024*1024
If (($NewVHDFileName.Contains("")))
{
New-VM -Name $vmName -ComputerName $Phy_ServerName -MemoryStartupBytes $MemorySize -Path $vmPath -VHDPath $vmVHDFilePath -BootDevice IDE
Remove-VMNetworkAdapter -vmname $vmName -ComputerName $Phy_ServerName
Add-VMNetworkAdapter -IsLegacy $true –VMName $vmname -SwitchName $vmSwitchName -ComputerName $Phy_ServerName
}
Else
{New-VM -Name $vmName -ComputerName $Phy_ServerName -MemoryStartupBytes $MemorySize -Path $vmPath -VHDPath $vmVHDFilePath -BootDevice IDE -SwitchName $VMSwitchName}
If ($vmconfig.VlanID -ne $null)
{Set-VMNetworkAdapterVlan –VMName $vmName -Access –VlanId $vmconfig.VlanID -ComputerName $Phy_ServerName}
Set-VMProcessor -VMName $vmName -Count $vmconfig.CPU -ComputerName $Phy_ServerName
Set-VM -VMName $vmName -AutomaticStartAction StartIfRunning -AutomaticStopAction ShutDown -ComputerName $Phy_ServerName
#Start-VM -VMName $vmName -ComputerName $Phy_ServerName
}

附:vmconfig.csv

Name,CPU,Memory,VlanID,Server,Path,OldVHDPath
VM04,2,2000,101,WHVCS01,C:\ClusterStorage\Volume1,D:\Hyper-V\VHD\Win2008R2.vhdx
VM05,8,8000,102,WHVCS02,C:\ClusterStorage\Volume1,D:\Hyper-V\VHD\Win2003.vhdx

===

将虚机加入到群集
get-vm |Add-VMToCluster

get-vm |select name,isclustered

新建VM_Script的更多相关文章

  1. Atitit s2018.2 s2 doc list on home ntpc.docx  \Atiitt uke制度体系 法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别 讯飞科大 语音云.docx \Atitit 代码托管与虚拟主机.docx \Atitit 企业文化 每日心灵 鸡汤 值班 发布.docx \Atitit 几大研发体系对比 Stage-Gat

    Atitit s2018.2 s2 doc list on home ntpc.docx \Atiitt uke制度体系  法律 法规 规章 条例 国王诏书.docx \Atiitt 手写文字识别   ...

  2. Partition1:新建分区表

    未分区的表,只能存储在一个FileGroup中:对Table进行分区后,每一个分区都存储在一个FileGroup,或分布式存储在不同的FileGroup中.对表进行分区的过程,是将逻辑上完整的一个表, ...

  3. 电脑新建svn仓库

    步骤1:安转svg: 注意事项: 安装的时候选择:Modify 安装到以下图片的步骤时: 黄色区域选择: 步骤2:新建svn仓库文件夹(本教程例子:D:\svn-5gpos),选择文件夹右键,点击下图 ...

  4. Vertica 安装,建库,新建测试用户并授予权限,建表,入库

    测试环境:RHEL 6.4 + Vertica 6.1.3-7 需求:搭建Vertica数据库3节点的测试环境,建立测试用户,建表,测试数据入库. 1.各节点关闭防火墙和SELinux,配置主机名,I ...

  5. Intellij Idea 15 下新建 Hibernate 项目以及如何添加配置

    1.说明:Idea 下,项目对应于 Eclipse 下的 workspace,Module 对应于 Eclipse 下的项目.Idea 下,新添加的项目既可以单独作为一个 Project,也可以作为一 ...

  6. xcode7.1新建项目等问题

    一.LaunchImage不显示 解决办法: 1.在Assets.xcassets新建LaunchImage并加入不同屏幕的launchImage 2.点击项目名,点击TARGETS,选择Genera ...

  7. C# 复制指定节点的所有子孙节点到新建的节点下

    XML结构: 新建一个mask_list节点,一个procedure节点,将上面的mask_list和procedure节点的所有子孙节点添加到新建的mask_list和procedure节点 Xml ...

  8. 【Oracle基本操作1】 数据库的新建删除

    一.新建数据库 1.新建数据库. 1.1打开 Database Configuration Assistant  : 1.2选择新建数据库,下一步,选第一个"一般用途或事物处理": ...

  9. 每次新建项目出现appcompat_v7 解决方法

    ADT升级版本后每次新建项目出现appcompat_v7 , 解决方案如下 问题生成:

随机推荐

  1. Windows服务调用Quartz.net 实现消息调度

    Quartz.NET是一个开源的作业调度框架,是OpenSymphony 的 Quartz API的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性而不牺牲 ...

  2. B-树和B+树

    B-树和B+树是一种平衡的多路查找树,它在文件系统中很有用.一颗m阶的b-树,或为空树,或满足下列特性的m叉树.1)树中每个节点至多有m棵子树2)若根结点不是叶子结点,则至少有两棵子树.3)除根之外的 ...

  3. yii 操作session和cookie

    一,在Yii中使用session 1,CHttpSession 与原生态php5的session使用差别是,php5使用session_start();$_session['key'] = $valu ...

  4. java Comparable 比较器的使用

    /** * */ package com.mindreader; import java.util.Arrays; /** * @作者 Mind reader * @内容 对象数组排序——Compar ...

  5. ListView蛮好用

    知识点如下: 1. ListView的基本用法 2. ArrayAdapter和SimpleAdapter的用法 3. OnScrollListener 和 OnItemClickListener 4 ...

  6. Hadoop 2 初探

    Hadoop 2.6.0的安装略复杂,在一台既有Hadoop 1又有Hadoop 2的server上,要设置好环境变量,必要时候echo $HADOOP_HOME一下看运行的是哪个版本. Master ...

  7. linux库文件编写入门(笔记)

    linux库文件的编写 作者: laomai地址: http://blog.csdn.net/laomai 本文主要参考了如下资料⑴hcj写的"Linux静态/动态链接库的创建和使用&quo ...

  8. (转)Java关键字final、static使用总结

    一.final  根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效率. fin ...

  9. [cocos2d-js]按钮整合成大图后打APK后不显示

    网页版本都能正常显示碎图和整合成大图的 手机版本不正常 var btnKick = cc.MenuItemImage.create( "#btn_kick.png", " ...

  10. python 字符串,数组,元祖操作基础巩固。

    由于上个星期有点忙,没时间来抽空记一些有用的东西.丢了比较久的python很多忘记的小操作我也会重新捡起来 以前最容易搞混的 str.split() #操作会生成一个数组对象.example:'lap ...