< Back

New-VM

Sun Jan 19, 2020 7:02 pm

NAME New-VM



SYNOPSIS

This cmdlet creates a new virtual machine.





SYNTAX

New-VM [[-VMHost] <VMHost>] [-AdvancedOption <AdvancedOption[]>] [-AlternateGuestName <String>] [-CD]

[-CoresPerSocket <Int32>] [-Datastore <StorageResource>] [-DiskGB <Decimal[]>] [-DiskMB <Int64[]>] [-DiskPath

<String[]>] [-DiskStorageFormat <VirtualDiskStorageFormat>] [-DrsAutomationLevel <DrsAutomationLevel>] [-Floppy]

[-GuestId <String>] [-HAIsolationResponse <HAIsolationResponse>] [-HardwareVersion <String>] [-HARestartPriority

<HARestartPriority>] [-Location <Folder>] [-MemoryGB <Decimal>] [-MemoryMB <Int64>] -Name <String> [-NetworkName

<String[]>] [-Notes <String>] [-NumCpu <Int32>] [-Portgroup <VirtualPortGroupBase[]>] [-ResourcePool

<VIContainer>] [-RunAsync] [-Server <VIServer[]>] [-VApp <VApp>] [-Version <VMVersion>] [-VMSwapfilePolicy

<VMSwapfilePolicy>] [-Confirm] [-WhatIf] [-KmsCluster <KmsCluster>] [-SkipHardDisks] [-StoragePolicy

<StoragePolicy>] [-ReplicationGroup <ReplicationGroup>] [<CommonParameters>]



New-VM [[-VMHost] <VMHost>] [-AdvancedOption <AdvancedOption[]>] [-Datastore <StorageResource>]

[-DiskStorageFormat <VirtualDiskStorageFormat>] [-DrsAutomationLevel <DrsAutomationLevel>] [-HAIsolationResponse

<HAIsolationResponse>] [-HARestartPriority <HARestartPriority>] [-LinkedClone] [-Location <Folder>] [-Name

<String>] [-Notes <String>] [-OSCustomizationSpec <OSCustomizationSpec>] [-ReferenceSnapshot <Snapshot>]

[-ResourcePool <VIContainer>] [-RunAsync] [-Server <VIServer[]>] [-VApp <VApp>] -VM <VirtualMachine[]> [-Confirm]

[-WhatIf] [-StoragePolicy <StoragePolicy>] [-ReplicationGroup <ReplicationGroup>] [-StoragePolicyTarget

<StoragePolicyTargetType>] [<CommonParameters>]



New-VM [[-VMHost] <VMHost>] [-Template] <Template> [-AdvancedOption <AdvancedOption[]>] [-Datastore

<StorageResource>] [-DiskStorageFormat <VirtualDiskStorageFormat>] [-DrsAutomationLevel <DrsAutomationLevel>]

[-HAIsolationResponse <HAIsolationResponse>] [-HARestartPriority <HARestartPriority>] [-Location <Folder>] -Name

<String> [-NetworkName <String[]>] [-Notes <String>] [-OSCustomizationSpec <OSCustomizationSpec>] [-Portgroup

<VirtualPortGroupBase[]>] [-ResourcePool <VIContainer>] [-RunAsync] [-Server <VIServer[]>] [-VApp <VApp>]

[-Confirm] [-WhatIf] [-StoragePolicy <StoragePolicy>] [-ReplicationGroup <ReplicationGroup>] [-StoragePolicyTarget

<StoragePolicyTargetType>] [<CommonParameters>]



New-VM [[-VMHost] <VMHost>] [-ContentLibraryItem] <ContentLibraryItem> [-Datastore <StorageResource>]

[-DiskStorageFormat <VirtualDiskStorageFormat>] [-DrsAutomationLevel <DrsAutomationLevel>] [-HAIsolationResponse

<HAIsolationResponse>] [-HARestartPriority <HARestartPriority>] [-Location <Folder>] [-Name <String>]

[-ResourcePool <VIContainer>] [-RunAsync] [-Server <VIServer[]>] [-Confirm] [-WhatIf] [<CommonParameters>]



