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

Set-AzVmssOsProfile

设置 VMSS 操作系统配置文件属性。

语法

Set-AzVmssOsProfile
   [-VirtualMachineScaleSet] <PSVirtualMachineScaleSet>
   [[-ComputerNamePrefix] <String>]
   [[-AdminUsername] <String>]
   [[-AdminPassword] <String>]
   [[-CustomData] <String>]
   [[-WindowsConfigurationProvisionVMAgent] <Boolean>]
   [-LinuxConfigurationProvisionVMAgent <Boolean>]
   [[-WindowsConfigurationEnableAutomaticUpdate] <Boolean>]
   [[-TimeZone] <String>]
   [[-AdditionalUnattendContent] <AdditionalUnattendContent[]>]
   [[-Listener] <WinRMListener[]>]
   [[-LinuxConfigurationDisablePasswordAuthentication] <Boolean>]
   [[-PublicKey] <SshPublicKey[]>]
   [[-Secret] <VaultSecretGroup[]>]
   [-WindowsConfigurationPatchMode <String>]
   [-LinuxConfigurationPatchMode <String>]
   [-EnableHotpatching]
   [-DefaultProfile <IAzureContextContainer>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

说明

Set-AzVmssOsProfile cmdlet 设置虚拟机规模集操作系统配置文件属性。

示例

示例 1:设置 VMSS 的操作系统配置文件属性

$vmss = New-AzVmssConfig -Location $Loc -SkuCapacity 2 -SkuName "Standard_A0" -UpgradePolicyMode "Automatic" -NetworkInterfaceConfiguration $NetCfg
Set-AzVmssOsProfile -VirtualMachineScaleSet $vmss -ComputerNamePrefix "Test" -AdminUsername $AdminUsername -AdminPassword $AdminPassword

此命令设置$vmss对象的操作系统配置文件属性。 该命令将 VMSS 中所有虚拟机实例的计算机名称前缀设置为测试并提供管理员用户名和密码。

示例 2:在启用了热修补的灵活模式下设置 Vm 的操作系统配置文件属性。

# Setup variables.
$loc = "eastus";
$rgname = "<Resource Group Name>";
$vmssName = "myVmssSlb";
$vmNamePrefix = "vmSlb";
$vmssInstanceCount = 5;
$vmssSku = "Standard_DS1_v2";
$vnetname = "myVnet";
$vnetAddress = "10.0.0.0/16";
$subnetname = "default-slb";
$subnetAddress = "10.0.2.0/24";
$securePassword = "<Password>" | ConvertTo-SecureString -AsPlainText -Force;  
$cred = New-Object System.Management.Automation.PSCredential ("<Username>", $securePassword);

# VMSS Flex requires explicit outbound access.
# Create a virtual network.
$frontendSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetname -AddressPrefix $subnetAddress;
$virtualNetwork = New-AzVirtualNetwork -Name $vnetname -ResourceGroupName $rgname -Location $loc -AddressPrefix $vnetAddress -Subnet $frontendSubnet;

# Create a public IP address.
$publicIP = New-AzPublicIpAddress `
    -ResourceGroupName $rgname `
    -Location $loc `
    -AllocationMethod Static `
    -Sku "Standard" `
    -IpAddressVersion "IPv4" `
    -Name "myLBPublicIP";

# Create a frontend and backend IP pool.
$frontendIP = New-AzLoadBalancerFrontendIpConfig `
    -Name "myFrontEndPool" `
    -PublicIpAddress $publicIP;

$backendPool = New-AzLoadBalancerBackendAddressPoolConfig -Name "myBackEndPool" ;

# Create the load balancer.
$lb = New-AzLoadBalancer `
    -ResourceGroupName $rgname `
    -Name "myLoadBalancer" `
    -Sku "Standard" `
    -Tier "Regional" `
    -Location $loc `
    -FrontendIpConfiguration $frontendIP `
    -BackendAddressPool $backendPool;

# Create a load balancer health probe for TCP port 80.
Add-AzLoadBalancerProbeConfig -Name "myHealthProbe" `
    -LoadBalancer $lb `
    -Protocol TCP `
    -Port 80 `
    -IntervalInSeconds 15 `
    -ProbeCount 2;

# Create a load balancer rule to distribute traffic on port TCP 80.
# The health probe from the previous step is used to make sure that traffic is
# only directed to healthy VM instances.
Add-AzLoadBalancerRuleConfig `
    -Name "myLoadBalancerRule" `
    -LoadBalancer $lb `
    -FrontendIpConfiguration $lb.FrontendIpConfigurations[0] `
    -BackendAddressPool $lb.BackendAddressPools[0] `
    -Protocol TCP `
    -FrontendPort 80 `
    -BackendPort 80 `
    -DisableOutboundSNAT `
    -Probe (Get-AzLoadBalancerProbeConfig -Name "myHealthProbe" -LoadBalancer $lb);

# Add outbound connectivity rule.
Add-AzLoadBalancerOutboundRuleConfig `
    -Name "outboundrule" `
    -LoadBalancer $lb `
    -AllocatedOutboundPort '10000' `
    -Protocol 'All' `
    -IdleTimeoutInMinutes '15' `
    -FrontendIpConfiguration $lb.FrontendIpConfigurations[0] `
    -BackendAddressPool $lb.BackendAddressPools[0];

# Update the load balancer configuration.
Set-AzLoadBalancer -LoadBalancer $lb;

# Create IP address configurations.
# Instances will require explicit outbound connectivity, for example
#   - NAT Gateway on the subnet (recommended)
#   - Instances in backend pool of Standard LB with outbound connectivity rules
#   - Public IP address on each instance
# See aka.ms/defaultoutboundaccess for more info.
$ipConfig = New-AzVmssIpConfig `
    -Name "myIPConfig" `
    -SubnetId $virtualNetwork.Subnets[0].Id `
    -LoadBalancerBackendAddressPoolsId $lb.BackendAddressPools[0].Id `
    -Primary;

# Create a config object.
# The Vmss config object stores the core information for creating a scale set.
$vmssConfig = New-AzVmssConfig `
    -Location $loc `
    -SkuCapacity $vmssInstanceCount `
    -SkuName $vmssSku `
    -OrchestrationMode 'Flexible' `
    -PlatformFaultDomainCount 1;

# Reference a virtual machine image from the gallery.
Set-AzVmssStorageProfile $vmssConfig `
    -OsDiskCreateOption "FromImage" `
    -ImageReferencePublisher "MicrosoftWindowsServer" `
    -ImageReferenceOffer "WindowsServer" `
    -ImageReferenceSku "2022-datacenter-azure-edition-core-smalldisk" `
    -ImageReferenceVersion "latest";  

# Set up information for authenticating with the virtual machine.
Set-AzVmssOsProfile $vmssConfig `
    -AdminUsername $cred.UserName `
    -AdminPassword $cred.Password `
    -ComputerNamePrefix $vmNamePrefix `
    -WindowsConfigurationProvisionVMAgent $true `
    -WindowsConfigurationPatchMode "AutomaticByPlatform" `
    -EnableHotpatching;

# Attach the virtual network to the config object.
Add-AzVmssNetworkInterfaceConfiguration `
    -VirtualMachineScaleSet $vmssConfig `
    -Name "network-config" `
    -Primary $true `
    -IPConfiguration $ipConfig `
    -NetworkApiVersion '2020-11-01';

# Define the Application Health extension properties.
$publicConfig = @{"protocol" = "http"; "port" = 80; "requestPath" = "/healthEndpoint"};
$extensionName = "myHealthExtension";
$extensionType = "ApplicationHealthWindows";
$publisher = "Microsoft.ManagedServices";
# Add the Application Health extension to the scale set model.
Add-AzVmssExtension -VirtualMachineScaleSet $vmssConfig `
    -Name $extensionName `
    -Publisher $publisher `
    -Setting $publicConfig `
    -Type $extensionType `
    -TypeHandlerVersion "1.0" `
    -AutoUpgradeMinorVersion $True;

# Create the virtual machine scale set.
$vmss = New-AzVmss `
    -ResourceGroupName $rgname `
    -Name $vmssName `
    -VirtualMachineScaleSet $vmssConfig;

在启用热修补的情况下,在灵活模式下为 Vm 设置操作系统配置文件属性

参数

-AdditionalUnattendContent

指定无人参与的内容对象。 可以使用 Add-AzVMAdditionalUnattendContent 创建对象。

Type:AdditionalUnattendContent[]
Position:8
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-AdminPassword

指定要用于 VMSS 中的所有虚拟机实例的管理员密码。

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

-AdminUsername

指定要用于 VMSS 中的所有虚拟机实例的管理员帐户名称。
限制:
Windows:不能包含特殊字符 /“”[]:|<>+=;,?*@& 或以“.” 结尾。
Linux:用户名只能包含字母、数字、连字符和下划线,不能以连字符或数字开头。
不允许的值: “administrator”、“admin”、“user1”、“user1”、“test”、“user2”、“test1”、“user3”、“admin1”、“1”, “123”、“a”、“actuser”、“adm”、“admin2”、“aspnet”、“backup”、“console”、“david”、“guest”、“john”、“owner”、“root”、“server”、“sql”、“support”、“support_388945a0”、“sys”、“test2”、“test3”、“user4”、“user5”。
最小长度: 1 个字符
最大长度: 适用于 Windows 的 20 个字符,适用于 Linux 的 64 个字符
有关 Linux 上不应在此字段中使用的内置系统用户的列表,请参阅 在 Azure 上为 Linux 选择用户名。

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

-ComputerNamePrefix

指定 VMSS 中所有虚拟机实例的计算机名称前缀。 计算机名称长度必须为 1 到 15 个字符。

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

-Confirm

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

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

-CustomData

指定自定义数据的 base-64 编码字符串。 这已解码为作为虚拟机上的文件保存的二进制数组。 二进制数组的最大长度为 65535 字节。
有关为 VM 使用 cloud-init,请参阅 在创建过程中使用 cloud-init 自定义 Linux VM。

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

-DefaultProfile

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

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

-EnableHotpatching

使客户无需重新启动即可修补其 Azure Vm。 对于 enableHotpatching,必须将“provisionVMAgent”设置为 true,并且“patchMode”必须设置为“AutomaticByPlatform”。

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

-LinuxConfigurationDisablePasswordAuthentication

指示此 cmdlet 禁用密码身份验证。

Type:Nullable<T>[Boolean]
Position:10
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-LinuxConfigurationPatchMode

指定 VM 来宾修补到 IaaS 虚拟机的模式,或与将 OrchestrationMode 作为灵活业务流程模式的虚拟机规模集关联的虚拟机。

可能的值为:

ImageDefault - 使用虚拟机的默认修补配置。

AutomaticByPlatform - 虚拟机将由平台自动更新。 属性 provisionVMAgent 必须为 true

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

-LinuxConfigurationProvisionVMAgent

指示是否应在虚拟机上预配虚拟机代理。

如果未在请求正文中指定此属性,则默认行为是将其设置为 true。 这将确保 VM 上安装了 VM 代理,以便以后可以向 VM 添加扩展

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

-Listener

指定 Windows 远程管理(WinRM)侦听器。 这将启用远程 Windows PowerShell。 可以使用 Add-AzVmssWinRMListener cmdlet 创建侦听器。

Type:WinRMListener[]
Position:9
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-PublicKey

指定 Secure Shell (SSH) 公钥对象。 可以使用 Add-AzVMSshPublicKey cmdlet 创建对象。

Type:SshPublicKey[]
Position:11
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Secret

指定包含要放置在虚拟机上的证书引用的机密对象。 可以使用 Add-AzVmssSecret cmdlet 创建机密对象。

Type:VaultSecretGroup[]
Position:12
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-TimeZone

指定虚拟机的时区。 例如“太平洋标准时间”。
可能的值可以从 TimeZoneInfo.GetSystemTimeZones 返回的时区 TimeZoneInfo.Id 值。

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

-VirtualMachineScaleSet

指定 VMSS 对象。 可以使用 New-AzVmssConfig cmdlet 创建对象。

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

-WhatIf

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

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

-WindowsConfigurationEnableAutomaticUpdate

指示是否为 VMSS 中的虚拟机启用了自动更新。

Type:Nullable<T>[Boolean]
Position:6
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-WindowsConfigurationPatchMode

指定 VM 来宾修补到 IaaS 虚拟机的模式,或与将 OrchestrationMode 作为灵活业务流程模式的虚拟机规模集关联的虚拟机。

可能的值为:

手动 - 控制对虚拟机的修补程序的应用程序。 为此,请在 VM 中手动应用修补程序。 在此模式下,自动更新处于禁用状态;属性 WindowsConfiguration.enableAutomatic汇报必须为 false

AutomaticByOS - 虚拟机将由 OS 自动更新。 属性 WindowsConfiguration.enableAutomatic汇报必须为 true。

AutomaticByPlatform - 虚拟机将由平台自动更新。 属性 provisionVMAgent 和 WindowsConfiguration.enableAutomatic汇报必须为 true

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

-WindowsConfigurationProvisionVMAgent

指示是否应在 VMSS 中的虚拟机上预配虚拟机代理。

Type:Nullable<T>[Boolean]
Position:5
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

输入

PSVirtualMachineScaleSet

String

Nullable<T>[[System.Boolean, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]

AdditionalUnattendContent[]

WinRMListener[]

SshPublicKey[]

VaultSecretGroup[]

输出

PSVirtualMachineScaleSet