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 可用來設定虛擬機物件的不同屬性:
- Add-AzVMNetworkInterface 以設定網路配置檔。
- Set-AzVMOperatingSystem 可設定 OS 配置檔。
- Set-AzVMSourceImage 可設定來源映像。
- Set-AzVMOSDisk 以設定 OS 磁碟(記憶體配置檔)。
- Get-AzComputeResourceSku 也可以用來找出訂用帳戶和區域的可用虛擬機大小。
如需教學課程,請參閱 快速入門:使用 PowerShell 在 Azure 中建立 Windows 虛擬機。
範例
範例 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 安全性類型的虛擬機 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
指定可用性設定組的識別碼。
若要取得可用性設定組物件,請使用 Get-AzAvailabilitySet Cmdlet。
可用性設定組物件包含ID屬性。
相同可用性設定組中指定的虛擬機會配置給不同的節點,以將可用性最大化。
如需可用性設定組的詳細資訊,請參閱 管理虛擬機的可用性。
如需 Azure 計劃性維護的詳細資訊,請參閱 Azure 中虛擬機的計劃性維護
目前,VM 只能在建立時新增至可用性設定組。 要新增 VM 的可用性設定組應該位於與可用性設定組資源相同的資源群組之下。 現有的 VM 無法新增至可用性設定組。
這個屬性不能與非 Null properties.virtualMachineScaleSet 參考一起存在。
類型: | String |
Position: | 2 |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-CapacityReservationGroupId
用來配置的容量保留群組標識碼。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-DefaultProfile
用於與 azure 通訊的認證、帳戶、租用戶和訂用帳戶。
類型: | IAzureContextContainer |
別名: | AzContext, AzureRmContext, AzureCredential |
Position: | Named |
預設值: | 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 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-EnableSecureBoot
指定是否應在虛擬機上啟用安全開機。
類型: | Nullable<T>[Boolean] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-EnableUltraSSD
讓能夠在 VM 上具有一或多個具有UltraSSD_LRS記憶體帳戶類型的受控數據磁碟。 只有啟用此屬性,才能將具有記憶體帳戶類型的受控磁碟UltraSSD_LRS新增至虛擬機。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-EnableVtpm
指定是否應在虛擬機上啟用 vTPM。
類型: | Nullable<T>[Boolean] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-EncryptionAtHost
加密AtHost 屬性可由要求中的用戶用來啟用或停用虛擬機或虛擬機擴展集的主機加密。 這會啟用所有磁碟的加密,包括主機本身的資源/暫存磁碟。 默認值:除非資源將此屬性設定為 true,否則將會停用主機的加密。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-EvictionPolicy
Azure Spot 虛擬機的收回原則。 支援的值為 'Deallocate' 和 'Delete'。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-HibernationEnabled
啟用或停用 VM 上休眠功能的旗標。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-HostId
主機的標識碼
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-IdentityId
指定與虛擬機擴展集相關聯的使用者身分識別清單。 使用者身分識別參考的格式為 ARM 資源標識符:'/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/identities/{identityName}'
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-IdentityType
如果已設定,則為虛擬機的身分識別。
類型: | Nullable<T>[ResourceIdentityType] |
接受的值: | SystemAssigned, UserAssigned, SystemAssignedUserAssigned, None |
Position: | 4 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-ImageReferenceId
指定 vm 部署的共享資源庫映像唯一標識碼。 這可以從共用資源庫映像 GET 呼叫擷取。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-LicenseType
指定授權類型,指出虛擬機的映像或磁碟已獲內部部署授權。 Windows Server 的可能值為:
- Windows_Client
- Windows_Server
Linux Server 操作系統的可能值為:
- RHEL_BYOS (RHEL)
- SLES_BYOS (適用於 SUSE)
類型: | String |
Position: | 3 |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-MaxPrice
指定您願意支付低優先順序 VM/VMSS 的最高價格。 這個價格以美元為單位。 此價格會與 VM 大小的目前低優先順序價格進行比較。 此外,價格會在建立/更新低優先順序 VM/VMSS 時進行比較,只有在 maxPrice 大於目前的低優先順序價格時,作業才會成功。 如果目前的低優先順序價格超出建立 VM/VMSS 之後的 maxPrice,maxPrice 也會用於收回低優先順序的 VM/VMSS。 可能的值為:任何大於零的十進位值。 範例:0.01538。 -1 表示基於價格原因,不應收回低優先順序的 VM/VMSS。 此外,如果預設的最大價格不是由您提供,則為 -1。
類型: | Double |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-PlatformFaultDomain
指定虛擬機的容錯網域。
類型: | Int32 |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Priority
虛擬機的優先順序。 只有支援的值為 『Regular』、'Spot' 和 'Low'。 「一般」適用於一般虛擬機。 「現成」適用於現成虛擬機。 「低」也適用於現成虛擬機,但會取代為「現成」。 請使用 'Spot' 而不是 'Low'。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-ProximityPlacementGroupId
要與這個虛擬機搭配使用的鄰近放置群組的資源標識符。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-SecurityType
指定虛擬機的 SecurityType。 它必須設定為任何指定的值,才能啟用 UefiSettings。 根據預設,除非設定此屬性,否則不會啟用 UefiSettings。
類型: | String |
接受的值: | TrustedLaunch, ConfidentialVM, Standard |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-SharedGalleryImageId
指定 vm 部署的共享資源庫映像唯一標識碼。 這可以從共用資源庫映像 GET 呼叫擷取。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Tags
附加至資源的標記。
類型: | Hashtable |
別名: | Tag |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-UserData
VM 的 UserData,其會以base-64編碼。 客戶不應在此傳遞任何秘密。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-vCPUCountAvailable
指定 VM 可用的 vCPU 數目。 當要求本文中未指定此屬性時,預設行為是將它設定為 API 回應 中公開之 VM 大小的 vCPU 值,以列出區域中所有可用的虛擬機大小。
類型: | Int32 |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-vCPUCountPerCore
指定 vCPU 與實體核心比率。 當要求本文中未指定這個屬性時,預設行為會設定為 vCPUUsPerCore 的值,以取得在區域中列出所有可用虛擬機大小的 API 回應中公開的 VM 大小。 將此屬性設定為 1 也表示已停用超線程處理。
類型: | Int32 |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-VMName
指定虛擬機的名稱。
類型: | String |
別名: | ResourceName, Name |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-VMSize
指定虛擬機的大小。 Get-AzComputeResourceSku 可用來找出訂用帳戶和區域的可用大小。
類型: | String |
Position: | 1 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-VmssId
虛擬機擴展集的標識碼
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Zone
指定虛擬機的可用性區域。 雖然它採用區域陣列,但虛擬機不支援多個可用性區域。 允許的值取決於區域的功能。 允許的值通常為 1、2 或 3。 Azure 可用性區域的詳細資訊。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
輸入
String[]