New-VM [[-VMHost] <VMHost>] [-DrsAutomationLevel <DrsAutomationLevel>] [-HAIsolationResponse

<HAIsolationResponse>] [-HARestartPriority <HARestartPriority>] [-Location <Folder>] [-Name <String>] [-Notes

<String>] [-ResourcePool <VIContainer>] [-RunAsync] [-Server <VIServer[]>] [-VApp <VApp>] -VMFilePath <String>

[-Confirm] [-WhatIf] [<CommonParameters>]





DESCRIPTION

This cmdlet creates a new virtual machine with the provided parameters. The network adapter and the Small Computer

System Interface (SCSI) adapter of the new virtual machine are created of the recommended type for the Operating

System (OS) that is specified by the GuestId parameter. If the OSCustomizationSpec parameter is used, the

virtual machine is customized according to the specification. You must specify values for at least one of the

ResourcePool, VMHost, and VApp parameters.





PARAMETERS

-AdvancedOption <AdvancedOption[]>

Specifies advanced options for creating virtual machines. Accepts only SdrsVMDiskAntiAffinityRule and

SdrsVMAntiAffinityRule objects.



The SdrsVMDiskAntiAffinityRule defines a Storage DRS intra-VM anti-affinity rule (vm disk anti-affinity rule).

It is only applicable when creating a virtual machine or hard disk on a datastore cluster. An instance of the

object is created by invoking its constructor. There are two constructors - "public

SdrsVMDiskAntiAffinityRule(param string[] diskIdentifier)" and "public SdrsVMDiskAntiAffinityRule(param

HardDisk[] disk)". For the first constructor, "diskIdentifier" can be either the disk key or the index of the

disk in the disk array. The specified disks (and the disk to which the rule is applied) are placed in an

anti-affinity rule on a DatastoreCluster. Only one such rule is supported per a virtual machine. You can pass

the instance to the AdvancedOption parameter of the New-VM or New-HardDisk cmdlets.



The SdrsVMAntiAffinityRule defines a Storage DRS inter-VM anti-affinity rule. It is only applicable when

creating a virtual machine on a DatastoreCluster. An instance of the object is created by invoking its

constructor. The constructor has one parameter - an array of virtual machines - "public

SdrsVMAntiAffinityRule(param VirtualMachine[] vm)". Then, you can pass the instance to the AdvancedOption

parameter of the New-VM cmdlet. This will place the new virtual machine and the virtual machines specified in

the constructor in an inter-VM anti-affinity rule on a DatastoreCluster.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-AlternateGuestName <String>

Specifies the full OS name of the new virtual machine. Use this parameter if the GuestID parameter is set to

otherGuest or otherGuest64.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-CD [<SwitchParameter>]

Indicates that you want to add a CD drive to the new virtual machine.



Required? false

Position? named

Default value False

Accept pipeline input? False

Accept wildcard characters? false



-ContentLibraryItem <ContentLibraryItem>

Specifies the content library template to deploy the virtual machine from.



Required? true

Position? 2

Default value None

Accept pipeline input? True (ByValue)

Accept wildcard characters? false



-CoresPerSocket <Int32>

Specifies the number of virtual CPU cores per socket.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-Datastore <StorageResource>

Specifies the datastore where you want to place the new virtual machine. If a DatastoreCluster is passed to

the Datastore parameter, the virtual machine is placed in the DatastoreCluster in an automated SDRS mode and

with enabled intra-VM affinity rule (unless another rule is specified). You can specify a SDRS rule when

creating the virtual machine in a DatastoreCluster by passing either a SdrsVMDiskAntiAffinityRule or

SdrsVMAntiAffinityRule objects to the AdvancedOption parameter. These two rules are mutually exclusive.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? true



-DiskGB <Decimal[]>

Specifies the size in gigabytes (GB) of the disks that you want to create and add to the new virtual machine.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-DiskMB <Int64[]>

This parameter is obsolete. Use DiskGB instead. Specifies the size in megabytes (MB) of the disks that you

want to create and add to the new virtual machine.



Required? false

Position? named

Default value 4096

Accept pipeline input? False

