你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

说明

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-AzureRm存储Account cmdlet 创建存储帐户。
  • 然后,第三个命令使用 Get-AzureRm存储Account 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 地址(静态或动态)的分配方法。 如果未提供任何值,则分配将是静态的。

Type:String
Accepted values:Static, Dynamic
Position:Named
Default value:Static
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AsJob

在后台运行 cmdlet 并返回作业以跟踪进度。

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

-BackendPoolName

此规模集的负载均衡器中使用的后端地址池的名称。 如果未提供任何值,则会创建一个新的后端池,其名称与规模集相同。

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

-BackendPort

规模集负载均衡器用于与规模集中的 VM 通信的后端端口号。 如果未指定任何值,端口 3389 和 5985 将用于 Windows VMS,端口 22 将用于 Linux VM。

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

-Confirm

提示你在运行 cmdlet 之前进行确认。

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

-Credential

此规模集中 VM 的管理员凭据(用户名和密码)。

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

-DataDiskSizeInGb

指定数据磁盘的大小(以 GB 为单位)。

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

-DefaultProfile

用于与 Azure 通信的凭据、帐户、租户和订阅。

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

-DomainNameLabel

此规模集的公共完全限定域名(FQDN)的域名标签。 这是自动分配给规模集的域名的第一个组件。 自动分配的域名使用窗体(<DomainNameLabel>.<Location>.cloudapp.azure.com)。 如果未提供任何值,则默认域名标签将为连接 <ScaleSetName><ResourceGroupName>

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

-FrontendPoolName

在规模集负载均衡器中使用的前端地址池的名称。 如果未提供任何值,则会创建一个新的前端地址池,其名称与规模集相同。

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

-ImageName

此规模集中 VM 的映像的名称。 如果未提供任何值,将使用“Windows Server 2016 DataCenter”映像。

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

-InstanceCount

规模集中的 VM 映像数。 如果未提供任何值,将创建 2 个实例。

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

-LoadBalancerName

要用于此规模集的负载均衡器的名称。 如果未指定任何值,将使用与规模集相同的名称创建新的负载均衡器。

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

-Location

要在其中创建此规模集的 Azure 位置。 如果未指定任何值,将从参数中引用的其他资源的位置推断位置。

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

-NatBackendPort

入站网络地址转换的后端端口。

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

-PublicIpAddressName

要用于此规模集的公共 IP 地址的名称。 如果未提供任何值,则会创建与规模集同名的新公共 IPAddress。

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

-ResourceGroupName

指定 VMSS 的资源组的名称。 如果未指定任何值,将使用与规模集相同的名称创建新的 ResourceGroup。

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

-SecurityGroupName

要应用于此规模集的网络安全组的名称。 如果未提供任何值,则会创建与规模集同名的默认网络安全组,并将其应用于规模集。

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

-SinglePlacementGroup

使用它在单个放置组中创建规模集,默认值为多个组

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

-SubnetAddressPrefix

此 ScaleSet 将使用的子网的地址前缀。 如果未提供任何值,将应用默认子网设置(192.168.1.0/24)。

Type:String
Position:Named
Default value:192.168.1.0/24
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SubnetName

要用于此规模集的子网的名称。 如果未提供任何值,将使用与规模集相同的名称创建新子网。

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

-SystemAssignedIdentity

如果参数存在,则规模集中的 VM(是)分配了自动生成的托管系统标识。

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

-UpgradePolicyMode

此规模集中 VM 实例的升级策略模式。 升级策略可以指定自动、手动或滚动升级。

Type:UpgradeMode
Accepted values:Automatic, Manual, Rolling
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UserAssignedIdentity

应分配给规模集中 VM 的托管服务标识的名称。

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

-VirtualMachineScaleSet

指定 VirtualMachineScaleSet 对象,该对象包含此 cmdlet 创建的 VMSS 的属性。

Type:PSVirtualMachineScaleSet
Position:3
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-VirtualNetworkName

要用于此规模集的虚拟网络的名称。 如果未提供任何值,则会创建与规模集同名的新虚拟网络。

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

-VMScaleSetName

指定此 cmdlet 创建的 VMSS 的名称。

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

-VmSize

此规模集中 VM 实例的大小。 如果未指定大小,将使用默认大小(Standard_DS1_v2)。

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

-VnetAddressPrefix

用于此规模集的虚拟网络的地址前缀。 如果未提供任何值,将使用默认虚拟网络地址前缀设置(192.168.0.0/16)。

Type:String
Position:Named
Default value:192.168.0.0/16
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

显示运行该 cmdlet 时会发生什么情况。 cmdlet 未运行。

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

-Zone

表示为资源分配的 IP 需要来自的可用性区域列表。

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

输入

String

PSVirtualMachineScaleSet

参数:VirtualMachineScaleSet (ByValue)

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

输出

PSVirtualMachineScaleSet