New-VM

Creates a new virtual machine.

Syntax

New-VM
   [[-Name] <String>]
   [[-MemoryStartupBytes] <Int64>]
   [-BootDevice <BootDevice>]
   [-NoVHD]
   [-SwitchName <String>]
   [-Path <String>]
   [-Version <Version>]
   [-Prerelease]
   [-Experimental]
   [[-Generation] <Int16>]
   [-Force]
   [-AsJob]
   [-CimSession <CimSession[]>]
   [-ComputerName <String[]>]
   [-Credential <PSCredential[]>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-VM
   [[-Name] <String>]
   [[-MemoryStartupBytes] <Int64>]
   [-BootDevice <BootDevice>]
   [-SwitchName <String>]
   -NewVHDPath <String>
   -NewVHDSizeBytes <UInt64>
   [-Path <String>]
   [-Version <Version>]
   [-Prerelease]
   [-Experimental]
   [[-Generation] <Int16>]
   [-Force]
   [-AsJob]
   [-CimSession <CimSession[]>]
   [-ComputerName <String[]>]
   [-Credential <PSCredential[]>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-VM
   [[-Name] <String>]
   [[-MemoryStartupBytes] <Int64>]
   [-BootDevice <BootDevice>]
   [-SwitchName <String>]
   -VHDPath <String>
   [-Path <String>]
   [-Version <Version>]
   [-Prerelease]
   [-Experimental]
   [[-Generation] <Int16>]
   [-Force]
   [-AsJob]
   [-CimSession <CimSession[]>]
   [-ComputerName <String[]>]
   [-Credential <PSCredential[]>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

The New-VM cmdlet creates a new virtual machine.

Examples

Example 1

PS C:\> New-VM -Name "new 1" -MemoryStartupBytes 512MB

This example creates a new virtual machine named new 1 that has 512 MB of memory.

Example 2

PS C:\> New-VM -Name "new 2" -MemoryStartupBytes 1GB -NewVHDPath d:\vhd\base.vhdx

This example creates a virtual machine named new 2 that has 1 GB of memory and that is connected to a new 40 GB virtual hard disk that uses the VHDX format.

Example 3

PS C:\> New-VM -Name "new 3" -MemoryStartupBytes 1GB -VHDPath d:\vhd\BaseImage.vhdx

This example creates a virtual machine named new 3 that has 1 GB of memory and connects it to an existing virtual hard disk that uses the VHDX format.

Required Parameters

-NewVHDPath

Creates a new virtual hard disk with the specified path and connects it to the new virtual machine. Absolute paths are allowed. If only a file name is specified, the virtual hard disk is created in the default path configured for the host.

Type: String
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-NewVHDSizeBytes

Specifies the size of the dynamic virtual hard disk that is created and attached to the new virtual machine.

Type: UInt64
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-VHDPath

Specifies the path to a virtual hard disk file.

Type: String
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

Optional Parameters

-AsJob

Runs the cmdlet as a background job.

Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-BootDevice

Specifies the device to use as the boot device for the new virtual machine. Allowed values are CD , Floppy , LegacyNetworkAdapter , IDE , NetworkAdapter, and VHD.

When LegacyNetworkAdapter is specified, this configures the new virtual machine with a network adapter that can be used to perform a PXE boot and install an operating system from a network installation server.

Note: Generation 2 virtual machines do not support Floppy, LegacyNetworkAdapter or IDE. Using these values with a Generation 2 virtual machine will cause an error.

VHD and NetworkAdapter are new to Generation 2 virtual machines. If you specify them on a Generation 1 virtual machine, then they are interpreted to be IDE and LegacyNetworkAdapter, respectively.

Type: BootDevice
Parameter Sets: Floppy, CD, IDE, LegacyNetworkAdapter, NetworkAdapter, VHD
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-CimSession

Runs the cmdlet in a remote session or on a remote computer. Enter a computer name or a session object, such as the output of a New-CimSession or Get-CimSession cmdlet. The default is the current session on the local computer.

Type: CimSession[]
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-ComputerName

Specifies one or more Hyper-V hosts on which the virtual machine is to be created. NetBIOS names, IP addresses, and fully qualified domain names are allowable. The default is the local computer. Use localhost or a dot (.) to specify the local computer explicitly.

Type: String[]
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Confirm

Prompts you for confirmation before running the cmdlet.

Type: SwitchParameter
Aliases: cf
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-Credential

Specifies one or more user accounts that have permission to perform this action. The default is the current user.

Type: PSCredential[]
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Experimental
Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Force
Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Generation

Specifies the generation, as an integer, for the virtual machine. The values that are valid in this version of Windows are 1 and 2.

Type: Int16
Parameter Sets: 1, 2
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-MemoryStartupBytes

Specifies the amount of memory, in bytes, to assign to the virtual machine. The default value is 512 MB.

Type: Int64
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Name

Specifies the name of the new virtual machine. The default name is New virtual machine.

Type: String
Aliases: VMName
Position: 0
Default value: None
Accept pipeline input: True (ByPropertyName, ByValue)
Accept wildcard characters: False
-NoVHD

Creates a virtual machine without attaching any virtual hard disks.

Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Path

Specifies the directory to store the files for the new virtual machine.

Type: String
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Prerelease
Type: SwitchParameter
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-SwitchName

Specifies the friendly name of the virtual switch if you want to connect the new virtual machine to an existing virtual switch to provide connectivity to a network. Hyper-V automatically creates a virtual machine with one virtual network adapter, but connecting it to a virtual switch is optional.

Type: String
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-Version
Type: Version
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-WhatIf

Shows what would happen if the cmdlet runs. The cmdlet is not run.

Type: SwitchParameter
Aliases: wi
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False

Outputs

Microsoft.HyperV.PowerShell.VirtualMachine