Accept wildcard characters? false



-DiskPath <String[]>

Specifies paths to virtual disks that you want to add to the new virtual machine.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-DiskStorageFormat <VirtualDiskStorageFormat>

Specifies the storage format of the disks of the virtual machine. This parameter accepts Thin, Thick, and

EagerZeroedThick values.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-DrsAutomationLevel <DrsAutomationLevel>

Specifies a DRS (Distributed Resource Scheduler) automation level. The valid values are FullyAutomated,

Manual, PartiallyAutomated, AsSpecifiedByCluster, and Disabled. Passing values to this parameter through a

pipeline is deprecated and will be disabled in a future release. Specifying this parameter is only supported

when the virtual machine is inside a cluster. Otherwise, an error is generated.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-Floppy [<SwitchParameter>]

Indicates that you want to add a floppy drive to the new virtual machine.



Required? false

Position? named

Default value False

Accept pipeline input? False

Accept wildcard characters? false



-GuestId <String>

Specifies the guest operating system of the new virtual machine. The valid values for specific ESX versions

are listed in the description of the VirtualMachineGuestOsIdentifier enumeration type in the vSphere API

Reference available at http://www.vmware.com/support/developer/vc-sdk/. Depending on the hardware

configuration of the host, some of the guest operating systems might be inapplicable.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-HAIsolationResponse <HAIsolationResponse>

Indicates whether the virtual machine should be powered off if a host determines that it is isolated from the

rest of the compute resource. The available values are AsSpecifiedByCluster, PowerOff, and DoNothing. Passing

values to this parameter through a pipeline is deprecated and will be disabled in a future release. Specifying

this parameter is only supported when the virtual machine is inside a cluster. Otherwise, an error is

generated.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-HardwareVersion <String>

Specifies the version of the new virtual machine. By default, the new virtual machine is created with the

latest available version.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-HARestartPriority <HARestartPriority>

Specifies the HA restart priority of the new virtual machine. The valid values are Disabled, Low, Medium,

High, and ClusterRestartPriority. VMware High Availability (HA) is a feature that detects failed virtual

machines and automatically restarts them on alternative ESX hosts. Passing values to this parameter through a

pipeline is deprecated and will be disabled in a future release. Specifiesing this parameter is only supported

when the virtual machine is inside a cluster. Otherwise, an error is generated.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-LinkedClone [<SwitchParameter>]

Indicates that you want to create a linked clone. When you set the LinkedClone parameter, the

ReferenceSnapshot parameter becomes mandatory.



Required? false

Position? named

Default value False

Accept pipeline input? False

Accept wildcard characters? false



-Location <Folder>

Specifies the folder where you want to place the new virtual machine.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? true



-MemoryGB <Decimal>

Specifies the memory size in gigabytes (GB) of the new virtual machine.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-MemoryMB <Int64>

This parameter is obsolete. Use MemoryGB instead. Specifies the memory size in megabytes (MB) of the new

virtual machine.



Required? false

Position? named

Default value 256

Accept pipeline input? False

Accept wildcard characters? false



-Name <String>

Specifies a name for the new virtual machine. If you are registering or cloning an existing virtual machine,

this parameter is not mandatory.



Required? true

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-NetworkName <String[]>

Specifies the networks to which you want to connect the new virtual machine. Specifying a distributed port

group name is obsolete. Use the Portgroup parameter instead.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-Notes <String>

Provides a description of the new virtual machine. The alias of this parameter is Description.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-NumCpu <Int32>

Specifies the number of the virtual CPUs of the new virtual machine.



Required? false

Position? named

Default value 1

Accept pipeline input? False

Accept wildcard characters? false



-OSCustomizationSpec <OSCustomizationSpec>

Specifies a customization specification that will be applied to the new virtual machine.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-Portgroup <VirtualPortGroupBase[]>

Specifies standard or distributed port groups to which you want to connect the virtual machine. For each

specified port group, a new network adapter is created.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-ReferenceSnapshot <Snapshot>

Specifies a source snapshot for the linked clone that you want to create. When you set the LinkedClone

