在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. memcache保存php的session 解决多服务器的session问题

    PECL :: Package :: memcache 2.1.1 版本的 Changelog 中有一条: - Added experimental session storage support. ...

  2. 1、c#中可以有静态构造方法,而java中没有,例如在单例模式中c#可以直接在静态构造中实例化对象,而java不可以

    1.c#中可以有静态构造方法,而java中没有,例如在单例模式中c#可以直接在静态构造中实例化对象,而java不可以

  3. 经典排序算法(Java版)

    1.冒泡排序 Bubble Sort 最简单的排序方法是冒泡排序方法.这种方法的基本思想是,将待排序的元素看作是竖着排列的“气泡”,较小的元素比较轻,从而要往上浮.在冒泡排序算法中我们要对这个“气泡” ...

  4. 14、NFC技术:使用Android Beam技术传输文本

    Android Beam的基本理念 Android Beam的基本理念就是两部(只能是两部)NFC设备靠近时(一般是背靠背),通过触摸一部NFC设备的屏幕,将数据推向另外一部NFC设备.在传递数据的过 ...

  5. HDU5805 NanoApe Loves Sequence (BestCoder Round #86 B)前后缀预处理

    分析:维护空隙的差,然后预处理前缀最大,后缀最大,扫一遍 #include <cstdio> #include <cstring> #include <cmath> ...

  6. slowhttps安装及使用心得

    运行及安装环境,kali. 到googlecode上下载安装包,cd到安装目录./configure 运行完毕后输入make 结束后make install 简单点就直接apt-get install ...

  7. 在 Asp.NET MVC 中使用 SignalR 实现推送功能

    一,简介Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重新发送请 ...

  8. 使用U盘安装win7系统,遇到“无法定位现有系统分区”问题

    朋友的本子貌似因为安装360wifi而导致一进入系统就蓝屏重启,虽然之后就卸载了360wifi,但是问题依旧,上网Google了一下,发觉网上不少网友诉苦,也有人分析原因,说是因为360wifi导致了 ...

  9. 性能测试-ApacheBench

    基本简介 ApacheBench 是一个指令列程式,专门用来执行网站服务器的运行效能,特别是针对Apache 网站服务器.这原本是用来检测 Apache 网站服务器能够提供的效能,特别是可以看出Apa ...

  10. Python 批量创建同文件名的特定后缀文件

    看了很多批量创建文件和文件批量格式转换的code,感觉杀鸡焉用牛刀,自己写了几行轻量级的拿来给大家参考: 在out_dir目录下批量创建与in_dir目录下同文件名但后缀不同的文件. in_dir = ...