New-VM
Creates a new virtual machine.
Syntax
New-VM
[[-Name] <String>]
[[-MemoryStartupBytes] <Int64>]
[-BootDevice <BootDevice>]
[-NoVHD]
[-SwitchName <String>]
[-Path <String>]
[-SourceGuestStatePath <String>]
[-Version <Version>]
[-Prerelease]
[-Experimental]
[[-Generation] <Int16>]
[-GuestStateIsolationType <GuestIsolationType>]
[-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>]
[-SourceGuestStatePath <String>]
[-Version <Version>]
[-Prerelease]
[-Experimental]
[[-Generation] <Int16>]
[-GuestStateIsolationType <GuestIsolationType>]
[-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>]
[-SourceGuestStatePath <String>]
[-Version <Version>]
[-Prerelease]
[-Experimental]
[[-Generation] <Int16>]
[-GuestStateIsolationType <GuestIsolationType>]
[-Force]
[-AsJob]
[-CimSession <CimSession[]>]
[-ComputerName <String[]>]
[-Credential <PSCredential[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
The New-VM
cmdlet creates a new virtual machine.
Examples
Example 1
New-VM -Name "VM01" -MemoryStartupBytes 512MB
This example creates a new virtual machine named VM01
that has 512 MB of memory.
Example 2
New-VM -Name "VM01" -MemoryStartupBytes 1GB -NewVHDPath D:\vhd\base.vhdx -NewVHDSizeBytes 40GB
This example creates a virtual machine named VM01
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
New-VM -Name "VM01" -MemoryStartupBytes 1GB -VHDPath D:\vhd\BaseImage.vhdx
This example creates a virtual machine named VM01
that has 1 GB of memory and connects it to an
existing virtual hard disk that uses the VHDX
format.
Example 4
New-VM -Name "VM01" -MemoryStartupBytes 2GB -Credential (Get-Credential) -ComputerName HostServer01
This example asks for credentials, then creates a virtual machine named VM01
, which has 2 GB of
memory, on the server named HostServer01
.
Example 5
New-VM -Name "VM01" -Generation 1 -BootDevice CD -NoVHD
This example creates a virtual machine named VM01
. The machine doesn't have any VHD disks and is
set to boot from a CD.
Example 6
$oldVM = Get-VM "PreviousVM"
$memory = (Get-VMMemory -VMName $oldVM.name).Startup
$switch = (Get-VMNetworkAdapter -VMName $oldVM.name).SwitchName
New-VM -Name "VM01" -Generation $oldVM.Generation -MemoryStartupBytes $memory -SwitchName $switch
This example creates a virtual machine named VM01
. The machine has the same generation and amount
of assigned memory as the existing machine named PreviousVM
and connects to the same network
switch.
Parameters
-AsJob
Runs the cmdlet as a background job.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-BootDevice
Specifies the device to use as the boot device for the new virtual machine. Acceptable values are:
CD
Floppy
LegacyNetworkAdapter
IDE
NetworkAdapter
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 a 32-bit operating system from a network
installation server.
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 |
Accepted values: | Floppy, CD, IDE, LegacyNetworkAdapter, NetworkAdapter, VHD |
Position: | Named |
Default value: | None |
Required: | False |
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 |
Required: | False |
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 |
Required: | False |
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: | None |
Required: | 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 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Experimental
Specific prerelease VM version 255.0. This parameter is used to experiment with new VM functionality, but this is not supported and may fail across updates. This VM version is not supported in release host builds, meaning you can only use this on pre-release host builds (Windows Insider program).
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Forces the command to run without asking for user confirmation.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Generation
Specifies the generation, as an integer, for the virtual machine. Acceptable values are:
1
2
Type: | Int16 |
Accepted values: | 1, 2 |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-GuestStateIsolationType
Specifies the level of isolation for the virtual machine being created. Acceptable values are:
TrustedLaunch
: Enables guest state isolation and Trusted Launch security features for the virtual machine.VBS
: Enables Virtualization Based Security (VBS) isolation for the virtual machine.SNP
: Enables AMD Secure Encrypted Virtualization-Secure Nested Paging (SEV-SNP) isolation for the virtual machine.TDX
: Enables Intel Trust Domain Extensions (TDX) isolation for the virtual machine.Disabled
: Disables all guest state isolation features for the virtual machine.
Type: | GuestIsolationType |
Accepted values: | TrustedLaunch, VBS, SNP, TDX, Disabled |
Position: | Named |
Default value: | None |
Required: | False |
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 |
Required: | False |
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 |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-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 |
Required: | True |
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 |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoVHD
Creates a virtual machine without attaching any virtual hard disks.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
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 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Prerelease
Specific prerelease VM version 254.0. This parameter is used to experiment with new VM functionality, but this is not supported and may fail across updates. This VM version is not supported in release host builds, meaning you can only use this on pre-release host builds (Windows Insider program).
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SourceGuestStatePath
Specifies the path to the guest state file for the virtual machine being created. Specifying the guest state path allows for creation of a new virtual machine that has the same configuration and state as the existing virtual machine.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
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 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Version
Specifies the version during the VM creation process. See, Get-VMHostSupportedVersion for supported VM versions on a given host.
Type: | Version |
Position: | Named |
Default value: | None |
Required: | False |
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 |
Required: | True |
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: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Inputs
Outputs
Microsoft.HyperV.PowerShell.VirtualMachine