重置远程桌面服务或其在 Windows VM 中的管理员密码

适用于:✔️ Windows VM

注意

本文有帮助吗? 你的输入对我们很重要。 请使用此页上的 “反馈 ”按钮告诉我们本文为你工作得有多好,或者我们如何改进它。

注意

新功能! 尝试使用 VM 辅助功能进行更快的诊断

建议您运行 适用于 Windows 的 VM 助手适用于 Linux 的 VM 助手。 这些基于脚本的诊断工具可帮助你识别影响 Azure VM 来宾代理和整体 VM 运行状况的常见问题。

注意

本文中的步骤不适用于 Windows 域控制器。

如果无法连接到 Windows 虚拟机(VM),可以使用 VMAccess 扩展重置远程桌面服务和凭据。 下面是执行此操作的可用方法:

如果使用 PowerShell,请务必安装和配置最新的 PowerShell 模块,并登录到 Azure 订阅。 也可以对使用经典部署模型创建的 VM 执行这些步骤

使用 Azure 门户重置

首先,登录到 Azure 门户,然后在左侧菜单中选择“虚拟机”

重置本地管理员帐户密码

  1. 选择 Windows VM,然后在“帮助”下选择“重置密码”。 此时会显示“重置密码”窗口。

  2. 选择“重置密码”,输入用户名和密码,然后选择“更新”。

    提示

    如果在 VM 上输入不同于当前本地管理员帐户的名称,则 VMAccess 扩展使用该名称添加本地管理员帐户,将指定密码分配给该帐户。 如果 VM 上的本地管理员帐户存在,则 VMAccess 扩展将重置密码。 如果该帐户已禁用,则 VMAccess 扩展会将其启用。

  3. 尝试重新连接到 VM。

重置远程桌面服务配置

此过程将在 VM 中启用远程桌面服务,并为默认 RDP 端口 3389 创建防火墙规则。

  1. 选择 Windows VM,然后在“帮助”下选择“重置密码”。 此时会显示“重置密码”窗口。

  2. 依次选择“仅重置配置”、“更新”。

  3. 尝试重新连接到 VM。

使用 Azure PowerShell 重置

首先,请确保已安装并配置最新的 PowerShell 模块,然后使用 Connect-AzAccount cmdlet 登录到 Azure 订阅。

重置本地管理员帐户密码

  • 使用 Set-AzVMAccessExtension PowerShell cmdlet 重置管理员密码或用户名。 typeHandlerVersion 设置必须为 2.0 或以上,因为版本 1 已弃用。

    $SubID = "<SUBSCRIPTION ID>" 
    $RgName = "<RESOURCE GROUP NAME>" 
    $VmName = "<VM NAME>" 
    
    Connect-AzAccount 
    Select-AzSubscription -SubscriptionId $SubID 
    Set-AzVMAccessExtension -ResourceGroupName $RgName -VMName $VmName -Credential (get-credential) -typeHandlerVersion "2.0" -Name VMAccessAgent 
    

重置远程桌面服务配置

  1. 使用 Set-AzVMAccessExtension PowerShell cmdlet 重置对 VM 的远程访问。 以下示例重置资源组中 VM 上命名 VMAccessAgent 的访问扩展:

    $SubID = "<SUBSCRIPTION ID>" 
    $RgName = "<RESOURCE GROUP NAME>" 
    $VmName = "<VM NAME>" 
    
    Connect-AzAccount 
    Select-AzSubscription -SubscriptionId $SubID
    Set-AzVMAccessExtension -ResourceGroupName $RgName -VMName $VmName -Name VMAccessAgent -typeHandlerVersion "2.0" -ForceRerun $true
    

    提示

    无论何时,一个 VM 只能有一个 VM 访问代理。 若要设置 VM 访问代理属性,请使用 -ForceRerun 选项。 使用 -ForceRerun 时,请确保对 VM 访问代理使用在前面的任何命令中可能用过的相同名称。

  2. 如果仍然无法远程连接到虚拟机,请参阅排查基于 Windows 的 Azure 虚拟机的远程桌面连接问题。 如果与 Windows 域控制器的连接断开,则需要从域控制器备份中还原。

故障排除和支持

错误消息

错误 Description
{“innererror”: {“internalErrorCode”: “CannotModifyExtensionsWhenVMNotRunning”}, “code”: “OperationNotAllowed”,“message”: “在 VM 未运行时无法修改 VM 中的扩展。”} 此错误表明,由于 VM 未运行,不允许修改 VM 中的扩展操作。

若要解决此问题,请确保 VM 在尝试修改扩展之前正在运行。
VM 报告了处理扩展“enablevmAccess”(发布者“Microsoft.Compute”和类型“VMAccessAgent”)时失败。 错误消息:“VMAccess 扩展不支持域控制器。”。 有关故障排除的更多信息,请访问 https://aka.ms/vmextensionwindowstroubleshoot。 此错误表示 VM 扩展“enablevmAccess”失败,因为它不支持域控制器。