parameter, the ReferenceSnapshot parameter becomes mandatory.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-ResourcePool <VIContainer>

Specifies where you want to place the new virtual machine. The parameter accepts VMHost, Cluster,

ResourcePool, and VApp objects. If no value is specified, the virtual machine is added to the resource pool of

its host.



Required? false

Position? named

Default value None

Accept pipeline input? True (ByValue)

Accept wildcard characters? true



-RunAsync [<SwitchParameter>]

Indicates that the command returns immediately without waiting for the task to complete. In this mode, the

output of the cmdlet is a Task object. For more information about the RunAsync parameter, run "help

About_RunAsync" in the VMware PowerCLI console.



Required? false

Position? named

Default value False

Accept pipeline input? False

Accept wildcard characters? false



-Server <VIServer[]>

Specifies the vCenter Server systems on which you want to run the cmdlet. If no value is passed to this

parameter, the command runs on the default servers. For more information about default servers, see the

description of the Connect-VIServer cmdlet.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? true



-Template <Template>

Specifies the virtual machine template that you want to use for the creation of the new virtual machine.

Passing values to this parameter through a pipeline is deprecated and will be disabled in a future release.



Required? true

Position? 2

Default value None

Accept pipeline input? True (ByValue)

Accept wildcard characters? true



-VApp <VApp>

This parameter is deprecated. Use the ResourcePool parameter instead. Specifies the vApp where you want to

create the new virtual machine.



Required? false

Position? named

Default value None

Accept pipeline input? True (ByValue)

Accept wildcard characters? true



-Version <VMVersion>

This parameter is deprecated. Use 'HardwareVersion' parameter instead. Specifies the version of the new

virtual machine. The valid values are v4, v7, v8, v9, v10, v11, v12, v13, and v14. By default, the new virtual

machine is created with the latest available version.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-VM <VirtualMachine[]>

Specifies a virtual machine to clone.



Required? true

Position? named

Default value None

Accept pipeline input? True (ByValue)

Accept wildcard characters? true



-VMFilePath <String>

Specifies a path to the virtual machine that you want to register.



Required? true

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-VMHost <VMHost>

Specifies the host on which you want to create the new virtual machine.



Required? false

Position? 1

Default value None

Accept pipeline input? True (ByValue)

Accept wildcard characters? true



-VMSwapfilePolicy <VMSwapfilePolicy>

Specifies the swapfile placement policy. The following values are valid:



InHostDataStore - Stores the swapfile in the datastore specified by the VMSwapfileDatastoreID property of the

virtual machine host. If the VMSwapfileDatastoreID property is not set or indicates a datastore with

insufficient free space, the swapfile is stored in the same directory as the virtual machine. This setting

might degrade the VMotion performance.



WithVM - Stores the swapfile in the same directory as the virtual machine.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-Confirm [<SwitchParameter>]

If the value is $true, indicates that the cmdlet asks for confirmation before running. If the value is $false,

the cmdlet runs without asking for user confirmation.



Required? false

Position? named

Default value $true

Accept pipeline input? False

Accept wildcard characters? false



-WhatIf [<SwitchParameter>]

Indicates that the cmdlet is run only to display the changes that would be made and actually no objects are

modified.



Required? false

Position? named

Default value False

Accept pipeline input? False

Accept wildcard characters? false



-KmsCluster <KmsCluster>

Specifies the KmsCluster that you use to generate a key for encryption during creating the new virtual

machine. If StoragePolicy is not specified then the default encryption storage policy "VM Encryption Policy"

is used.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-SkipHardDisks [<SwitchParameter>]

Specifies whether to apply the StoragePolicy or Encryption to the hard disks in the new virtual machine.



Required? false

Position? named

Default value False

Accept pipeline input? False

Accept wildcard characters? false



-StoragePolicy <StoragePolicy>

Specifies the StoragePolicy to be attached to the new virtual machine during creation. If the StoragePolicy is

an encryption policy, the new virtual machine will be encrypted.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-ReplicationGroup <ReplicationGroup>

Specifies the ReplicationGroup which the new virtual machine will be placed in. It is applicable with storage

policy provided in StoragePolicy parameter.



