New-AzVMConfig

Crea un oggetto macchina virtuale configurabile.

Sintassi

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>]

Descrizione

Il cmdlet New-AzVMConfig crea un oggetto macchina virtuale locale configurabile per Azure.

I cmdlet seguenti vengono usati per impostare proprietà diverse dell'oggetto macchina virtuale:

Esempio

Esempio 1: Creare una risorsa macchina virtuale

$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;

Esempio 2: Creare un oggetto macchina virtuale in un set di scalabilità di macchine virtuali con la configurazione dei domini di errore

$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;

Esempio 2: Creare una macchina virtuale usando l'oggetto Config della macchina virtuale per il tipo di sicurezza TrustedLaunch, i flag Vtpm e l'avvio protetto sono impostati su True per impostazione predefinita.

$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;

Questo esempio crea una macchina virtuale usando un oggetto VMConfig per il tipo di sicurezza TrustedLaunch e convalida i flag VtpmEnabled e SecureBootEnabled sono true per impostazione predefinita.

Parametri

-AvailabilitySetId

Specifica l'ID di un set di disponibilità. Per ottenere un oggetto set di disponibilità, usare il cmdlet Get-AzAvailabilitySet. L'oggetto set di disponibilità contiene una proprietà ID.
Le macchine virtuali specificate nello stesso set di disponibilità vengono allocate a nodi diversi per ottimizzare la disponibilità.
Per altre informazioni sui set di disponibilità, vedere Gestire la disponibilità delle macchine virtuali.
Per altre informazioni sulla manutenzione pianificata di Azure, vedere Manutenzione pianificata per le macchine virtuali in Azure
Attualmente, una macchina virtuale può essere aggiunta solo al set di disponibilità in fase di creazione. Il set di disponibilità a cui viene aggiunta la macchina virtuale deve trovarsi nello stesso gruppo di risorse della risorsa del set di disponibilità. Non è possibile aggiungere una macchina virtuale esistente a un set di disponibilità.
Questa proprietà non può esistere insieme a un riferimento properties non null.virtualMachineScaleSet.

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

-CapacityReservationGroupId

ID del gruppo di prenotazioni di capacità utilizzato per allocare.

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

-DefaultProfile

Credenziali, account, tenant e sottoscrizione usati per la comunicazione con Azure.

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

-DiskControllerType

