New-AzVMConfig

Crea un objeto de máquina virtual configurable.

Syntax

New-AzVMConfig
   [-VMName] <String>
   [-VMSize] <String>
   [[-AvailabilitySetId] <String>]
   [[-LicenseType] <String>]
   [-Zone <String[]>]
   [-ProximityPlacementGroupId <String>]
   [-HostId <String>]
   [-VmssId <String>]
   [-MaxPrice <Double>]
   [-EvictionPolicy <String>]
   [-Priority <String>]
   [-Tags <Hashtable>]
   [-EnableUltraSSD]
   [-EncryptionAtHost]
   [-CapacityReservationGroupId <String>]
   [-ImageReferenceId <String>]
   [-DiskControllerType <String>]
   [-UserData <String>]
   [-PlatformFaultDomain <Int32>]
   [-HibernationEnabled]
   [-vCPUCountAvailable <Int32>]
   [-vCPUCountPerCore <Int32>]
   [-SharedGalleryImageId <String>]
   [-SecurityType <String>]
   [-EnableVtpm <Boolean>]
   [-EnableSecureBoot <Boolean>]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]
New-AzVMConfig
   [-VMName] <String>
   [-VMSize] <String>
   [[-AvailabilitySetId] <String>]
   [[-LicenseType] <String>]
   [-IdentityType] <ResourceIdentityType>
   [-IdentityId <String[]>]
   [-Zone <String[]>]
   [-ProximityPlacementGroupId <String>]
   [-HostId <String>]
   [-VmssId <String>]
   [-MaxPrice <Double>]
   [-EvictionPolicy <String>]
   [-Priority <String>]
   [-Tags <Hashtable>]
   [-EnableUltraSSD]
   [-EncryptionAtHost]
   [-CapacityReservationGroupId <String>]
   [-ImageReferenceId <String>]
   [-DiskControllerType <String>]
   [-UserData <String>]
   [-PlatformFaultDomain <Int32>]
   [-HibernationEnabled]
   [-vCPUCountAvailable <Int32>]
   [-vCPUCountPerCore <Int32>]
   [-SharedGalleryImageId <String>]
   [-SecurityType <String>]
   [-EnableVtpm <Boolean>]
   [-EnableSecureBoot <Boolean>]
   [-DefaultProfile <IAzureContextContainer>]
   [<CommonParameters>]

Description

El cmdlet New-AzVMConfig crea un objeto de máquina virtual local configurable para Azure.

Los siguientes cmdlets se usan para establecer propiedades diferentes del objeto de máquina virtual:

Ejemplos

Ejemplo 1: Creación de un recurso de máquina virtual

$rgname = "resourceGroupName";
$loc = "eastus";

New-AzResourceGroup -Name $rgname -Location $loc -Force;

# General Setup
$vmname = 'v' + $rgname;
$domainNameLabel = "d1" + $rgname;
$vmSize = 'Standard_DS3_v2';
$computerName = "c" + $rgname;
$securityTypeStnd = "Standard";
        
# Credential. Input Username and Password values
$user = "";
$securePassword = "" | ConvertTo-SecureString -AsPlainText -Force;  
$cred = New-Object System.Management.Automation.PSCredential ($user, $securePassword);
        
# Creating a VMConfig 
$vmconfig = New-AzVMConfig -VMName $vmname -vmsize $vmsize -SecurityType $securityTypeStnd;

# Set source image values
$publisherName = "MicrosoftWindowsServer";
$offer = "WindowsServer";
$sku = "2019-DataCenter";
$vmconfig = Set-AzVMSourceImage -VM $vmconfig -PublisherName $publisherName -Offer $offer -Skus $sku -Version 'latest';

