将以下文件存储为 *.ps1
#在使用时应使用VMware PowerCLI (32-Bit)
$vc='96.12.92.4' #vc地址
Connect-VIServer -Server $vc -username "administrator@vsphere.local" -Password "Rayking@123" #vc用户名&密码
$vmhost="96.12.87.66" #指定主机
$namestart="test" #虚拟机test名称
$template="CentOS_7.7_X64_scanned" #使用模板
$datastore="vsanDatastore_Desktop" #使用存储
$custsysprep = Get-OSCustomizationSpec linux #自定义规范,需要现在vc中配置,vsphere6.5 策略和配置文件>自定义规范管理器>创建新规范
$network="96.12.101.*" #指定使用的端口组,写端口组名称
#$ipstart="96.12.101." #可以指定ip的开始地址,不过我不太会用
$endipscope=1..1 #可以指定虚拟机的数量,例如:1..2就是建两台虚拟机
foreach($endip in $endipscope)
{
#$ip=$ipstart+$endip
$name=$namestart+$endip #虚拟机名
#$custsysprep|Set-OScustomizationSpec -NamingScheme fixed -NamingPrefix $name
#$custsysprep|Get-OSCustomizationNicMapping|Set-OSCustomizationNicMapping -IpMode UseStaticIP -IpAddress $ip -SubnetMask 255.255.255.0 -Dns 96.12.24.2 -DefaultGateway 96.12.101.254
New-VM -Name $name -VMHost $vmhost -Portgroup $network -Datastore $datastore -Template $template -OSCustomizationSpec $custsysprep
}
#之前在网络选择是使用的是-NetworkName选项,这个选项已经不再被支持。会触发警告: Specifying a distributed port group name as network name is no longer supported. Use the -Portgroup parameter.
扩展阅读:参数说明
名称 | 类型 | 描述 | 必填 | 管道输入 | 缺省值 |
---|---|---|---|---|---|
VMHost | VMHost | 指定要在其中创建新虚拟机的主机。 | FALSE | true (ByValue) | |
Template | Template | 指定要用于创建新虚拟机的虚拟机模板。通过管道传递到此参数的值将被弃用,并将在将来的版本中禁用。 | TRUE | true (ByValue) | |
AdvancedOption | AdvancedOption[] | 指定用于创建虚拟机的高级选项。仅接受 SdrsVMDisityruityruityruityrule 和 SdrsVMAntiaffinityruityrule 对象。 SdrsVMDiskAntiaffinity 规则定义了存储 DRS 在 VM 内的反关联规则(vm 磁盘反关联规则)。它仅适用于在数据存储群集上创建虚拟机或硬盘。通过调用对象的构造函数创建对象的实例。有两个构造函数 - “公共 SdrsVMDiskAntiaffinityRule(参数字符串+ 磁盘标识器)”和”公共 SdrsVDiskAntiaffinityRule(param 硬Disk+ 磁盘)”。对于第一个构造函数,”磁盘标识器”可以是磁盘密钥,也可以是磁盘阵列中的磁盘索引。指定的磁盘(以及应用规则的磁盘)放置在数据存储群集上的反关联规则中。每个虚拟机仅支持一个此类规则。您可以将实例传递给新 VM 或新硬磁盘 cmdlet 的高级选项参数。 SdrsVMAntiaffinity 规则定义了存储 DRS VM 间反关联规则。它仅适用于在数据存储群集上创建虚拟机时。通过调用对象的构造函数创建对象的实例。构造函数有一个参数 - 虚拟机数组 - “公共 SdrsVMAntiaffinityRule(param 虚拟机器\ vm)”。然后,您可以将实例传递给 New-VM cmdlet 的高级选项参数。这会将新虚拟机和构造函数中指定的虚拟机放在数据存储群集上的 VM 间反关联规则中。 SDRS 功能是实验性 的。 |
FALSE | FALSE | |
AlternateGuestName | String | 指定新虚拟机的完整操作系统名称。如果 GuestID 参数设置为其他来宾或其他来宾 64,请使用此参数。 | FALSE | FALSE | |
CD | SwitchParameter | 指示要向新虚拟机添加 CD 驱动器。 | FALSE | FALSE | |
Confirm | SwitchParameter | 如果该值$true,则表示 cmdlet 在运行前请求确认。如果该值$false,cmdlet 将运行而不请求用户确认。 | FALSE | FALSE | $true |
Datastore | StorageResource | 指定要放置新虚拟机的数据存储区。如果将数据存储 Cluster 传递给数据存储参数,则虚拟机将置于自动 SDRS 模式下的数据存储 Cluster 中,并且具有启用的 VM 内部关联规则(除非指定了另一个规则)。通过将 SdrsVMDiskAntiffinity 规则或 SdrsVMAntiffinity 规则对象传递到高级选项参数,可以在数据存储 Cluster 中创建虚拟机时指定 SDRS 规则。这两个规则是相互排斥的。 | FALSE | FALSE | |
DiskGB | Decimal[] | 指定要创建并添加到新虚拟机的磁盘的大小(以 GB 为单位)。 | FALSE | FALSE | |
DiskMB | Int64[] | 此参数已过时。请改为使用磁盘 GB。 指定要创建并添加到新虚拟机的磁盘的大小(MB)。 |
FALSE | FALSE | 4096 |
DiskPath | String[] | 指定要添加到新虚拟机的虚拟磁盘的路径。 | FALSE | FALSE | |
DiskStorageFormat | VirtualDiskStorageFormat | 指定虚拟机磁盘的存储格式。此参数接受”精简”、”厚”和”渴望零零”值。 | FALSE | FALSE | |
DrsAutomationLevel | DrsAutomationLevel | 指定 DRS(分布式资源调度程序)自动化级别。有效值为”完全自动”、手动值、部分自动值、”指定”和”禁用”。通过管道传递到此参数的值将被弃用,并将在将来的版本中禁用。只有在虚拟机位于群集内时,才支持指定此参数。否则,将生成错误。 | FALSE | FALSE | |
Floppy | SwitchParameter | 指示要向新虚拟机添加软盘驱动器。 | FALSE | FALSE | |
GuestId | String | 指定新虚拟机的来宾操作系统。特定 ESX 版本的有效值列在 http://www.vmware.com/support/developer/vc-sdk/ 提供的 vSphere API 参考中的虚拟机器识别器枚举类型的说明中。根据主机的硬件配置,某些来宾操作系统可能不适用。 | FALSE | FALSE | |
HAIsolationResponse | HAIsolationResponse | 指示如果主机确定虚拟机与计算资源的其余部分隔离,是否应关闭虚拟机的电源。可用值为”通过群集”、”电源关闭”和”无”指定。通过管道传递到此参数的值将被弃用,并将在将来的版本中禁用。只有在虚拟机位于群集内时,才支持指定此参数。否则,将生成错误。 | FALSE | FALSE | |
HARestartPriority | HARestartPriority | 指定新虚拟机的 HA 重新启动优先级。有效值为”禁用”、”低”、”中”、高值和群集更新性。VMware HA 是一种功能,可检测失败的虚拟机,并在备用 ESX 主机上自动重新启动虚拟机。通过管道传递到此参数的值将被弃用,并将在将来的版本中禁用。指定此参数仅在虚拟机位于群集内时才受支持。否则,将生成错误。 | FALSE | FALSE | |
LinkedClone | SwitchParameter | 指示要创建链接克隆。设置 LinkedClone 参数时,参考快照参数将成为必填项。 | FALSE | FALSE | |
Location | Folder | 指定要放置新虚拟机的文件夹。 | FALSE | FALSE | |
MemoryGB | Decimal | 指定新虚拟机的内存大小(以 GB 为单位)。 | FALSE | FALSE | |
MemoryMB | Int64 | 此参数已过时。请改为使用内存 GB。 | FALSE | FALSE | 256 |
指定新虚拟机的内存大小(以兆字节 (MB) 为单位。 | |||||
Name | String | 指定新虚拟机的名称。如果要注册或克隆现有虚拟机,则此参数不是必填项。 | TRUE | FALSE | |
NetworkName | String[] | 指定要连接到新虚拟机的网络。指定分布式端口组名称已过时。请改为使用 Portgroup 参数。 | FALSE | FALSE | |
Notes | String | 提供新虚拟机的说明。此参数的别名为”描述”。 | FALSE | FALSE | |
NumCpu | Int32 | 指定新虚拟机的虚拟 CPU 数。 | FALSE | FALSE | 1 |
OSCustomizationSpec | OSCustomizationSpec | 指定要应用于新虚拟机的自定义规范。这仅适用于 32 位模式。 | FALSE | FALSE | |
Portgroup | VirtualPortGroupBase[] | 指定要将虚拟机连接到的标准或分布式端口组。对于每个指定的端口组,将创建一个新的网络适配器。 | FALSE | FALSE | |
ReferenceSnapshot | Snapshot | 指定要创建链接克隆的源快照。设置 LinkedClone 参数时,参考快照参数将成为必填项。 | FALSE | FALSE | |
ResourcePool | VIContainer | 指定要放置新虚拟机的位置。参数接受 VMHost、群集、资源池和 VApp 对象。如果未指定值,则虚拟机将添加到其主机的资源池中。 | FALSE | true (ByValue) | |
RunAsync | SwitchParameter | 指示命令立即返回,无需等待任务完成。在此模式下,cmdlet 的输出是任务对象。有关 RunAsync 参数的信息,请运行 vSphere PowerCLI About_RunAsync”帮助”。 | FALSE | FALSE | |
Server | VIServer[] | 指定要在 cmdlet 上运行 cmdlet 的 vCenter Server 实例。如果未将值传递给此参数,该命令将运行在默认服务器上。有关默认服务器的信息,请参阅 Connect-VIServer 的说明。 | FALSE | FALSE | |
VApp | VApp | 此参数已弃用。请改为使用 ResourcePool 参数。 | FALSE | true (ByValue) | |
指定要创建新虚拟机的 vApp。 | |||||
Version | VMVersion | 指定新虚拟机的版本。有效值为 v4、v7 和 v8。默认情况下,使用可用版本创建新虚拟机。 | FALSE | FALSE | |
VM | VirtualMachine[] | 指定要克隆的虚拟机。 | TRUE | true (ByValue) | |
VMFilePath | String | 指定要注册的虚拟机的路径。 | TRUE | FALSE | |
VMSwapfilePolicy | VMSwapfilePolicy | 指定交换文件放置策略。以下值有效:InHostDataStore - 将交换文件存储到虚拟机主机的 VMSwapfileDatastoreID 属性指定的数据存储中。如果未设置 VMSwapfile 数据存储 ID 属性或指示可用空间不足的数据存储,则交换文件将存储在与虚拟机相同的目录中。此设置可能会降低 VMotion 性能。 WithVM - 将交换文件存储在同一目录中。 |
FALSE | FALSE | |
WhatIf | SwitchParameter | 指示 cmdlet 运行时仅显示要所做的更改,实际上没有修改任何对象。 | FALSE | FALSE | |
Return Type |
[1]VMware PowerCLI5.1在线手册 https://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.powercli.cmdletref.doc%2FSet-OSCustomizationSpec.html
[2]安装PowerCLI https://docs.vmware.com/cn/VMware-vSphere/6.5/com.vmware.vsphere.install.doc/GUID-F02D0C2D-B226-4908-9E5C-2E783D41FE2D.html
[3]PowerCLI各版本下载 https://code.vmware.com/web/tool/12.0.0/vmware-powercli