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>]
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 中所有虛擬機實例的電腦名稱前置詞設定為 [測試],並提供系統管理員的使用者名稱和密碼。
範例 2:在已啟用 Hotpatching 的彈性模式中設定 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 = 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;
在已啟用熱修補的彈性模式中設定 Vm 的作業系統配置檔屬性
參數
-AdditionalUnattendContent
指定自動內容物件。 您可以使用 Add-AzVMAdditionalUnattendContent 來建立物件。
類型: | AdditionalUnattendContent[] |
Position: | 8 |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-AdminPassword
指定要用於 VMSS 中所有虛擬機實例的系統管理員密碼。
類型: | String |
Position: | 3 |
預設值: | None |
必要: | 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 |
Position: | 2 |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-ComputerNamePrefix
指定 VMSS 中所有虛擬機實例的電腦名稱前置詞。 計算機名稱長度必須是 1 到 15 個字元。
類型: | String |
Position: | 1 |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Confirm
執行 Cmdlet 之前先提示您確認。
類型: | SwitchParameter |
別名: | cf |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-CustomData
指定自訂數據的base-64編碼字串。
這會譯碼為儲存為虛擬機上檔案的二進位數位。
二進位陣列的最大長度為65535個字節。
如需針對 VM 使用 cloud-init,請參閱 在建立期間使用 cloud-init 自定義 Linux VM。
類型: | String |
Position: | 4 |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-DefaultProfile
用於與 azure 通訊的認證、帳戶、租用戶和訂用帳戶。
類型: | IAzureContextContainer |
別名: | AzContext, AzureRmContext, AzureCredential |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-EnableHotpatching
可讓客戶修補其 Azure Vms,而不需要重新啟動。 針對 enableHotpatching,'provisionVMAgent' 必須設定為 true,且 'patchMode' 必須設定為 'AutomaticByPlatform'。
類型: | SwitchParameter |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-LinuxConfigurationDisablePasswordAuthentication
指出此 Cmdlet 會停用密碼驗證。
類型: | Nullable<T>[Boolean] |
Position: | 10 |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-LinuxConfigurationPatchMode
將 VM 客體修補模式指定為彈性的 IaaS 虛擬機或與虛擬機擴展集相關聯的虛擬機。
可能的值包括:
ImageDefault - 會使用虛擬機的默認修補組態。
AutomaticByPlatform - 虛擬機將會由平台自動更新。 屬性 provisionVMAgent 必須為 true
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-LinuxConfigurationProvisionVMAgent
指出虛擬機器代理程式是否應該佈建在虛擬機上。
當要求本文中未指定此屬性時,預設行為是將它設定為 true。 這可確保 VM 代理程式已安裝在 VM 上,以便稍後將擴充功能新增至 VM
類型: | Nullable<T>[Boolean] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Listener
指定 Windows 遠端管理 (WinRM) 接聽程式。 這可啟用遠端 Windows PowerShell。 您可以使用 Add-AzVmssWinRMListener Cmdlet 來建立接聽程式。
類型: | WinRMListener[] |
Position: | 9 |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-PublicKey
指定安全殼層 (SSH) 公鑰物件。 您可以使用 Add-AzVMSshPublicKey Cmdlet 來建立物件。
類型: | SshPublicKey[] |
Position: | 11 |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Secret
指定秘密物件,其中包含要放在虛擬機上的憑證參考。 您可以使用 Add-AzVmssSecret Cmdlet 來建立秘密物件。
類型: | VaultSecretGroup[] |
Position: | 12 |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-TimeZone
指定虛擬機的時區。 例如「太平洋標準時間」。
可能的值可以從 TimeZoneInfo.GetSystemTimeZones 所傳回的時區 TimeZoneInfo.Id 值。
類型: | String |
Position: | 7 |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-VirtualMachineScaleSet
指定 VMSS 物件。 您可以使用 New-AzVmssConfig Cmdlet 來建立物件。
類型: | PSVirtualMachineScaleSet |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-WhatIf
顯示執行 Cmdlet 後會發生的情況。 未執行 Cmdlet。
類型: | SwitchParameter |
別名: | wi |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-WindowsConfigurationEnableAutomaticUpdate
指出 VMSS 中的虛擬機是否已啟用自動更新。
類型: | Nullable<T>[Boolean] |
Position: | 6 |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-WindowsConfigurationPatchMode
將 VM 客體修補模式指定為彈性的 IaaS 虛擬機或與虛擬機擴展集相關聯的虛擬機。
可能的值包括:
手動 - 您可以控制將修補程式的應用程式套用至虛擬機。 您可以手動在 VM 內套用修補程式來執行此動作。 在此模式中,會停用自動更新;屬性 WindowsConfiguration.enableAutomaticUpdates 必須為 false
AutomaticByOS - 作業系統會自動更新虛擬機。 屬性 WindowsConfiguration.enableAutomaticUpdates 必須為 true。
AutomaticByPlatform - 虛擬機將會由平台自動更新。 provisionVMAgent 和 WindowsConfiguration.enableAutomaticUpdates 的屬性必須是 true
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-WindowsConfigurationProvisionVMAgent
指出虛擬機器代理程式是否應在 VMSS 中的虛擬機上佈建。
類型: | Nullable<T>[Boolean] |
Position: | 5 |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
輸入
Nullable<T>[[System.Boolean, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]