Поделиться через


New-AzVMConfig

Создает настраиваемый объект виртуальной машины.

Синтаксис

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

Описание

Командлет New-AzVMConfig создает настраиваемый объект локальной виртуальной машины для Azure.

Для задания различных свойств объекта виртуальной машины используются следующие командлеты:

Примеры

Пример 1. Создание ресурса виртуальной машины

$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 -String "****" -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;

Пример 2. Создание объекта виртуальной машины в масштабируемом наборе виртуальных машин с настройкой доменов сбоя

$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 -String "****" -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;

Пример 2. Создание виртуальной машины с помощью объекта конфигурации виртуальной машины для типа безопасности TrustedLaunch, флаги Vtpm и Безопасная загрузка по умолчанию имеют значение True.

$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
$securePassword = ConvertTo-SecureString -String "****" -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;

В этом примере создается виртуальная машина с помощью объекта VMConfig для типа безопасности TrustedLaunch и проверяет флаги VtpmEnabled и SecureBootEnabled по умолчанию.

Параметры

-AvailabilitySetId

Указывает идентификатор группы доступности. Чтобы получить объект группы доступности, используйте командлет Get-AzAvailabilitySet. Объект группы доступности содержит свойство ID.
Виртуальные машины, указанные в одном наборе доступности, выделяются различным узлам для обеспечения максимальной доступности.
Дополнительные сведения о группах доступности см. в разделе "Управление доступностью виртуальных машин".
Дополнительные сведения о плановом обслуживании Azure см. в статье Плановое обслуживание виртуальных машин в Azure
В настоящее время виртуальная машина может быть добавлена только в группу доступности во время создания. Группа доступности, к которой добавляется виртуальная машина, должна находиться в той же группе ресурсов, что и ресурс группы доступности. Существующую виртуальную машину нельзя добавить в группу доступности.
Это свойство не может существовать вместе со ссылкой ненулевого свойства.virtualMachineScaleSet.

Тип:String
Position:2
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-CapacityReservationGroupId

Идентификатор группы резервирования емкости, используемой для выделения.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-DefaultProfile

Учетные данные, учетная запись, клиент и подписка, используемые для обмена данными с Azure.

Тип:IAzureContextContainer
Aliases:AzContext, AzureRmContext, AzureCredential
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-DiskControllerType