# NRP Setup
$subnet = New-AzVirtualNetworkSubnetConfig -Name ('subnet' + $rgname) -AddressPrefix "10.0.0.0/24";
$vnet = New-AzVirtualNetwork -Force -Name ('vnet' + $rgname) -ResourceGroupName $rgname -Location $loc -AddressPrefix "10.0.0.0/16" -Subnet $subnet;
$vnet = Get-AzVirtualNetwork -Name ('vnet' + $rgname) -ResourceGroupName $rgname;
$subnetId = $vnet.Subnets[0].Id;
$pubip = New-AzPublicIpAddress -Force -Name ('pubip' + $rgname) -ResourceGroupName $rgname -Location $loc -AllocationMethod Static -DomainNameLabel $domainNameLabel;
$pubip = Get-AzPublicIpAddress -Name ('pubip' + $rgname) -ResourceGroupName $rgname;
$pubipId = $pubip.Id;
$nic = New-AzNetworkInterface -Force -Name ('nic' + $rgname) -ResourceGroupName $rgname -Location $loc -SubnetId $subnetId -PublicIpAddressId $pubip.Id;
$nic = Get-AzNetworkInterface -Name ('nic' + $rgname) -ResourceGroupName $rgname;
$nicId = $nic.Id;

$vmconfig = Add-AzVMNetworkInterface -VM $vmconfig -Id $nicId;
$vmconfig = Set-AzVMOperatingSystem -VM $vmconfig -Windows -ComputerName $computerName -Credential $cred;

# Create the VM
New-AzVM -ResourceGroupName $rgname -Location $loc -Vm $vmconfig;
$vm = Get-AzVM -ResourceGroupName $rgname -Name $vmname;

Ejemplo 2: Creación de un objeto de máquina virtual en un conjunto de escalado de máquinas virtuales con la configuración de dominios de error

$rgname = "resourceGroupName";
$loc = "eastus";
$vmname = "vm" + $rgname;

New-AzResourceGroup -Name $rgname -Location $loc -Force;

$domainNameLabel = "d1" + $rgname;
$vmname = "v" + $rgname;
$vnetname = "myVnet";
$vnetAddress = "10.0.0.0/16";
$subnetname = "slb" + $rgname;
$subnetAddress = "10.0.2.0/24";
$vmssName = "vmss" + $rgname;
$faultDomainNumber = 2;
$vmssFaultDomain = 3;
$securityTypeStnd = "Standard";

$OSDiskName = $vmname + "-osdisk";
$NICName = $vmname+ "-nic";
$NSGName = $vmname + "-NSG";
$OSDiskSizeinGB = 128;
$VMSize = "Standard_DS2_v2";
$PublisherName = "MicrosoftWindowsServer";
$Offer = "WindowsServer";
$SKU = "2019-Datacenter";
        
# Credential. Input Username and Password values.
$user = "";
$securePassword = "" | ConvertTo-SecureString -AsPlainText -Force;  
$cred = New-Object System.Management.Automation.PSCredential ($user, $securePassword);

$frontendSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetname -AddressPrefix $subnetAddress;
$vnet = New-AzVirtualNetwork -Name $vnetname -ResourceGroupName $rgname -Location $loc -AddressPrefix $vnetAddress -Subnet $frontendSubnet;

$vmssConfig = New-AzVmssConfig -Location $loc -PlatformFaultDomainCount $vmssFaultDomain -SecurityType $securityTypeStnd;
$vmss = New-AzVmss -ResourceGroupName $RGName -Name $VMSSName -VirtualMachineScaleSet $vmssConfig;

$nsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name RDP  -Protocol Tcp  -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow;
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $RGName -Location $loc -Name $NSGName  -SecurityRules $nsgRuleRDP;
$nic = New-AzNetworkInterface -Name $NICName -ResourceGroupName $RGName -Location $loc -SubnetId $vnet.Subnets[0].Id -NetworkSecurityGroupId $nsg.Id -EnableAcceleratedNetworking;

# VM
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize $VMSize  -VmssId $vmss.Id -PlatformFaultDomain $faultDomainNumber -SecurityType $securityTypeStnd;
Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $cred ;
Set-AzVMOSDisk -VM $vmConfig -StorageAccountType "Premium_LRS" -Caching ReadWrite -Name $OSDiskName -DiskSizeInGB $OSDiskSizeinGB -CreateOption FromImage ;
Set-AzVMSourceImage -VM $vmConfig -PublisherName $PublisherName -Offer $Offer -Skus $SKU -Version latest ;
Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id;