Required? false

Position? named

Default value None

Accept pipeline input? False

Accept wildcard characters? false



-StoragePolicyTarget <StoragePolicyTargetType>

Specifies the target of the StoragePolicy in VM.



Required? false

Position? named

Default value VmHomeAndHardDisks

Accept pipeline input? False

Accept wildcard characters? false



<CommonParameters>

This cmdlet supports the common parameters: Verbose, Debug,

ErrorAction, ErrorVariable, WarningAction, WarningVariable,

OutBuffer, PipelineVariable, and OutVariable. For more information, see

about_CommonParameters (https:/go.microsoft.com/fwlink/?LinkID=113216).



INPUTS



OUTPUTS

The newly created VirtualMachine object







NOTES









-------------------------- Example 1 --------------------------



$myTargetVMHost = Get-VMHost -Name MyVMHost1

New-VM -Name MyVM1 -ResourcePool $myTargetVMHost -Datastore MyDatastore1 -NumCPU 2 -MemoryGB 4 -DiskGB 40

-NetworkName "VM Network" -Floppy -CD -DiskStorageFormat Thin -GuestID winNetDatacenterGuest



Creates a virtual machine by specifying a target host, a target datastore, and a network to connect to, and

configures the settings for the virtual machine.

-------------------------- Example 2 --------------------------



$myCluster = Get-Cluster -Name MyCluster1

New-VM -Name MyVM1 -ResourcePool $myCluster



Creates a virtual machine by specifying a cluster. The ResourcePool parameter accepts ResourcePool, Cluster, VApp,

and standalone VMHost objects.

-------------------------- Example 3 --------------------------



$vmhost = Get-VMHost -Name MyVMHost1

$myCluster = Get-Cluster -Name MyCluster1

New-VM -Name MyVM1 -VMHost $vmhost -ResourcePool $myCluster -DiskGB 4 -MemoryGB 1



Creates a virtual machine by specifying a cluster and explicitly selecting the host, instead of allowing

auto-selection of a target host.

-------------------------- Example 4 --------------------------



$vmhost = Get-VMHost -Name MyVMHost1

New-VM -Name MyVM1 -ResourePool $vmhost -DiskGB 40,100



Creates a virtual machine with multiple disks.

-------------------------- Example 5 --------------------------



$vmhost = Get-VMHost -Name MyVMHost1

New-VM -Name MyVM1 -ResourcePool $vmhost -DiskPath "[Storage1] WindowsXP/WindowsXP.vmdk"



Creates a virtual machine by specifying an existing disk.

-------------------------- Example 6 --------------------------



$vmhost = Get-VMHost -Name MyVMHost1

New-VM -Name MyVM1 -ResourcePool $vmhost -HardwareVersion vmx-04



Creates a virtual machine by explicitly specifying the version of the virtual machine hardware through the

HardwareVersion parameter.

-------------------------- Example 7 --------------------------



$kmsCluster = Get-KmsCluster "MyKmsCluster"

$ds = Get-Datastore -VMHost MyHost1

New-VM -Name 'MyVM' -VMHost MyHost1 -Datastore $ds -KmsCluster $kmsCluster



Creates an encrypted virtual machine on the given datastore $ds and MyHost1 host.

-------------------------- Example 8 --------------------------



$policy = Get-SpbmStoragePolicy "MyPolicy"

$ds = Get-Datastore -VMHost MyHost1

New-VM -Name 'MyVM' -VMHost MyHost1 -Datastore $ds -StoragePolicy $policy -SkipHardDisks



Creates a virtual machine with the storage policy $policy attached to its VM Home on the given datastore $ds and

MyHost1 host. If the $policy is an encryption policy, VM Home of the virtual machine will be encrypted during

creation.

-------------------------- Example 9 --------------------------



$myDatastore = Get-Datastore -Name MyDatastore1

$vmhost = Get-VMHost -Name MyVMHost1

New-VM -Name MyVM2 -VM MyVM1 -Datastore $myDatastore -VMHost $vmhost



Creates a new virtual machine named MyVM2 by cloning the MyVM1 virtual machine on the specified datastore and host.

