共用方式為


New-AzureRmVmss

建立 VMSS。

警告

自 2024 年 2 月 29 日起,AzureRM PowerShell 模組已正式淘汰。 建議使用者從 AzureRM 遷移至 Az PowerShell 模組,以確保持續支援和更新。

雖然 AzureRM 模組可能仍可運作,但不再維護或支援它,但會根據用戶的判斷權和風險放置任何繼續使用。 如需轉換至 Az 模組的指引,請參閱我們的 移轉資源

語法

New-AzureRmVmss
   [-ResourceGroupName] <String>
   [-VMScaleSetName] <String>
   [-VirtualMachineScaleSet] <PSVirtualMachineScaleSet>
   [-AsJob]
   [-DefaultProfile <IAzureContextContainer>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
New-AzureRmVmss
   [[-ResourceGroupName] <String>]
   [-VMScaleSetName] <String>
   [-AsJob]
   [-ImageName <String>]
   -Credential <PSCredential>
   [-InstanceCount <Int32>]
   [-VirtualNetworkName <String>]
   [-SubnetName <String>]
   [-PublicIpAddressName <String>]
   [-DomainNameLabel <String>]
   [-SecurityGroupName <String>]
   [-LoadBalancerName <String>]
   [-BackendPort <Int32[]>]
   [-Location <String>]
   [-VmSize <String>]
   [-UpgradePolicyMode <UpgradeMode>]
   [-AllocationMethod <String>]
   [-VnetAddressPrefix <String>]
   [-SubnetAddressPrefix <String>]
   [-FrontendPoolName <String>]
   [-BackendPoolName <String>]
   [-SystemAssignedIdentity]
   [-UserAssignedIdentity <String>]
   [-Zone <System.Collections.Generic.List`1[System.String]>]
   [-NatBackendPort <Int32[]>]
   [-DataDiskSizeInGb <Int32[]>]
   [-DefaultProfile <IAzureContextContainer>]
   [-SinglePlacementGroup]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Description

New-AzureRmVmss Cmdlet 會在 Azure 中建立虛擬機擴展集 (VMSS)。 使用簡單的參數集 (SimpleParameterSet) 快速建立預先設定的 VMSS 和相關資源。 當您需要在建立之前精確設定 VMSS 的每個元件和每個相關聯的資源時,請針對更進階的案例使用預設參數集 (DefaultParameter)。

範例

範例 1:使用 **'SimpleParameterSet'** 建立 VMSS

$vmssName = <VMSSNAME>
# Create credentials, I am using one way to create credentials, there are others as well.
# Pick one that makes the most sense according to your use case.
$vmPassword = ConvertTo-SecureString <PASSWORD_HERE> -AsPlainText -Force
$vmCred = New-Object System.Management.Automation.PSCredential(<USERNAME_HERE>, $vmPassword)

#Create a VMSS using the default settings
New-AzureRmVmss -Credential $vmCred -VMScaleSetName $vmssName

上述指令會使用 名稱 $vmssName 建立下列命令:

  • 資源群組
  • 虛擬網路
  • 負載平衡器
  • 公用 IP
  • 具有 2 個實例的 VMSS

為 VMSS 中 VM 選擇的預設映像為 2016-Datacenter Windows Server ,而 SKU 為 Standard_DS1_v2

範例 2:使用 **'DefaultParameterSet'** 建立 VMSS

# Common
$LOC = "WestUs";
$RGName = "rgkyvms";

New-AzureRmResourceGroup -Name $RGName -Location $LOC -Force;

# SRP
$STOName = "STO" + $RGName;
$STOType = "Standard_GRS";
New-AzureRmStorageAccount -ResourceGroupName $RGName -Name $STOName -Location $LOC -Type $STOType;
$STOAccount = Get-AzureRmStorageAccount -ResourceGroupName $RGName -Name $STOName;

# NRP
$SubNet = New-AzureRmVirtualNetworkSubnetConfig -Name ("subnet" + $RGName) -AddressPrefix "10.0.0.0/24";
$VNet = New-AzureRmVirtualNetwork -Force -Name ("vnet" + $RGName) -ResourceGroupName $RGName -Location $LOC -AddressPrefix "10.0.0.0/16" -DnsServer "10.1.1.1" -Subnet $SubNet;
$VNet = Get-AzureRmVirtualNetwork -Name ('vnet' + $RGName) -ResourceGroupName $RGName;
$SubNetId = $VNet.Subnets[0].Id;

$PubIP = New-AzureRmPublicIpAddress -Force -Name ("PubIP" + $RGName) -ResourceGroupName $RGName -Location $LOC -AllocationMethod Dynamic -DomainNameLabel ("PubIP" + $RGName);
$PubIP = Get-AzureRmPublicIpAddress -Name ("PubIP"  + $RGName) -ResourceGroupName $RGName;

# Create LoadBalancer
$FrontendName = "fe" + $RGName
$BackendAddressPoolName = "bepool" + $RGName
$ProbeName = "vmssprobe" + $RGName
$InboundNatPoolName  = "innatpool" + $RGName
$LBRuleName = "lbrule" + $RGName
$LBName = "vmsslb" + $RGName

$Frontend = New-AzureRmLoadBalancerFrontendIpConfig -Name $FrontendName -PublicIpAddress $PubIP
$BackendAddressPool = New-AzureRmLoadBalancerBackendAddressPoolConfig -Name $BackendAddressPoolName
$Probe = New-AzureRmLoadBalancerProbeConfig -Name $ProbeName -RequestPath healthcheck.aspx -Protocol http -Port 80 -IntervalInSeconds 15 -ProbeCount 2
$InboundNatPool = New-AzureRmLoadBalancerInboundNatPoolConfig -Name $InboundNatPoolName  -FrontendIPConfigurationId `
    $Frontend.Id -Protocol Tcp -FrontendPortRangeStart 3360 -FrontendPortRangeEnd 3362 -BackendPort 3370;
$LBRule = New-AzureRmLoadBalancerRuleConfig -Name $LBRuleName `
    -FrontendIPConfiguration $Frontend -BackendAddressPool $BackendAddressPool `
    -Probe $Probe -Protocol Tcp -FrontendPort 80 -BackendPort 80 `
    -IdleTimeoutInMinutes 15 -EnableFloatingIP -LoadDistribution SourceIP;
$ActualLb = New-AzureRmLoadBalancer -Name $LBName -ResourceGroupName $RGName -Location $LOC `
    -FrontendIpConfiguration $Frontend -BackendAddressPool $BackendAddressPool `
    -Probe $Probe -LoadBalancingRule $LBRule -InboundNatPool $InboundNatPool;
$ExpectedLb = Get-AzureRmLoadBalancer -Name $LBName -ResourceGroupName $RGName

# New VMSS Parameters
$VMSSName = "VMSS" + $RGName;

$AdminUsername = "Admin01";
$AdminPassword = "p4ssw0rd@123" + $RGName;

$PublisherName = "MicrosoftWindowsServer"
$Offer         = "WindowsServer"
$Sku           = "2012-R2-Datacenter"
$Version       = "latest"

$VHDContainer = "https://" + $STOName + ".blob.core.contoso.net/" + $VMSSName;

$ExtName = "CSETest";
$Publisher = "Microsoft.Compute";
$ExtType = "BGInfo";
$ExtVer = "2.1";

#IP Config for the NIC
$IPCfg = New-AzureRmVmssIPConfig -Name "Test" `
    -LoadBalancerInboundNatPoolsId $ExpectedLb.InboundNatPools[0].Id `
    -LoadBalancerBackendAddressPoolsId $ExpectedLb.BackendAddressPools[0].Id `
    -SubnetId $SubNetId;

#VMSS Config
$VMSS = New-AzureRmVmssConfig -Location $LOC -SkuCapacity 2 -SkuName "Standard_A2" -UpgradePolicyMode "Automatic" `
    | Add-AzureRmVmssNetworkInterfaceConfiguration -Name "Test" -Primary $True -IPConfiguration $IPCfg `
    | Add-AzureRmVmssNetworkInterfaceConfiguration -Name "Test2"  -IPConfiguration $IPCfg `
    | Set-AzureRmVmssOSProfile -ComputerNamePrefix "Test"  -AdminUsername $AdminUsername -AdminPassword $AdminPassword `
    | Set-AzureRmVmssStorageProfile -Name "Test"  -OsDiskCreateOption 'FromImage' -OsDiskCaching "None" `
    -ImageReferenceOffer $Offer -ImageReferenceSku $Sku -ImageReferenceVersion $Version `
    -ImageReferencePublisher $PublisherName -VhdContainer $VHDContainer `
    | Add-AzureRmVmssExtension -Name $ExtName -Publisher $Publisher -Type $ExtType -TypeHandlerVersion $ExtVer -AutoUpgradeMinorVersion $True

#Create the VMSS
New-AzureRmVmss -ResourceGroupName $RGName -Name $VMSSName -VirtualMachineScaleSet $VMSS;

上述複雜範例會建立 VMSS,以下是所發生狀況的說明:

  • 第一個命令會建立具有指定名稱和位置的資源群組。
  • 第二個命令會使用 New-AzureRmStorageAccount Cmdlet 來建立記憶體帳戶。
  • 第三個命令接著會使用 Get-AzureRmStorageAccount Cmdlet 來取得在第二個命令中建立的記憶體帳戶,並將結果儲存在$STOAccount變數中。
  • 第五個命令會使用 New-AzureRmVirtualNetworkSubnetConfig Cmdlet 來建立子網,並將結果儲存在名為 $SubNet 的變數中。
  • 第六個命令會使用 New-AzureRmVirtualNetwork Cmdlet 來建立虛擬網路,並將結果儲存在名為 $VNet 的變數中。
  • 第七個命令會 使用 Get-AzureRmVirtualNetwork 來取得第六個命令中建立之虛擬網路的相關信息,並將資訊儲存在名為 $VNet 的變數中。
  • 第八和第九個命令會使用 New-AzureRmPublicIpAddressGet- AzureRmPublicIpAddress 從該公用 IP 位址建立和取得資訊。
  • 命令會將資訊儲存在名為 $PubIP的變數中。
  • 第十個命令會使用 New- AzureRmLoadBalancerFrontendIpConfig Cmdlet 來建立前端負載平衡器,並將結果儲存在名為 $Frontend 的變數中。
  • 第十一個命令會使用 New-AzureRmLoadBalancerBackendAddressPoolConfig 來建立後端位址池組態,並將結果儲存在名為 $BackendAddressPool 的變數中。
  • 第十二個命令會使用 New-AzureRmLoadBalancerProbeConfig 來建立探查,並將探查資訊儲存在名為 $Probe 的變數中。
  • 第十三個命令會使用 New-AzureRmLoadBalancerInboundNatPoolConfig Cmdlet 來建立負載平衡器輸入網路地址轉換 (NAT) 集區組態。
  • 第十四個命令會使用 New-AzureRmLoadBalancerRuleConfig 來建立負載平衡器規則組態,並將結果儲存在名為 $LBRule 的變數中。
  • 第十五個命令會使用 New-AzureRmLoadBalancer Cmdlet 來建立負載平衡器,並將結果儲存在名為 $ActualLb 的變數中。
  • 第十六個命令會 使用 Get-AzureRmLoadBalancer 來取得第十五個命令中建立之負載平衡器的相關信息,並將資訊儲存在名為 $ExpectedLb 的變數中。
  • 第十七個命令會使用 New-AzureRmVmssIPConfig Cmdlet 來建立 VMSS IP 組態,並將資訊儲存在名為 $IPCfg 的變數中。
  • 第十八個命令會使用 New-AzureRmVmssConfig Cmdlet來建立 VMSS 組態物件,並將結果儲存在名為 $VMSS的變數中。
  • 第十九個命令會使用 New-AzureRmVmss Cmdlet 來建立 VMSS。

參數

-AllocationMethod

擴展集公用IP位址的配置方法(靜態或動態)。 如果未提供任何值,配置將會是靜態的。

類型:String
接受的值:Static, Dynamic
Position:Named
預設值:Static
必要:False
接受管線輸入:False
接受萬用字元:False

-AsJob

在背景執行 Cmdlet,並傳回作業以追蹤進度。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-BackendPoolName

此擴展集在負載平衡器中使用的後端位址池名稱。 如果未提供任何值,將會建立新的後端集區,且名稱與擴展集相同。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-BackendPort

擴展集負載平衡器用來與擴展集中 VM 通訊的後埠號碼。 如果未指定任何值,則埠 3389 和 5985 將用於 Windows VM,而埠 22 將用於 Linux VM。

類型:Int32[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Confirm

執行 Cmdlet 之前先提示您確認。

類型:SwitchParameter
別名:cf
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-Credential

此擴展集中 VM 的系統管理員認證(使用者名稱和密碼)。

類型:PSCredential
Position:Named
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-DataDiskSizeInGb

指定以 GB 為單位的數據磁碟大小。

類型:Int32[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-DefaultProfile

用於與 azure 通訊的認證、帳戶、租用戶和訂用帳戶。

類型:IAzureContextContainer
別名:AzureRmContext, AzureCredential
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-DomainNameLabel

此擴展集之公用完整功能變數名稱 (FQDN) 的功能變數名稱卷標。 這是自動指派給擴展集之功能變數名稱的第一個元件。 自動指派的功能變數名稱會使用表單 (<DomainNameLabel>.<Location>.cloudapp.azure.com)。 如果未提供任何值,預設功能變數名稱標籤將會是和<ResourceGroupName><ScaleSetName>串連。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-FrontendPoolName

在擴展集負載平衡器中使用的前端位址池名稱。 如果未提供任何值,將會建立新的前端位址池,其名稱與擴展集相同。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ImageName

此擴展集中 VM 的映像名稱。 如果未提供任何值,則會使用 「Windows Server 2016 DataCenter」 映射。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-InstanceCount

擴展集中的 VM 映射數目。 如果未提供任何值,則會建立 2 個實例。

類型:Int32
Position:Named
預設值:2
必要:False
接受管線輸入:False
接受萬用字元:False

-LoadBalancerName

要與這個擴展集搭配使用的負載平衡器名稱。 如果未指定任何值,將會建立與擴展集同名的新負載平衡器。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Location

將建立此擴展集的 Azure 位置。 如果未指定任何值,則會從參數中參考的其他資源位置推斷位置。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-NatBackendPort

輸入網路地址轉譯的後埠。

類型:Int32[]
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-PublicIpAddressName

要與這個擴展集搭配使用的公用IP位址名稱。 如果未提供任何值,將會建立名稱與擴展集相同的新公用IPAddress。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ResourceGroupName

指定 VMSS 的資源群組名稱。 如果未指定任何值,將會使用與擴展集相同的名稱來建立新的 ResourceGroup。

類型:String
Position:1
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-SecurityGroupName

要套用至此擴展集的網路安全組名稱。 如果未提供任何值,則會建立名稱與擴展集相同的默認網路安全組,並套用至擴展集。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-SinglePlacementGroup

使用此方式在單一放置群組中建立擴展集,預設值為多個群組

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-SubnetAddressPrefix

此 ScaleSet 將使用之子網的地址前綴。 如果未提供任何值,則會套用預設子網設定 (192.168.1.0/24)。

類型:String
Position:Named
預設值:192.168.1.0/24
必要:False
接受管線輸入:False
接受萬用字元:False

-SubnetName

要與這個擴展集搭配使用的子網名稱。 如果未提供任何值,則會使用與擴展集相同的名稱來建立新的子網。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-SystemAssignedIdentity

如果參數存在,擴展集中的 VM 會指派自動產生的受控系統識別。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-UpgradePolicyMode

此擴展集中 VM 實例的升級原則模式。 升級原則可以指定自動、手動或滾動升級。

類型:UpgradeMode
接受的值:Automatic, Manual, Rolling
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-UserAssignedIdentity

應指派給擴展集中 VM 的受控服務識別名稱。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-VirtualMachineScaleSet

指定 VirtualMachineScaleSet 物件,其中包含此 Cmdlet 所建立之 VMSS 的屬性。

類型:PSVirtualMachineScaleSet
Position:3
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-VirtualNetworkName

要與這個擴展集搭配使用的 虛擬網絡 名稱。 如果未提供任何值,將會建立名稱與擴展集相同的新虛擬網路。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-VMScaleSetName

指定此 Cmdlet 所建立的 VMSS 名稱。

類型:String
別名:Name
Position:2
預設值:None
必要:True
接受管線輸入:True
接受萬用字元:False

-VmSize

此擴展集中 VM 實例的大小。 如果未指定 Size,則會使用預設大小 (Standard_DS1_v2)。

類型:String
Position:Named
預設值:Standard_DS1_v2
必要:False
接受管線輸入:False
接受萬用字元:False

-VnetAddressPrefix

與這個擴展集搭配使用的虛擬網路位址前綴。 如果未提供任何值,則會使用預設虛擬網路位址前綴設定 (192.168.0.0/16)。

類型:String
Position:Named
預設值:192.168.0.0/16
必要:False
接受管線輸入:False
接受萬用字元:False

-WhatIf

顯示執行 Cmdlet 後會發生的情況。 未執行 Cmdlet。

類型:SwitchParameter
別名:wi
Position:Named
預設值:False
必要:False
接受管線輸入:False
接受萬用字元:False

-Zone

可用性區域清單,表示為資源配置的IP必須來自。

類型:List<T>[String]
Position:Named
預設值:None
必要:False
接受管線輸入:True
接受萬用字元:False

輸入

String

PSVirtualMachineScaleSet

參數:VirtualMachineScaleSet (ByValue)

List<T>[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]

輸出

PSVirtualMachineScaleSet