New-AzVM -ResourceGroupName $RGName -Location $loc -VM $vmConfig;
$vm = Get-AzVM -ResourceGroupName $rgname -Name $vmName;

Ejemplo 2: Crear una máquina virtual mediante el objeto Config de máquina virtual para trustedLaunch Security Type, las marcas Vtpm y Secure Boot se establecen en True de forma predeterminada.

$rgname = "rgname";
$loc = "eastus";
New-AzResourceGroup -Name $rgname -Location $loc -Force;    
 
# VM Profile & Hardware
$domainNameLabel = "d1" + $rgname;
$vmsize = 'Standard_D4s_v3';
$vmname = $rgname + 'Vm';
$securityType_TL = "TrustedLaunch";
$vnetname = "myVnet";
$vnetAddress = "10.0.0.0/16";
$subnetname = "slb" + $rgname;
$subnetAddress = "10.0.2.0/24";
$OSDiskName = $vmname + "-osdisk";
$NICName = $vmname+ "-nic";
$NSGName = $vmname + "-NSG";
$OSDiskSizeinGB = 128;
$PublisherName = "MicrosoftWindowsServer";
$Offer = "WindowsServer";
$SKU = "2016-datacenter-gensecond";
$disable = $false;
$enable = $true;
$extDefaultName = "GuestAttestation";
$vmGADefaultIDentity = "SystemAssigned";
# Credential
$password = <Password>;
$securePassword = $password | ConvertTo-SecureString -AsPlainText -Force;  
$user = <Username>;
$cred = New-Object System.Management.Automation.PSCredential ($user, $securePassword);
# Network resources
$frontendSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetname -AddressPrefix $subnetAddress;
$vnet = New-AzVirtualNetwork -Name $vnetname -ResourceGroupName $rgname -Location $loc -AddressPrefix $vnetAddress -Subnet $frontendSubnet;
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name RDP  -Protocol Tcp  -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow;
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $rgname -Location $loc -Name $NSGName  -SecurityRules $nsgRuleRDP;
$nic = New-AzNetworkInterface -Name $NICName -ResourceGroupName $rgname -Location $loc -SubnetId $vnet.Subnets[0].Id -NetworkSecurityGroupId $nsg.Id -EnableAcceleratedNetworking;
# Configure Values using VMConfig Object
$vmConfig = New-AzVMConfig -VMName $vmname -VMSize $vmsize;
Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmname -Credential $cred;
Set-AzVMSourceImage -VM $vmConfig -PublisherName $PublisherName -Offer $Offer -Skus $SKU -Version latest ;
Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id;
  
# VM Creation using VMConfig for Trusted Launch SecurityType
$vmConfig = Set-AzVMSecurityProfile -VM $vmConfig -SecurityType $securityType_TL;
New-AzVM -ResourceGroupName $rgname -Location $loc -VM $vmConfig;
$vm = Get-AzVM -ResourceGroupName $rgname -Name $vmname;
# Validate that for -SecurityType "TrustedLaunch", "-Vtpm" and "-SecureBoot" are "Enabled/true"
#$vm.SecurityProfile.UefiSettings.VTpmEnabled $true;
#$vm.SecurityProfile.UefiSettings.SecureBootEnabled $true;

En este ejemplo se crea una máquina virtual mediante un objeto VMConfig para el tipo de seguridad TrustedLaunch y se validan las marcas VtpmEnabled y SecureBootEnabled de forma predeterminada.

Parámetros

-AvailabilitySetId