-------------------------- Example 10 --------------------------



New-VM -VM MyVM1, MyVM2 -Location MyFolder1 -VMHost MyHost1



Copies the MyVM1 and MyVM2 virtual machines to the MyFolder1 folder on the MyHost1 host.

-------------------------- Example 11 --------------------------



$myResourcePool = Get-ResourcePool -Name MyResourcePool1

$mySpecification = Get-OSCustomizationSpec -Name WindowsSpec

New-VM -VM MyVM1 -Name MyVM2 -OSCustomizationSpec $mySpecification -ResourcePool $myResourcePool



Clones the virtual machine MyVM1 to MyVM2 and applies a customization specification on the cloned virtual machine.

-------------------------- Example 12 --------------------------



$myResourcePool = Get-ResourcePool -Name MyResourcePool1

$myTemplate = Get-Template -Name WindowsTemplate

$mySpecification = Get-OSCustomizationSpec -Name WindowsSpec

New-VM -Name MyVM2 -Template $myTemplate -ResourcePool $myResourcePool -OSCustomizationSpec $mySpecification



Creates a virtual machine from the specified template and applies the specified customization specification.

-------------------------- Example 13 --------------------------



cd vmstores:\\myserver@443\\Datacenter\\Storage1\\MyVM1\\

$vmxFile = Get-Item MyVM1.vmx

$vmhost = Get-VMHost -Name MyVMHost1

New-VM -VMHost $vmhost -VMFilePath $vmxFile.DatastoreFullPath



Retrieves the specified configuration file for the MyVM1 virtual machine and registers the MyVM1 virtual machine

on the specified host.

-------------------------- Example 14 --------------------------



$vmhost = Get-VMHost -Name MyVMHost1

$myDatastoreCluster = Get-DatastoreCluster -Name MyStorageCluster1

New-VM -Name MyVM1 -DiskGB 40,40 -Datastore $myDatastoreCluster -ResourcePool $vmhost



Creates a virtual machine on a datastore cluster. By default, the new virtual machine has an intra-VM affinity

rule.

-------------------------- Example 15 --------------------------



$vmhost = Get-VMHost -Name MyVMHost1

$myDatastoreCluster = Get-DatastoreCluster -Name MyStorageCluster1

$myAdvancedOption = New-Object

'VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.SdrsVMDiskAntiAffinityRule' 1,2

New-VM -Name MyVM1 -DiskGB 40,40,40 -Datastore $myDatastoreCluster -AdvancedOption $myAdvancedOption -ResourcePool

$vmhost



Creates a virtual machine on a datastore cluster. The machine has three hard disks. For the first two disks,

intra-VM anti-affinity rule is specified and they will be placed on a datastore different from the datastore

cluster. Identifying the hard disk in the intra-VM anti-affinity happens by indexing the disks starting from 1.

-------------------------- Example 16 --------------------------



$myVM1 = Get-VM -Name WindowsXP

$myResourcePool = Get-ResourcePool -Name MyResourcePool1

$myAdvancedOption = New-Object 'VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.SdrsVMAntiAffinityRule'

$myVM1

$myDatastoreCluster = Get-DatastoreCluster -Name MyStorageCluster1

New-VM -Name MyVM1 -DiskGB 40,40,40 -Datastore $myDatastoreCluster -AdvancedOption $myAdvancedOption -ResourcePool

$myResourcePool



Creates a virtual machine on a datastore cluster and specifies a VM anti-affinity rule between the new virtual

machine and an existing virtual machine.

-------------------------- Example 17 --------------------------



$mySourceVM = Get-VM -Name MySourceVM1

$vmhost = Get-VMHost -Name MyVMHost1

$hardDiskList = Get-HardDisk -VM $vm | select -First 2

$myDatastoreCluster = Get-DatastoreCluster -Name MyStorageCluster1

$myAdvancedOption = New-Object

'VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.SdrsVMDiskAntiAffinityRule' $hardDiskList

New-VM -Name MyVM1 -VM $mySourceVM -Datastore $myDatastoreCluster -AdvancedOption $myAdvancedOption -ResourcePool