若要解决此问题,请确保使用此扩展时 VM 未配置为域控制器。 有关更多信息,请参阅在 Windows 虚拟机中重置远程桌面服务或其管理员密码
虚拟机 "vmname" 尚未报告虚拟机代理或扩展的状态。 请验证操作系统是否已启动且运行正常,虚拟机是否正在运行虚拟机代理,并且它是否可以建立到 Azure 存储的出站连接。 请参阅 https://aka.ms/vmextensionwindowstroubleshoot 获取更多的 VM 代理故障排除信息。 若要排查此错误,请参阅 故障排除清单
VM 报告了处理扩展“enablevmAccess”(发布者“Microsoft.Compute”和类型“VMAccessAgent”)时失败。 错误消息:“无法更新管理员帐户的远程桌面连接设置。 错误:System.Reflection.TargetInvocationException:调用的目标已引发异常。 >--- System.Runtime.InteropServices.COMException:密码不符合密码策略要求。 检查最低密码长度、密码复杂性和密码历史记录要求。 --- End of inner exception stack trace --- 在 System.DirectoryServices.DirectoryEntry.Invoke(String methodName,Object[] args)在 Microsoft.WindowsAzure.GuestAgent.Plugins.WindowsUser.SetPassword(SecureString password,Boolean expirePassword)在 Microsoft.WindowsAzure.GuestAgent.Plugins.RemoteAccessAccountManager.AddOrUpdateRemoteUserAccount(String userName,SecureString password,Boolean expirePassword)在 Microsoft.WindowsAzure.GuestAgent.Plugins.JsonExtensions.VMAccess.VMAccessExtension.OnEnable()'。 有关故障排除的更多信息,请访问 https://aka.ms/vmextensionwindowstroubleshoot.。 此错误表示 VM 扩展“enablevmAccess”由于密码策略冲突而无法更新管理员帐户的远程桌面连接设置。

若要解决此问题,请确保密码满足 Windows 密码策略要求,包括最短长度、复杂性和历史记录。 有关更多信息,请参阅对虚拟机扩展进行故障排除
VM 报告了处理扩展“enablevmAccess”(发布者“Microsoft.Compute”和类型“VMAccessAgent”)时失败。 错误消息:“如果提供用户名,管理员用户帐户密码不能为 null 或为空。 有关故障排除的更多信息,请访问 https://aka.ms/vmextensionwindowstroubleshoot。 此错误表示 VM 扩展“enablevmAccess”失败,因为未提供管理员用户帐户密码。

若要解决此问题,请确保为管理员用户帐户指定非 null 和非空密码。
虚拟机扩展 enablevmaccess 的预配已超时。完成扩展预配花费的时间过长。 扩展未报告任何消息。 此错误消息指示 VM 扩展“enablevmaccess”的预配已超时,因为完成时间过长。 此外,扩展在此过程中未提供任何状态消息。

若要解决此问题,请考虑检查 VM 的性能和网络条件,然后重试预配作。 有关更多信息,请参阅 对 Azure Windows 虚拟机扩展故障进行故障排除
VM 报告了处理扩展“enablevmAccess”(发布者“Microsoft.Compute”和类型“VMAccessAgent”)时失败。 错误消息:“无法更新管理员帐户的远程桌面连接设置。 错误:System.Exception:用户帐户 scsadmin 已存在,但无法更新,因为它不在管理员组中。 at Microsoft.WindowsAzure.GuestAgent.Plugins.RemoteAccessAccountManager.AddOrUpdateRemoteUserAccount(String userName,SecureString password,Boolean expirePassword)at Microsoft.WindowsAzure.GuestAgent.Plugins.JsonExtensions.VMAccess.VMAccessExtension.OnEnable()。 有关故障排除的更多信息,请访问 https://aka.ms/vmextensionwindowstroubleshoot。 此错误表示 VM 扩展“enablevmAccess”失败,因为用户帐户“scsadmin”已存在,但不在管理员组中。

若要解决此问题,请确保用户帐户已添加到管理员组。
VM 在处理扩展“enablevmaccess”(发布者“Microsoft.Compute”和类型“VMAccessAgent”)时报告了失败。 错误消息:“无法更新管理员帐户的远程桌面连接设置。 错误:System.Runtime.InteropServices.COMException (0x800708C5):密码不符合密码策略要求。 检查最低密码长度、密码复杂性和密码历史记录要求。 at System.DirectoryServices.DirectoryEntry.CommitChanges() at Microsoft.WindowsAzure.GuestAgent.Plugins.WindowsUser.SetPassword(SecureString password, Boolean expirePassword) at Microsoft.WindowsAzure.GuestAgent.Plugins.WindowsUserManager.CreateUserInGroup(String userName, SecureString password, Boolean expirePassword, String[] groups) at Microsoft.WindowsAzure.GuestAgent.Plugins.RemoteAccessAccountManager.AddOrUpdateRemoteUserAccount(String userName, SecureString password, Boolean expirePassword) at Microsoft.WindowsAzure.GuestAgent.Plugins.JsonExtensions.VMAccess.VMAccessExtension.OnEnable()'. 有关故障排除的更多信息,请访问 https://aka.ms/vmextensionwindowstroubleshoot。 此错误消息表明,由于更新管理员帐户的远程桌面连接设置出现问题,VM 无法处理“enablevmaccess”扩展。 具体错误与密码不满足策略要求(例如最小长度、复杂性和历史记录)相关。

若要解决此问题,请确保密码符合所需的策略标准。 有关更多信息,请参阅对虚拟机扩展进行故障排除
{“innererror”: {“internalErrorCode”: “MultipleExtensionsPerHandlerNotAllowed”}, “code”: “BadRequest”,“message”: “操作系统类型 'Windows' 不支持每个处理程序的多个 VMExtensions。 VMExtension “enablevmaccess”,处理程序“Microsoft.Compute.VMAccessAgent”已在输入中添加或指定。“} 此错误消息指示 OS 类型“Windows”不支持每个处理程序的多个 VM 扩展。 已在输入中添加或指定了处理程序“Microsoft.Compute.VMAccessAgent”的“enablevmaccess”扩展。

要解决此问题,请确保为虚拟机配置每个处理程序仅一个扩展。

可以使用以下 PowerShell cmdlet 手动删除扩展,然后重试该作:
Remove-AzVMExtension -ResourceGroupName "ResourceGroup11" -Name "ExtensionName" -VMName "VirtualMachineName"

后续步骤

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区