다음을 통해 공유


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

Description

New-AzVMConfig cmdlet은 Azure에 대해 구성 가능한 로컬 가상 머신 개체를 만듭니다.

다음 cmdlet은 가상 머신 개체의 다른 속성을 설정하는 데 사용됩니다.

예제

예제 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 -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 -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 보안 유형에 대해 Virtual Machine Config 개체를 사용하여 VM을 만들고, 플래그 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
$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;

이 예제에서는 TrustedLaunch 보안 유형에 대해 VMConfig 개체를 사용하여 VM을 만들고 플래그 VtpmEnabled 및 SecureBootEnabled가 기본적으로 true인지 확인합니다.

매개 변수

-AvailabilitySetId

가용성 집합의 ID를 지정합니다. 가용성 집합 개체를 가져오려면 Get-AzAvailabilitySet cmdlet을 사용합니다. 가용성 집합 개체에는 ID 속성이 포함되어 있습니다.
동일한 가용성 집합에 지정된 가상 머신은 가용성을 최대화하기 위해 다른 노드에 할당됩니다.
가용성 집합에 대한 자세한 내용은 가상 머신의 가용성 관리를 참조 하세요.
Azure 계획된 유지 관리에 대한 자세한 내용은 Azure의 가상 머신에 대한 계획된 유지 관리를 참조 하세요.
현재 VM은 생성 시 가용성 집합에만 추가할 수 있습니다. VM이 추가되는 가용성 집합은 가용성 집합 리소스와 동일한 리소스 그룹 아래에 있어야 합니다. 기존 VM은 가용성 집합에 추가할 수 없습니다.
이 속성은 null이 아닌 properties.virtualMachineScaleSet 참조와 함께 존재할 수 없습니다.

형식:String
Position:2
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-CapacityReservationGroupId

할당하는 데 사용되는 용량 예약 그룹의 ID입니다.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-DefaultProfile

Azure와의 통신에 사용되는 자격 증명, 계정, 테넌트 및 구독입니다.

형식:IAzureContextContainer
별칭:AzContext, AzureRmContext, AzureCredential
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-DiskControllerType

VM 및 VirtualMachineScaleSet에 대해 구성된 디스크 컨트롤러 유형을 지정합니다. 이 속성은 운영 체제 디스크 및 VM sku가 2세대(https://learn.microsoft.com/en-us/azure/virtual-machines/generation-2)를 지원하는 가상 머신에 대해서만 지원됩니다. 지역에 대한 Microsoft.Compute SKU API의 응답에서 VM sku 기능의 일부로 반환된 HyperVGenerations 기능에 V2(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

기능이 VM에 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 속성을 사용하여 가상 머신 또는 가상 머신 확장 집합에 대한 호스트 암호화를 사용하거나 사용하지 않도록 설정할 수 있습니다. 이렇게 하면 호스트 자체의 리소스/임시 디스크를 비롯한 모든 디스크에 대한 암호화가 활성화됩니다. 기본값: 리소스에 대해 이 속성을 true로 설정하지 않으면 호스트의 암호화가 비활성화됩니다.

형식:SwitchParameter
Position:Named
Default value:False
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-EvictionPolicy

Azure Spot 가상 머신에 대한 제거 정책입니다. 지원되는 값은 '할당 취소' 및 '삭제'입니다.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-HibernationEnabled

VM에서 최대 절전 모드 기능을 사용하거나 사용하지 않도록 설정하는 플래그입니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-HostId

호스트의 ID

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-IdentityId

가상 머신 확장 집합과 연결된 사용자 ID 목록을 지정합니다. 사용자 ID 참조는 '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/identities/{identityName}' 형식의 ARM 리소스 ID입니다.

형식:String[]
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-IdentityType

구성된 경우 가상 머신의 ID입니다.

형식:Nullable<T>[ResourceIdentityType]
허용되는 값:SystemAssigned, UserAssigned, SystemAssignedUserAssigned, None
Position:4
Default value:None
필수:True
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-ImageReferenceId

vm 배포에 대한 공유 갤러리 이미지 고유 ID를 지정했습니다. 공유 갤러리 이미지 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

우선 순위가 낮은 VM/VMSS에 대해 지불할 최대 가격을 지정합니다. 이 가격은 미국 달러입니다. 이 가격은 VM 크기에 대한 현재 낮은 우선 순위 가격과 비교됩니다. 또한 낮은 우선 순위 VM/VMSS를 생성/업데이트할 때 가격을 비교하며 maxPrice가 현재 낮은 우선 순위 가격보다 큰 경우에만 작업이 성공합니다. 현재 낮은 우선 순위 가격이 VM/VMSS를 만든 후 maxPrice를 초과하는 경우 maxPrice는 우선 순위가 낮은 VM/VMSS를 제거하는 데도 사용됩니다. 가능한 값은 0보다 큰 10진수 값입니다. 예: 0.01538. -1은 가격상의 이유로 우선 순위가 낮은 VM/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'은 스폿 가상 머신을 위한 것입니다. 'Low'는 스폿 가상 머신용이지만 '스폿'으로 대체됩니다. '낮음' 대신 'Spot'을 사용하세요.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-ProximityPlacementGroupId

이 가상 머신에 사용할 근접 배치 그룹의 리소스 ID입니다.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-SecurityType

가상 머신의 SecurityType을 지정합니다. UefiSettings를 사용하도록 설정하려면 지정된 값으로 설정해야 합니다. 이 속성을 설정하지 않으면 기본적으로 UefiSettings를 사용할 수 없습니다.

형식:String
허용되는 값:TrustedLaunch, ConfidentialVM, Standard
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-SharedGalleryImageId

vm 배포에 대한 공유 갤러리 이미지 고유 ID를 지정했습니다. 공유 갤러리 이미지 GET 호출에서 가져올 수 있습니다.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Tags

리소스에 연결된 태그입니다.

형식:Hashtable
별칭:Tag
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-UserData

Base-64로 인코딩되는 VM에 대한 UserData입니다. 고객은 여기에 비밀을 전달해서는 안됩니다.

형식:String
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-vCPUCountAvailable

VM에 사용할 수 있는 vCPU 수를 지정합니다. 이 속성이 요청 본문에 지정되지 않은 경우 기본 동작은 해당 지역의 사용 가능한 모든 가상 머신 크기 나열의 api 응답에 노출된 해당 VM 크기에 사용할 수 있는 vCPU 값으로 설정하는 것입니다.

형식:Int32
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-vCPUCountPerCore

vCPU와 물리적 코어 비율을 지정합니다. 요청 본문에 이 속성이 지정되지 않은 경우 기본 동작은 지역에서 사용 가능한 모든 가상 머신 크기 목록의 api 응답에 노출된 VM 크기에 대한 vCPUsPerCore 값으로 설정됩니다. 또한 이 속성을 1로 설정하면 하이퍼 스레딩이 비활성화됩니다.

형식:Int32
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-VMName

가상 머신의 이름을 지정합니다.

형식:String
별칭:ResourceName, Name
Position:0
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-VMSize

가상 머신의 크기를 지정합니다. Get-AzComputeResourceSku 를 사용하여 구독 및 지역에 사용 가능한 크기를 확인할 수 있습니다.

형식:String
Position:1
Default value:None
필수:True
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-VmssId

가상 머신 확장 집합의 ID

형식: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