你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Set-AzVMOperatingSystem
在创建新虚拟机或更新虚拟机期间设置操作系统属性。
语法
Set-AzVMOperatingSystem
[-VM] <PSVirtualMachine>
[-Windows]
[[-ComputerName] <String>]
[[-Credential] <PSCredential>]
[[-CustomData] <String>]
[-ProvisionVMAgent]
[-EnableAutoUpdate]
[[-TimeZone] <String>]
[-WinRMHttp]
[-PatchMode <String>]
[-EnableHotpatching]
[-AssessmentMode <String>]
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
Set-AzVMOperatingSystem
[-VM] <PSVirtualMachine>
[-Windows]
[[-ComputerName] <String>]
[[-Credential] <PSCredential>]
[[-CustomData] <String>]
[-ProvisionVMAgent]
[-EnableAutoUpdate]
[[-TimeZone] <String>]
[-WinRMHttp]
[-WinRMHttps]
[-WinRMCertificateUrl] <Uri>
[-PatchMode <String>]
[-EnableHotpatching]
[-AssessmentMode <String>]
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
Set-AzVMOperatingSystem
[-VM] <PSVirtualMachine>
[-Windows]
[[-ComputerName] <String>]
[[-Credential] <PSCredential>]
[[-CustomData] <String>]
[-DisableVMAgent]
[-EnableAutoUpdate]
[[-TimeZone] <String>]
[-WinRMHttp]
[-PatchMode <String>]
[-EnableHotpatching]
[-AssessmentMode <String>]
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
Set-AzVMOperatingSystem
[-VM] <PSVirtualMachine>
[-Windows]
[[-ComputerName] <String>]
[[-Credential] <PSCredential>]
[[-CustomData] <String>]
[-DisableVMAgent]
[-EnableAutoUpdate]
[[-TimeZone] <String>]
[-WinRMHttp]
[-WinRMHttps]
[-WinRMCertificateUrl] <Uri>
[-PatchMode <String>]
[-EnableHotpatching]
[-AssessmentMode <String>]
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
Set-AzVMOperatingSystem
[-VM] <PSVirtualMachine>
[-Linux]
[[-ComputerName] <String>]
[[-Credential] <PSCredential>]
[[-CustomData] <String>]
[-PatchMode <String>]
[-DisablePasswordAuthentication]
[-AssessmentMode <String>]
[-DefaultProfile <IAzureContextContainer>]
[<CommonParameters>]
说明
Set-AzVMOperatingSystem cmdlet 在创建新虚拟机期间设置操作系统属性。 可以指定登录凭据、计算机名称和操作系统类型。
示例
示例 1:设置新虚拟机的操作系统属性
$SecurePassword = ConvertTo-SecureString -String "****" -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ("FullerP", $SecurePassword);
$AvailabilitySet = Get-AzAvailabilitySet -ResourceGroupName "ResourceGroup11" -Name "AvailabilitySet03"
$VirtualMachine = New-AzVMConfig -VMName "VirtualMachine07" -VMSize "Standard_A1" -AvailabilitySetID $AvailabilitySet.Id
$ComputerName = "ContosoVM122"
$WinRMCertUrl = "http://keyVaultName.vault.azure.net/secrets/secretName/secretVersion"
$TimeZone = "Pacific Standard Time"
$CustomData = "echo 'Hello World'"
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName $ComputerName -Credential $Credential -CustomData $CustomData -WinRMHttp -WinRMHttps -WinRMCertificateUrl $WinRMCertUrl -ProvisionVMAgent -EnableAutoUpdate -TimeZone $TimeZone -PatchMode "AutomaticByPlatform"
第一个命令将密码转换为安全字符串,然后将其存储在$SecurePassword变量中。
要了解详情,请键入 Get-Help ConvertTo-SecureString
。
第二个命令为用户 FullerP 和存储在 $SecurePassword 中的密码创建凭据,然后将凭据存储在$Credential变量中。
要了解详情,请键入 Get-Help New-Object
。
第三个命令获取名为 ResourceGroup11 的资源组中名为 AvailabilitySet03 的可用性集,然后将该对象存储在$AvailabilitySet变量中。
第四个命令创建虚拟机对象,然后将其存储在$VirtualMachine变量中。
该命令将名称和大小分配给虚拟机。
虚拟机属于存储在$AvailabilitySet的可用性集。
接下来的四个命令将值分配给要用于以下命令的变量。
由于可以直接在 Set-AzVMOperatingSystem 命令中指定这些字符串,因此此方法仅用于可读性。
但是,可以在脚本中使用此类方法。
最终命令设置存储在$VirtualMachine中的虚拟机的操作系统属性。
该命令使用存储在$Credential中的凭据。
该命令使用前面命令中为某些参数分配的变量。
示例 2:为启用了热修补的新虚拟机设置操作系统属性
$SecurePassword = ConvertTo-SecureString -String "****" -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ("FullerP", $SecurePassword);
$AvailabilitySet = Get-AzAvailabilitySet -ResourceGroupName "ResourceGroup11" -Name "AvailabilitySet03"
$VirtualMachine = New-AzVMConfig -VMName "VirtualMachine07" -VMSize "Standard_A1" -AvailabilitySetID $AvailabilitySet.Id
$ComputerName = "ContosoVM122"
$WinRMCertUrl = "http://keyVaultName.vault.azure.net/secrets/secretName/secretVersion"
$TimeZone = "Pacific Standard Time"
$CustomData = "echo 'Hello World'"
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName $ComputerName -Credential $Credential -CustomData $CustomData -WinRMHttp -WinRMHttps -WinRMCertificateUrl $WinRMCertUrl -ProvisionVMAgent -EnableAutoUpdate -TimeZone $TimeZone -PatchMode "AutomaticByPlatform" -EnableHotPatching
第一个命令将密码转换为安全字符串,然后将其存储在$SecurePassword变量中。
要了解详情,请键入 Get-Help ConvertTo-SecureString
。
第二个命令为用户 FullerP 和存储在 $SecurePassword 中的密码创建凭据,然后将凭据存储在$Credential变量中。
要了解详情,请键入 Get-Help New-Object
。
第三个命令获取名为 ResourceGroup11 的资源组中名为 AvailabilitySet03 的可用性集,然后将该对象存储在$AvailabilitySet变量中。
第四个命令创建虚拟机对象,然后将其存储在$VirtualMachine变量中。
该命令将名称和大小分配给虚拟机。
虚拟机属于存储在$AvailabilitySet的可用性集。
接下来的四个命令将值分配给要用于以下命令的变量。
由于可以直接在 Set-AzVMOperatingSystem 命令中指定这些字符串,因此此方法仅用于可读性。
但是,可以在脚本中使用此类方法。
最终命令设置存储在$VirtualMachine中的虚拟机的操作系统属性。
该命令使用存储在$Credential中的凭据。
该命令使用前面命令中为某些参数分配的变量。
该命令在虚拟机上启用热修补。
示例 3:为新的 Linux 虚拟机设置操作系统属性
$SecurePassword = ConvertTo-SecureString -String "****" -AsPlainText -Force
$Credential = New-Object System.Management.Automation.PSCredential ("FullerP", $SecurePassword);
$AvailabilitySet = Get-AzAvailabilitySet -ResourceGroupName "ResourceGroup11" -Name "AvailabilitySet03"
$VirtualMachine = New-AzVMConfig -VMName "VirtualMachine07" -VMSize "Standard_A1" -AvailabilitySetID $AvailabilitySet.Id
$ComputerName = "ContosoVM122"
$CustomData = "echo 'Hello World'"
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Linux -ComputerName $ComputerName -Credential $Credential -CustomData $CustomData -PatchMode "AutomaticByPlatform"
第一个命令将密码转换为安全字符串,然后将其存储在$SecurePassword变量中。
要了解详情,请键入 Get-Help ConvertTo-SecureString
。
第二个命令为用户 FullerP 和存储在 $SecurePassword 中的密码创建凭据,然后将凭据存储在$Credential变量中。
要了解详情,请键入 Get-Help New-Object
。
第三个命令获取名为 ResourceGroup11 的资源组中名为 AvailabilitySet03 的可用性集,然后将该对象存储在$AvailabilitySet变量中。
第四个命令创建虚拟机对象,然后将其存储在$VirtualMachine变量中。
该命令将名称和大小分配给虚拟机。
虚拟机属于存储在$AvailabilitySet的可用性集。
接下来的两个命令将值分配给在以下命令中使用的变量。
最终命令设置存储在$VirtualMachine中的虚拟机的操作系统属性。
该命令使用存储在$Credential中的凭据。
该命令使用前面命令中为某些参数分配的变量。
该命令将虚拟机上的修补模式值设置为“AutomaticByPlatform”。
示例 4:当 VM 没有 OSProfile 时,使用 Credential 参数设置操作系统属性。
$rgname = <Resource Group Name>;
$loc = <Azure Region>;
New-AzResourceGroup -Name $rgname -Location $loc -Force;
# create credential
$password = <Password>;
$securePassword = $password | ConvertTo-SecureString -AsPlainText -Force;
$user = <Username>;
$cred = New-Object System.Management.Automation.PSCredential ($user, $securePassword);
# Setup parameters
$domainNameLabel = "d2" + $rgname;
$vmsize = 'Standard_D4s_v3';
$vmname = 'v' + $rgname;
$vnetname = "vn" + $rgname;
$vnetAddress = "10.0.0.0/16";
$subnetname = "slb" + $rgname;
$subnetAddress = "10.0.2.0/24";
$OSDiskName = $vmname + "d";
$NICName = $vmname+ "n";
$NSGName = $vmname + "nsg";
# Creating a VM using Default parameterset
$frontendSubnet = New-AzVirtualNetworkSubnetConfig -Name $subnetname -AddressPrefix $subnetAddress;
$vnet = New-AzVirtualNetwork -Name $vnetname -ResourceGroupName $rgname -Location $loc -AddressPrefix $vnetAddress -Subnet $frontendSubnet;
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name RDP -Protocol Tcp -Direction Inbound -Priority 1001 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow;
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $rgname -Location $loc -Name $NSGName -SecurityRules $nsgRuleRDP;
$nic = New-AzNetworkInterface -Name $NICName -ResourceGroupName $rgname -Location $loc -SubnetId $vnet.Subnets[0].Id -NetworkSecurityGroupId $nsg.Id -EnableAcceleratedNetworking;
$vmConfig = New-AzVMConfig -VMName $vmname -VMSize $vmsize;
$vmConfig = Set-AzVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmname -Credential $cred;
$vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id;
# Verify a VM is created.
New-AzVM -ResourceGroupName $rgname -Location $loc -VM $vmConfig;
$vm = Get-AzVM -ResourceGroupName $rgname -Name $vmname;
参数
-AssessmentMode
虚拟机的自动评估模式值。 可能的值是 ImageDefault 和 AutomaticByPlatform。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-ComputerName
指定计算机的名称。
类型: | String |
Position: | 2 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-Credential
将虚拟机的用户名和密码指定为 PSCredential 对象。
若要获取凭据,请使用 Get-Credential cmdlet。
要了解详情,请键入 Get-Help Get-Credential
。
类型: | PSCredential |
Position: | 3 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-CustomData
指定要传递给虚拟机的字符串。 有关详细信息,请参阅 Azure VM 上的自定义数据。 注意:不建议将敏感信息存储在自定义数据中。
类型: | String |
Position: | 4 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-DefaultProfile
用于与 Azure 通信的凭据、帐户、租户和订阅。
类型: | IAzureContextContainer |
别名: | AzContext, AzureRmContext, AzureCredential |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-DisablePasswordAuthentication
指示此 cmdlet 禁用密码身份验证。
类型: | SwitchParameter |
Position: | 5 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-DisableVMAgent
禁用预配 VM 代理。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-EnableAutoUpdate
指示此 cmdlet 启用自动更新。
类型: | SwitchParameter |
Position: | 6 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-EnableHotpatching
使客户无需重新启动即可修补其 Azure VM。 对于 enableHotpatching,必须将“provisionVMAgent”设置为 true,并且“patchMode”必须设置为“AutomaticByPlatform”。
类型: | SwitchParameter |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-Linux
指示操作系统的类型为 Linux。
类型: | SwitchParameter |
Position: | 1 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-PatchMode
指定对 IaaS 虚拟机进行来宾内修补的模式。
可能的值为:
AutomaticByPlatform - 虚拟机的修补程序安装将由 Azure 管理。 与 -Windows 或 -Linux 一起使用。 需要 -ProvisionVMAgent。 在与 -Windows 一起使用时需要 -EnableAutoUpdate。
AutomaticByOS - 虚拟机的修补程序安装将由 OS 管理。 与 -Windows 一起使用。 需要 -ProvisionVMAgent 和 -EnableAutoUpdate。
手动 - 控制对虚拟机的修补程序的应用程序。 与 -Windows 一起使用。 需要 -ProvisionVMAgent。
ImageDefault - 由 OS 映像上的默认设置管理的修补程序安装。 与 -Linux 一起使用。
类型: | String |
Position: | Named |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-ProvisionVMAgent
指示设置要求在虚拟机上安装虚拟机代理。
类型: | SwitchParameter |
Position: | 5 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-TimeZone
指定虚拟机的时区。 例如“太平洋标准时间”。
可能的值可以从 TimeZoneInfo.GetSystemTimeZones 返回的时区 TimeZoneInfo.Id 值。
类型: | String |
Position: | 7 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-VM
指定要在其中设置操作系统属性的本地虚拟机对象。 若要获取虚拟机对象,请使用 Get-AzVM cmdlet。 使用 New-AzVMConfig cmdlet 创建虚拟机对象。
类型: | PSVirtualMachine |
别名: | VMProfile |
Position: | 0 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-Windows
指示操作系统的类型为 Windows。
类型: | SwitchParameter |
Position: | 1 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-WinRMCertificateUrl
指定 WinRM 证书的 URI。 这需要存储在密钥库中。
类型: | Uri |
Position: | 10 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |
-WinRMHttp
指示此操作系统使用 HTTP WinRM。
类型: | SwitchParameter |
Position: | 8 |
默认值: | None |
必需: | False |
接受管道输入: | True |
接受通配符: | False |
-WinRMHttps
指示此操作系统使用 HTTPS WinRM。
类型: | SwitchParameter |
Position: | 9 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | False |