共用方式為


Set-AzVmssOsProfile

設定 VMSS 作業系統設定檔內容。

語法

Default (預設值)

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

Description

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 中所有虛擬機器執行個體的電腦名稱前置詞設定為 Test,並提供管理員使用者名稱和密碼。

範例 2:設定已啟用熱修補的彈性模式虛擬機器的作業系統設定檔內容。

# 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 = ConvertTo-SecureString -String "****" -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;

設定已啟用熱修補的彈性模式虛擬機器的作業系統設定檔內容

參數

-AdditionalUnattendContent

指定自動內容物件。 您可以使用 Add-AzVMAdditionalUnattendContent 來建立物件。

參數屬性

類型:

AdditionalUnattendContent[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:8
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-AdminPassword

指定要用於 VMSS 中所有虛擬機器執行個體的管理員密碼。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:3
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-AdminUsername

指定要用於 VMSS 中所有虛擬機器執行個體的管理員帳戶名稱。
䋰:
Windows:不能包含特殊字元 /“”[]:|<>+=;,?*@& 或以 “.” 結尾
Linux:使用者名稱只能包含字母、數字、連字號和底線,並且不能以連字號或數字開頭。
不允許的值: “administrator”、“admin”、“user”、“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 的使用者名稱

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:2
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-ComputerNamePrefix

指定 VMSS 中所有虛擬機器執行個體的電腦名稱前置詞。 電腦名稱的長度必須為 1 到 15 個字元。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:1
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Confirm

在執行 Cmdlet 之前,提示您進行確認。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False
別名:參閱

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-CustomData

指定自訂數據的base-64編碼字串。 這會解碼為二進位陣列,該陣列會儲存為虛擬機器上的檔案。 二進位陣列的最大長度為65535個字節。
如需針對 VM 使用 cloud-init,請參閱在 建立期間使用 cloud-init 自訂 Linux VM

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:4
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-DefaultProfile

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

參數屬性

類型:IAzureContextContainer
預設值:None
支援萬用字元:False
不要顯示:False
別名:AzContext, AzureRmContext, AzureCredential

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-EnableHotpatching

可讓客戶修補其 Azure 虛擬機器,而不需要重新開機。 針對 enableHotpatching,'provisionVMAgent' 必須設定為 true,且 'patchMode' 必須設定為 'AutomaticByPlatform'。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-LinuxConfigurationDisablePasswordAuthentication

表示此 Cmdlet 會停用密碼驗證。

參數屬性

類型:

Nullable<T>[Boolean]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:10
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-LinuxConfigurationPatchMode

將 VM 客體修補模式指定為彈性的 IaaS 虛擬機或與虛擬機擴展集相關聯的虛擬機。

可能的值為:

ImageDefault - 會使用虛擬機的預設修補組態。

AutomaticByPlatform - 虛擬機將由平台自動更新。 屬性 provisionVMAgent 必須為 true

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-LinuxConfigurationProvisionVMAgent

指出虛擬機器代理程式是否應該佈建在虛擬機上。

當要求本文中未指定此屬性時,預設行為是將它設定為 true。 這將確保 VM 代理程式安裝在 VM 上,以便稍後可以將擴充功能新增至 VM

參數屬性

類型:

Nullable<T>[Boolean]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Listener

指定 Windows 遠端管理 (WinRM) 接聽程式。 這可啟用遠端 Windows PowerShell。 您可以使用 Add-AzVmssWinRMListener Cmdlet 來建立接聽程式。

參數屬性

類型:

WinRMListener[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:9
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-PublicKey

指定 Secure Shell (SSH) 公開金鑰物件。 您可以使用 Add-AzVMSshPublicKey Cmdlet 來建立物件。

參數屬性

類型:

SshPublicKey[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:11
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Secret

指定密碼物件,其中包含要放置在虛擬機器上的憑證參考。 您可以使用 Add-AzVmssSecret Cmdlet 來建立秘密物件。

參數屬性

類型:

VaultSecretGroup[]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:12
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-TimeZone

指定虛擬機的時區。 例如「太平洋標準時間」。
可能的值可以從 TimeZoneInfo.GetSystemTimeZones傳回的時區 TimeZoneInfo.Id 值。

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:7
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-VirtualMachineScaleSet

指定 VMSS 物件。 您可以使用 New-AzVmssConfig Cmdlet 來建立物件。

參數屬性

類型:PSVirtualMachineScaleSet
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-WhatIf

顯示 Cmdlet 執行時會發生什麼事。 指令未執行。

參數屬性

類型:SwitchParameter
預設值:None
支援萬用字元:False
不要顯示:False
別名:威斯康星州

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-WindowsConfigurationEnableAutomaticUpdate

指出 VMSS 中的虛擬機器是否已啟用自動更新。

參數屬性

類型:

Nullable<T>[Boolean]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:6
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-WindowsConfigurationPatchMode

將 VM 客體修補模式指定為彈性的 IaaS 虛擬機或與虛擬機擴展集相關聯的虛擬機。

可能的值為:

手動 - 您可以控制將修補程式的應用程式套用至虛擬機。 您可以手動在 VM 內套用修補程式來執行此動作。 在此模式中,會停用自動更新;屬性 WindowsConfiguration.enableAutomaticUpdates 必須為 false

AutomaticByOS - 作業系統會自動更新虛擬機。 屬性 WindowsConfiguration.enableAutomaticUpdates 必須為 true。

AutomaticByPlatform - 虛擬機會由平台自動更新。 provisionVMAgent 和 WindowsConfiguration.enableAutomaticUpdates 的屬性必須是 true

參數屬性

類型:String
預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-WindowsConfigurationProvisionVMAgent

指出是否應在 VMSS 中的虛擬機器上佈建虛擬機器代理程式。

參數屬性

類型:

Nullable<T>[Boolean]

預設值:None
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:5
必要:False
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

CommonParameters

此 Cmdlet 支援常見參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters

輸入

PSVirtualMachineScaleSet

String

Nullable<T>

AdditionalUnattendContent

WinRMListener

SshPublicKey

VaultSecretGroup

輸出

PSVirtualMachineScaleSet