Especifica el identificador de un conjunto de disponibilidad. Para obtener un objeto de conjunto de disponibilidad, use el cmdlet Get-AzAvailabilitySet. El objeto del conjunto de disponibilidad contiene una propiedad ID.
Las máquinas virtuales especificadas en el mismo conjunto de disponibilidad se asignan a distintos nodos para maximizar la disponibilidad.
Para más información sobre los conjuntos de disponibilidad, consulte Administración de la disponibilidad de las máquinas virtuales.
Para más información sobre el mantenimiento planeado de Azure, consulte Mantenimiento planeado de máquinas virtuales en Azure.
Actualmente, una máquina virtual solo se puede agregar al conjunto de disponibilidad en el momento de la creación. El conjunto de disponibilidad al que se va a agregar la máquina virtual debe estar en el mismo grupo de recursos que el recurso del conjunto de disponibilidad. No se puede agregar una máquina virtual existente a un conjunto de disponibilidad.
Esta propiedad no puede existir junto con una referencia properties.virtualMachineScaleSet que no sea NULL.

Type:String
Position:2
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-CapacityReservationGroupId

Identificador del grupo de reserva de capacidad que se usa para asignar.

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

-DefaultProfile

Las credenciales, la cuenta, el inquilino y la suscripción que se usan para la comunicación con Azure.

Type:IAzureContextContainer
Aliases:AzContext, AzureRmContext, AzureCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DiskControllerType