Specifica il tipo di controller del disco configurato per la macchina virtuale e VirtualMachineScaleSet. Questa proprietà è supportata solo per le macchine virtuali il cui disco del sistema operativo e lo SKU della macchina virtuale supportano la generazione 2 (https://learn.microsoft.com/en-us/azure/virtual-machines/generation-2), controllare la funzionalità HyperVGenerations restituita come parte delle funzionalità sku della macchina virtuale nella risposta dell'API SKU Microsoft.Compute per l'area che contiene V2 (https://learn.microsoft.com/rest/api/compute/resourceskus/list).
Per altre informazioni sui tipi di controller disco supportati, vedere https://aka.ms/azure-diskcontrollertypes.

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

-EnableSecureBoot

Specifica se l'avvio protetto deve essere abilitato nella macchina virtuale.

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

-EnableUltraSSD

Consente a una funzionalità di avere uno o più dischi dati gestiti con UltraSSD_LRS tipo di account di archiviazione nella macchina virtuale. I dischi gestiti con tipo di account di archiviazione UltraSSD_LRS possono essere aggiunti a una macchina virtuale solo se questa proprietà è abilitata.

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

-EnableVtpm

Specifica se vTPM deve essere abilitato nella macchina virtuale.

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

-EncryptionAtHost

La proprietà EncryptionAtHost può essere usata dall'utente nella richiesta per abilitare o disabilitare la crittografia host per la macchina virtuale o il set di scalabilità di macchine virtuali. In questo modo verrà abilitata la crittografia per tutti i dischi, incluso il disco Resource/Temp nell'host stesso. Impostazione predefinita: la crittografia dell'host verrà disabilitata a meno che questa proprietà non sia impostata su true per la risorsa.

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

-EvictionPolicy

Criteri di rimozione per la macchina virtuale Spot di Azure. I valori supportati sono 'Deallocate' e 'Delete'.

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

-HibernationEnabled

Flag che abilita o disabilita la funzionalità di ibernazione nella macchina virtuale.

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

-HostId

ID dell'host

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

-IdentityId

Specifica l'elenco delle identità utente associate al set di scalabilità di macchine virtuali. I riferimenti all'identità utente saranno id risorsa ARM nel 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

Identità della macchina virtuale, se configurata.

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

È stato specificato l'ID univoco dell'immagine della raccolta condivisa per la distribuzione della macchina virtuale. Questa operazione può essere recuperata dalla chiamata GET dell'immagine della raccolta condivisa.

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

-LicenseType

Specifica un tipo di licenza, che indica che l'immagine o il disco per la macchina virtuale è stato concesso in licenza in locale. I valori possibili per Windows Server sono:

  • Windows_Client
  • Windows_Server

I valori possibili per il sistema operativo Linux Server sono:

  • RHEL_BYOS (per RHEL)
  • SLES_BYOS (per SU edizione Standard)
Type:String
Position:3
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaxPrice

Specifica il prezzo massimo che si vuole pagare per una macchina virtuale/set di scalabilità di macchine virtuali con priorità bassa. Questo prezzo è in dollari USA. Questo prezzo verrà confrontato con il prezzo di priorità bassa corrente per le dimensioni della macchina virtuale. Inoltre, i prezzi vengono confrontati al momento della creazione/aggiornamento di macchine virtuali/set di scalabilità di macchine virtuali con priorità bassa e l'operazione avrà esito positivo solo se il prezzo maxPrice è maggiore del prezzo di priorità bassa corrente. MaxPrice verrà usato anche per rimuovere una macchina virtuale/set di scalabilità di macchine virtuali con priorità bassa se il prezzo di priorità bassa corrente supera il valore maxPrice dopo la creazione di macchine virtuali/set di scalabilità di macchine virtuali. I valori possibili sono: qualsiasi valore decimale maggiore di zero. Esempio: 0.01538. -1 indica che la macchina virtuale/set di scalabilità di macchine virtuali con priorità bassa non deve essere rimossa per motivi di prezzo. Inoltre, il prezzo massimo predefinito è -1 se non è fornito dall'utente.

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

-PlatformFaultDomain

Specifica il dominio di errore della macchina virtuale.

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

-Priority

Priorità per la macchina virtuale. Solo i valori supportati sono 'Regular', 'Spot' e 'Low'. 'Regular' è per la normale macchina virtuale. 'Spot' è per la macchina virtuale spot. 'Low' è anche per la macchina virtuale spot, ma viene sostituito da 'Spot'. Usare "Spot" invece di "Low".

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

-ProximityPlacementGroupId

ID risorsa del gruppo di posizionamento di prossimità da usare con questa macchina virtuale.

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

-SecurityType

Specifica il Tipo di sicurezza della macchina virtuale. Deve essere impostato su qualsiasi valore specificato per abilitare Uefi Impostazioni. Per impostazione predefinita, Uefi Impostazioni non verrà abilitato a meno che questa proprietà non sia impostata.

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

-SharedGalleryImageId

È stato specificato l'ID univoco dell'immagine della raccolta condivisa per la distribuzione della macchina virtuale. Questa operazione può essere recuperata dalla chiamata GET dell'immagine della raccolta condivisa.

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

-Tags

Tag associati alla risorsa.

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

-UserData

UserData per la macchina virtuale, che verrà codificata in base 64. Il cliente non deve passare segreti qui.

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

-vCPUCountAvailable

Specifica il numero di vCPU disponibili per la macchina virtuale. Quando questa proprietà non viene specificata nel corpo della richiesta, il comportamento predefinito consiste nell'impostarlo sul valore delle vCPU disponibili per le dimensioni della macchina virtuale esposte nella risposta api di Elencare tutte le dimensioni delle macchine virtuali disponibili in un'area.

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

-vCPUCountPerCore

Specifica il rapporto tra vCPU e core fisici. Quando questa proprietà non viene specificata nel corpo della richiesta, il comportamento predefinito è impostato sul valore di vCPUsPerCore per le dimensioni della macchina virtuale esposte in risposta api di Elenca tutte le dimensioni delle macchine virtuali disponibili in un'area. L'impostazione di questa proprietà su 1 significa anche che l'hyper-threading è disabilitato.

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

-VMName

Specifica un nome per la macchina virtuale.

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

-VMSize

Specifica le dimensioni per la macchina virtuale. Get-AzComputeResourceSku può essere usato per individuare le dimensioni disponibili per la sottoscrizione e l'area.

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

-VmssId

ID del set di scalabilità di macchine virtuali

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

-Zone

Specifica la zona di disponibilità per la macchina virtuale. Anche se accetta una matrice di zone, le macchine virtuali non supportano più zone di disponibilità. Il valore consentito dipende dalle funzionalità dell'area. Il valore consentito sarà in genere 1, 2 o 3. Altre informazioni sulle zone di disponibilità di Azure.

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

Input

String

String[]

Hashtable

SwitchParameter

Output

PSVirtualMachine