将以下文件存储为 *.ps1

  1. #在使用时应使用VMware PowerCLI (32-Bit)
  2. $vc='96.12.92.4' #vc地址
  3. Connect-VIServer -Server $vc -username "administrator@vsphere.local" -Password "Rayking@123" #vc用户名&密码
  4. $vmhost="96.12.87.66" #指定主机
  5. $namestart="test" #虚拟机test名称
  6. $template="CentOS_7.7_X64_scanned" #使用模板
  7. $datastore="vsanDatastore_Desktop" #使用存储
  8. $custsysprep = Get-OSCustomizationSpec linux #自定义规范,需要现在vc中配置,vsphere6.5 策略和配置文件>自定义规范管理器>创建新规范
  9. $network="96.12.101.*" #指定使用的端口组,写端口组名称
  10. #$ipstart="96.12.101." #可以指定ip的开始地址,不过我不太会用
  11. $endipscope=1..1 #可以指定虚拟机的数量,例如:1..2就是建两台虚拟机
  12. foreach($endip in $endipscope)
  13. {
  14. #$ip=$ipstart+$endip
  15. $name=$namestart+$endip #虚拟机名
  16. #$custsysprep|Set-OScustomizationSpec -NamingScheme fixed -NamingPrefix $name
  17. #$custsysprep|Get-OSCustomizationNicMapping|Set-OSCustomizationNicMapping -IpMode UseStaticIP -IpAddress $ip -SubnetMask 255.255.255.0 -Dns 96.12.24.2 -DefaultGateway 96.12.101.254
  18. New-VM -Name $name -VMHost $vmhost -Portgroup $network -Datastore $datastore -Template $template -OSCustomizationSpec $custsysprep
  19. }
  20. #之前在网络选择是使用的是-NetworkName选项,这个选项已经不再被支持。会触发警告: Specifying a distributed port group name as network name is no longer supported. Use the -Portgroup parameter.

VMwarePowerCLI65.zip


扩展阅读:参数说明

名称 类型 描述 必填 管道输入 缺省值
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

[4] vmware-powercli-115-user-guide.pdf