Especifica el tipo de controlador de disco configurado para la máquina virtual y VirtualMachineScaleSet. Esta propiedad solo se admite para las máquinas virtuales cuyo disco del sistema operativo y la SKU de máquina virtual admiten la generación 2 (https://learn.microsoft.com/en-us/azure/virtual-machines/generation-2), compruebe la funcionalidad HyperVGenerations devuelta como parte de las funcionalidades de SKU de máquina virtual en la respuesta de la API de SKU de Microsoft.Compute para la región contiene V2 (https://learn.microsoft.com/rest/api/compute/resourceskus/list).
Para obtener más información sobre los tipos de controlador de disco admitidos, consulte https://aka.ms/azure-diskcontrollertypes.

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

-EnableSecureBoot

Especifica si se debe habilitar el arranque seguro en la máquina virtual.

Type:Nullable<T>[Boolean]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-EnableUltraSSD

Habilita una capacidad para tener uno o varios discos de datos administrados con UltraSSD_LRS tipo de cuenta de almacenamiento en la máquina virtual. Los discos administrados con el tipo de cuenta de almacenamiento UltraSSD_LRS se pueden agregar a una máquina virtual solo si esta propiedad está habilitada.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-EnableVtpm

Especifica si vTPM debe estar habilitado en la máquina virtual.

Type:Nullable<T>[Boolean]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-EncryptionAtHost

El usuario puede usar la propiedad EncryptionAtHost en la solicitud para habilitar o deshabilitar el cifrado de host para la máquina virtual o el conjunto de escalado de máquinas virtuales. Esto habilitará el cifrado para todos los discos, incluido el recurso o el disco temporal en el propio host. Valor predeterminado: el cifrado en el host se deshabilitará a menos que esta propiedad esté establecida en true para el recurso.

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

-EvictionPolicy

Directiva de expulsión de la máquina virtual de Acceso puntual de Azure. Los valores admitidos son "Deallocate" y "Delete".

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

-HibernationEnabled

Marca que habilita o deshabilita la funcionalidad de hibernación en la máquina virtual.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-HostId

El identificador del host

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

-IdentityId

Especifica la lista de identidades de usuario asociadas al conjunto de escalado de máquinas virtuales. Las referencias de identidad de usuario serán identificadores de recursos de ARM con el formato : '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/identities/{identityName}'

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

-IdentityType

Identidad de la máquina virtual, si está configurada.

Type:Nullable<T>[ResourceIdentityType]
Accepted values:SystemAssigned, UserAssigned, SystemAssignedUserAssigned, None
Position:4
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-ImageReferenceId

Se especificó el identificador único de la imagen de la galería compartida para la implementación de la máquina virtual. Esto se puede capturar desde la llamada GET de la imagen de la galería compartida.

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

-LicenseType

Especifica un tipo de licencia, que indica que la imagen o el disco de la máquina virtual tenía una licencia local. Los valores posibles para Windows Server son:

  • Windows_Client
  • Windows_Server

Los valores posibles para el sistema operativo Linux Server son:

  • RHEL_BYOS (para RHEL)
  • SLES_BYOS (para SUSE)
Type:String
Position:3
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxPrice

Especifica el precio máximo que está dispuesto a pagar por una máquina virtual o VMSS de prioridad baja. Este precio está en dólares estadounidenses. Este precio se comparará con el precio actual de prioridad baja para el tamaño de la máquina virtual. Además, los precios se comparan en el momento de crear o actualizar máquinas virtuales o VMSS de prioridad baja y la operación solo se realizará correctamente si maxPrice es mayor que el precio actual de prioridad baja. El maxPrice también se usará para expulsar una máquina virtual o VMSS de prioridad baja si el precio actual de prioridad baja va más allá del maxPrice después de la creación de VM/VMSS. Los valores posibles son: cualquier valor decimal mayor que cero. Ejemplo: 0.01538. -1 indica que la máquina virtual o VMSS de prioridad baja no se debe expulsar por motivos de precio. Además, el precio máximo predeterminado es -1 si no lo proporciona usted.

Type:Double
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-PlatformFaultDomain

Especifica el dominio de error de la máquina virtual.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Priority

Prioridad de la máquina virtual. Solo los valores admitidos son "Regular", "Spot" y "Low". "Regular" es para la máquina virtual normal. "Spot" es para la máquina virtual de acceso puntual. "Low" también es para la máquina virtual de acceso puntual, pero se reemplaza por "Spot". Use "Spot" en lugar de "Low".

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

-ProximityPlacementGroupId

Identificador de recurso del grupo de selección de ubicación de proximidad que se va a usar con esta máquina virtual.

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

-SecurityType

Especifica securityType de la máquina virtual. Debe establecerse en cualquier valor especificado para habilitar Uefi Configuración. De forma predeterminada, Uefi Configuración no se habilitará a menos que se establezca esta propiedad.

Type:String
Accepted values:TrustedLaunch, ConfidentialVM, Standard
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-SharedGalleryImageId

Se especificó el identificador único de la imagen de la galería compartida para la implementación de la máquina virtual. Esto se puede capturar desde la llamada GET de la imagen de la galería compartida.

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

-Tags

Etiquetas asociadas al recurso.

Type:Hashtable
Aliases:Tag
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-UserData

UserData para la máquina virtual, que se codificará en base 64. El cliente no debe pasar ningún secreto aquí.

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

-vCPUCountAvailable

Especifica el número de vCPU disponibles para la máquina virtual. Cuando esta propiedad no se especifica en el cuerpo de la solicitud, el comportamiento predeterminado es establecerlo en el valor de las vCPU disponibles para ese tamaño de máquina virtual expuesto en la respuesta de api de Enumerar todos los tamaños de máquina virtual disponibles en una región.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-vCPUCountPerCore

Especifica la relación de núcleos físicos de vCPU. Cuando esta propiedad no se especifica en el cuerpo de la solicitud, el comportamiento predeterminado se establece en el valor de vCPUsPerCore para el tamaño de máquina virtual expuesto en la respuesta de api de Enumerar todos los tamaños de máquina virtual disponibles en una región. Establecer esta propiedad en 1 también significa que el hyper-threading está deshabilitado.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-VMName

Especifica un nombre para la máquina virtual.

Type:String
Aliases:ResourceName, Name
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-VMSize

Especifica el tamaño de la máquina virtual. Get-AzComputeResourceSku se puede usar para averiguar los tamaños disponibles de su suscripción y región.

Type:String
Position:1
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-VmssId

Identificador del conjunto de escalado de máquinas virtuales

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

-Zone

Especifica la zona de disponibilidad de la máquina virtual. Aunque toma una matriz de zonas, las máquinas virtuales no admiten varias zonas de disponibilidad. El valor permitido depende de las funcionalidades de la región. El valor permitido normalmente será 1, 2 o 3. Más información sobre las zonas de disponibilidad de Azure.

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

Entradas

String

String[]

Hashtable

SwitchParameter

Salidas

PSVirtualMachine