Указывает тип контроллера диска, настроенный для виртуальной машины и VirtualMachineScaleSet. Это свойство поддерживается только для виртуальных машин, диски операционной системы и SKU виртуальной машины которого поддерживают поколение 2 (https://learn.microsoft.com/en-us/azure/virtual-machines/generation-2), проверьте возможность HyperVGenerations, возвращенную в рамках возможностей SKU виртуальной машины в ответ api SKU Microsoft.Compute для региона содержит версию 2 (https://learn.microsoft.com/rest/api/compute/resourceskus/list).
Дополнительные сведения о поддерживаемых типах контроллеров дисков см. в статье https://aka.ms/azure-diskcontrollertypes.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-EnableSecureBoot

Указывает, следует ли включить безопасную загрузку на виртуальной машине.

Тип:Nullable<T>[Boolean]
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-EnableUltraSSD

Позволяет использовать один или несколько управляемых дисков данных с типом учетной записи хранения UltraSSD_LRS на виртуальной машине. Управляемые диски с типом учетной записи хранения UltraSSD_LRS можно добавить на виртуальную машину только в том случае, если это свойство включено.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-EnableVtpm

Указывает, следует ли включить vTPM на виртуальной машине.

Тип:Nullable<T>[Boolean]
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-EncryptionAtHost

Свойство EncryptionAtHost может использоваться пользователем в запросе, чтобы включить или отключить шифрование узла для виртуальной машины или масштабируемого набора виртуальных машин. Это позволит включить шифрование для всех дисков, включая диск Resource/Temp на самом узле. Значение по умолчанию: шифрование на узле будет отключено, если для ресурса не задано значение true.

Тип:SwitchParameter
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-EvictionPolicy

Политика вытеснения для виртуальной машины Azure Spot. Поддерживаемые значения: "Deallocate" и "Delete".

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-HibernationEnabled

Флаг, который включает или отключает возможность гибернации на виртуальной машине.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-HostId

Идентификатор узла

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-IdentityId

Указывает список удостоверений пользователей, связанных с масштабируемым набором виртуальных машин. Ссылки на удостоверения пользователя будут идентификаторами ресурсов ARM в форме: "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/identityes/{identityName}"

Тип:String[]
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-IdentityType

Удостоверение виртуальной машины, если настроено.

Тип:Nullable<T>[ResourceIdentityType]
Допустимые значения:SystemAssigned, UserAssigned, SystemAssignedUserAssigned, None
Position:4
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-ImageReferenceId

Укажите уникальный идентификатор образа общей коллекции для развертывания виртуальной машины. Это можно получить из вызова GET образа общей коллекции.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-LicenseType

Указывает тип лицензии, указывающий, что образ или диск виртуальной машины лицензирован локально. Возможные значения для Windows Server:

  • Windows_Client
  • Windows_Server

Возможные значения операционной системы Linux Server:

  • RHEL_BYOS (для RHEL)
  • SLES_BYOS (для SUSE)
Тип:String
Position:3
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-MaxPrice

Указывает максимальную цену, которую вы готовы платить за низкоприоритетную виртуальную машину или vmSS. Эта цена находится в долларах США. Эта цена будет сравниваться с текущей низкоприоритетной ценой для размера виртуальной машины. Кроме того, цены сравниваются во время создания и обновления низкоприоритетной виртуальной машины/VMSS, а операция будет выполнена только в том случае, если максимальная цена превышает текущую цену с низким приоритетом. MaxPrice также будет использоваться для вытеснения низкоприоритетной виртуальной машины/VMSS, если текущая цена с низким приоритетом выходит за пределы maxPrice после создания vm/VMSS. Возможные значения: любое десятичное значение больше нуля. Пример: 0.01538. -1 указывает, что не следует вытеснить низкоприоритетную виртуальную машину или vmSS по соображениям цен. Кроме того, максимальная цена по умолчанию составляет -1, если она не предоставляется вами.

Тип:Double
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-PlatformFaultDomain

Указывает домен сбоя виртуальной машины.

Тип:Int32
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Priority

Приоритет виртуальной машины. Поддерживаются только значения "Regular", "Spot" и "Low". "Обычный" предназначен для обычной виртуальной машины. "Spot" предназначен для точечных виртуальных машин. "Низкий" также предназначен для точечных виртуальных машин, но заменяется на "Spot". Используйте "Spot" вместо "Low".

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-ProximityPlacementGroupId

Идентификатор ресурса группы размещения близкого взаимодействия для использования с этой виртуальной машиной.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-SecurityType

Указывает тип безопасности виртуальной машины. Для включения UefiSettings необходимо задать любое указанное значение. По умолчанию UefiSettings не будет включен, если это свойство не задано.

Тип:String
Допустимые значения:TrustedLaunch, ConfidentialVM, Standard
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-SharedGalleryImageId

Укажите уникальный идентификатор образа общей коллекции для развертывания виртуальной машины. Это можно получить из вызова GET образа общей коллекции.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Tags

Теги, присоединенные к ресурсу.

Тип:Hashtable
Aliases:Tag
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-UserData

UserData для виртуальной машины, которая будет закодирована в кодировке base-64. Клиент не должен передавать здесь какие-либо секреты.

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-vCPUCountAvailable

Указывает количество виртуальных ЦП, доступных для виртуальной машины. Если это свойство не указано в тексте запроса, поведение по умолчанию — задать для него значение виртуальных ЦП, доступных для этого размера виртуальной машины, предоставляемого в ответе API списка всех доступных размеров виртуальных машин в регионе.

Тип:Int32
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-vCPUCountPerCore

Указывает отношение виртуальных ЦП к физическому ядру. Если это свойство не указано в тексте запроса, поведение по умолчанию присваивается значению vCPUsPerCore для размера виртуальной машины, предоставленного в ответе API списка всех доступных размеров виртуальных машин в регионе. При установке этого свойства значение 1 также означает, что гиперпоток отключен.

Тип:Int32
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-VMName

Указывает имя виртуальной машины.

Тип:String
Aliases:ResourceName, Name
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-VMSize

Указывает размер виртуальной машины. Get-AzComputeResourceSku можно использовать для определения доступных размеров подписки и региона.

Тип:String
Position:1
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-VmssId

Идентификатор масштабируемого набора виртуальных машин

Тип:String
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-Zone

Указывает зону доступности для виртуальной машины. Хотя она принимает массив зон, виртуальные машины не поддерживают несколько зон доступности. Допустимое значение зависит от возможностей региона. Допустимое значение обычно равно 1, 2 или 3. Дополнительные сведения о зонах доступности Azure.

Тип:String[]
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

Входные данные

String

String[]

Hashtable

SwitchParameter

Выходные данные

PSVirtualMachine