$vmhost



Clones a virtual machine on a datastore cluster and specifies an intra-VM anti-affinity rule by using references

to the hard disks of the source virtual machine. When you apply this rule to the AdvancedOption parameter of the

New-VM cmdlet, the first and second disk of the new virtual machine will be placed on different datastores within

the specified datastore cluster.

-------------------------- Example 18 --------------------------



$mySourceVM = Get-VM -Name MySourceVM1

$myVM1 = Get-VM -Name WindowsXP

$myAdvancedOption = New-Object 'VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.SdrsVMAntiAffinityRule'

$myVM1

$myDatastoreCluster = Get-DatastoreCluster -Name MyStorageCluster1

$vmhost = Get-VMHost -Name MyVMHost1

New-VM -Name MyVM2 -VM $mySourceVM -Datastore $myDatastoreCluster -AdvancedOption $myAdvancedOption -ResourcePool

$vmhost



Clones a virtual machine on a datastore cluster and specifies a VM anti-afffinity rule between the new virtual

machine and an existing virtual machine. When you apply this rule to the AdvancedOption parameter of the New-VM

cmdlet, the new virtual machine and the WindowsXP virtual machine will be placed on different datastores within

the specified datastore cluster.

-------------------------- Example 19 --------------------------



$mySourceTemplate = Get-Template -Name WindowsTemplate

$myDatastoreCluster = Get-DatastoreCluster -Name MyStorageCluster

$myAdvancedOption = New-Object

'VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.SdrsVMDiskAntiAffinityRule' $hardDiskList

$vmhost = Get-VMHost -Name MyVMHost1

New-VM -Name MyVM1 -Template $mySourceTemplate -Datastore $myDatastoreCluster -AdvancedOption $myAdvancedOption

-ResourcePool $vmhost



Creates a virtual machine from a template, specifies a VM anti-affinity rule and stores the virtual machine on a

specified datastore cluster.

-------------------------- Example 20 --------------------------



$vmhost = Get-VMHost -Name MyVMHost1

$myVM = Get-VM -Name WindowsXP

$mySourceTemplate = Get-Template -Name WindowsTemplate

$myDatastoreCluster = Get-DatastoreCluster -Name MyStorageCluster1

$myAdvancedOption = New-Object 'VMware.VimAutomation.ViCore.Types.V1.DatastoreManagement.SdrsVMAntiAffinityRule'

$myVM

New-VM -Name VM -Template $mySourceTemplate -Datastore $myDatastoreCluster -AdvancedOption $myAdvancedOption

-ResourcePool $vmhost



Creates a virtual machine from a template, specifies a VM anti-affinity rule and stores the virtual machine on a

specified datastore cluster.

-------------------------- Example 21 --------------------------



$mySourceVM = Get-VM -Name MySourceVM1

$myReferenceSnapshot = Get-Snapshot -VM $mySourceVM -Name "InitialState"

$vmhost = Get-VMHost -Name MyVMHost1

$myDatastore = Get-Datastore -Name MyDatastore1

New-VM -Name MyLinkedCloneVM1 -VM $mySourceVM -LinkedClone -ReferenceSnapshot $myReferenceSnapshot -ResourcePool

$vmhost -Datastore $myDatastore



Creates a linked clone from the specified snapshot of the parent virtual machine. The linked clone is stored to

the specified VM host and datastore.

-------------------------- Example 22 --------------------------



$myCluster = Get-Cluster -Name "MyCluster"

$myVDPortGroup = Get-VDPortgroup -Name "MyVDPortGroup"

$mySharedDatastore = Get-Datastore -Name "MySharedDatastore"

New-VM -Name MyVM -ResourcePool $myCluster -Portgroup $myVDPortGroup -DiskGB 40 -MemoryGB 4 -Datastore

$mySharedDatastore



Creates a new virtual machine with the specified configuration and connects it to the specified distributed port

group.



RELATED LINKS

Online Version: https://code.vmware.com/doc/preview?id= ... ew-VM.html

Get-VM

Move-VM

Remove-VM

Set-VM

Start-VM

Stop-VM

Suspend-VM

Restart-VM