脱机重置 Azure VM 的本地 Windows 密码

可以使用 Azure 门户 重置 Azure 中 VM 的本地 Windows 密码,或者Azure PowerShell(前提是安装了 Azure 来宾代理)。 此方法是重置 Azure VM 密码的主要方法。 如果在上传自定义映像后遇到 Azure 来宾代理未响应或安装失败的问题,可以手动重置 Windows 密码。 本文详细介绍了如何通过将源 OS 虚拟磁盘附加到另一个 VM 来重置本地帐户密码。 本文中所述的步骤不适用于 Windows 域控制器。

警告

仅将此过程用作最后手段。 始终尝试使用Azure 门户重置密码,或首先Azure PowerShell

过程概述

当无法访问 Azure 来宾代理时,为 Azure 中的 Windows VM 执行本地密码重置的核心步骤如下:

  1. 停止受影响的 VM。
  2. 为 VM 的 OS 磁盘创建快照。
  3. 从 快照创建 OS 磁盘的副本。
  4. 将复制的 OS 磁盘附加并装载到另一个 Windows VM,然后在磁盘上创建一些配置文件。 这些文件将帮助你重置密码。
  5. 卸载复制的 OS 磁盘并将其从故障排除 VM 中分离。
  6. 交换受影响的 VM 的 OS 磁盘。

使用资源管理器部署的 VM 的详细步骤

注意

这些步骤不适用于 Windows 域控制器。 它仅适用于独立服务器或属于域成员的服务器。

在尝试以下步骤之前,请始终尝试使用Azure 门户或Azure PowerShell重置密码。 在开始之前,请确保已备份 VM。

  1. 为受影响 VM 的 OS 磁盘快照,从快照创建磁盘,然后将磁盘附加到故障排除 VM。 有关详细信息,请参阅使用 Azure 门户将 OS 磁盘附加到恢复 VM,对 Windows VM 进行故障排除

  2. 使用远程桌面连接到故障排除 VM。

  3. \Windows\System32\GroupPolicy在源 VM 的驱动器上创建 gpt.ini ((如果存在 gpt.ini),将 重命名为 gpt.ini.bak) :

    警告

    请确保不要意外地在 C:\Windows(用于 VM 故障排除的 OS 驱动器)中创建以下文件。 在 OS 驱动器中为作为数据磁盘附加的源 VM 创建以下文件。

    将以下行添加到 gpt.ini 创建的文件中:

    [General]
    gPCFunctionalityVersion=2
    gPCMachineExtensionNames=[{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B6664F-4972-11D1-A7CA-0000F87571E3}]
    Version=1
    

    屏幕截图显示了对 gpt.ini 文件进行的更新。

  4. 在 中创建 scripts.ini\Windows\System32\GroupPolicy\Machine\Scripts\。 确保显示隐藏的文件夹和文件扩展名。 如果需要,请创建 MachineScripts 文件夹。

    在创建的文件中添加以下行 scripts.ini

    [Startup]
    0CmdLine=FixAzureVM.cmd
    0Parameters=
    

    屏幕截图显示了对 script.ini 文件进行的更新。

  5. 使用以下内容创建 FixAzureVM.cmd\Windows\System32\GroupPolicy\Machine\Scripts\Startup\<username><newpassword> 替换为自己的值:

    net user <username> <newpassword> /add /Y
    net localgroup administrators <username> /add
    net localgroup "remote desktop users" <username> /add
    

    屏幕截图显示新创建的 FixAzureVM.cmd 文件,可在其中更新用户名和密码。

    定义新密码时,必须满足 VM 配置的密码复杂性要求。

  6. 在 Azure 门户 中,从故障排除 VM 中分离磁盘。

  7. 更改受影响 VM 的 OS 磁盘

  8. 运行新 VM 后,使用在脚本中指定的 FixAzureVM.cmd 新密码使用远程桌面连接到 VM。

  9. 从远程会话到新 VM,删除以下文件以清理环境:

    • From %windir%\System32\GroupPolicy\Machine\Scripts\Startup
      • 删除FixAzureVM.cmd
    • From %windir%\System32\GroupPolicy\Machine\Scripts
      • 删除 scripts.ini
    • From %windir%\System32\GroupPolicy
      • 如果以前存在 gpt.ini,请删除 gpt.ini (,并将其重命名为 gpt.ini.bak,将.bak文件重命名回 gpt.ini)

经典 VM 的详细步骤

重要

经典 VM 将于 2023 年 9 月 1 日停用

如果使用 ASM 中的 IaaS 资源,请在 2023 年 9 月 1 日前完成迁移。 我们建议你尽快进行切换,以利用 Azure 资源管理器 中的许多功能增强功能。

有关详细信息,请参阅在 2023 年 9 月 1 日前将 IaaS 资源迁移到 Azure 资源管理器

注意

这些步骤不适用于 Windows 域控制器。 它仅适用于独立服务器或属于域成员的服务器。

在尝试以下步骤之前,请始终尝试使用Azure 门户或Azure PowerShell重置密码。 在开始之前,请确保已备份 VM。

  1. 在 Azure 门户 中删除受影响的 VM。 删除 VM 只会删除元数据(Azure 中 VM 的引用)。 删除 VM 时,虚拟磁盘将保留:

    • 在Azure 门户中选择 VM,然后单击“删除”:

      屏幕截图显示了现有经典 VM 页中的“删除”按钮。

  2. 将源 VM 的 OS 磁盘附加到故障排除 VM。 故障排除 VM 必须与源 VM 的 OS 磁盘 (位于同一区域,例如 West US) :

    1. 在Azure 门户中选择故障排除 VM。 单击“磁盘附加现有 | :

      屏幕截图显示了故障排除 VM 的“附加现有”按钮。

    2. 选择“ VHD 文件 ”,然后选择包含源 VM 的存储帐户:

      屏幕截图显示用于选择存储帐户的位置。

    3. 选中标记为 “显示经典存储帐户”的框,然后选择源容器。 源容器通常是 vhd

      屏幕截图显示已清除“显示经典存储帐户”选项。

      屏幕截图显示已选择 vhd 作为存储容器。

    4. 选择要附加的 OS vhd。 单击“ 选择” 以完成该过程:

      显示所选源虚拟磁盘的屏幕截图。

    5. 单击“确定”附加磁盘

      屏幕截图显示“附加现有磁盘”页,底部有“确定”按钮。

  3. 使用远程桌面连接到故障排除 VM,并确保源 VM 的 OS 磁盘可见:

    1. 在Azure 门户中选择故障排除 VM,然后单击“连接”。

    2. 打开下载的 RDP 文件。 输入故障排除 VM 的用户名和密码。

    3. 在 文件资源管理器 中,查找附加的数据磁盘。 如果源 VM 的 VHD 是附加到故障排除 VM 的唯一数据磁盘,则它应该是 F: 驱动器:

      屏幕截图显示了 文件资源管理器 中的 F 本地磁盘。

  4. \Windows\System32\GroupPolicy源 VM 的驱动器上创建 gpt.ini ((如果gpt.ini存在),重命名为 gpt.ini.bak) :

    警告

    请确保不要意外地在 OS 驱动器中创建 C:\Windows以下文件,以便对 VM 进行故障排除。 在 OS 驱动器中为作为数据磁盘附加的源 VM 创建以下文件。

    将以下行添加到 gpt.ini 创建的文件中:

    [General]
    gPCFunctionalityVersion=2
    gPCMachineExtensionNames=[{42B5FAAE-6536-11D2-AE5A-0000F87571E3}{40B6664F-4972-11D1-A7CA-0000F87571E3}]
    Version=1
    

    屏幕截图显示了对经典 VM 的 gpt.ini 文件进行的更新。

  5. 在 中创建 scripts.ini\Windows\System32\GroupPolicy\Machine\Scripts\。 确保显示隐藏的文件夹和文件扩展名。 如果需要,请创建 MachineScripts 文件夹。

    在创建的文件中添加以下行 scripts.ini

    [Startup]
    0CmdLine=FixAzureVM.cmd
    0Parameters=
    

    屏幕截图显示了对经典 VM 的 scripts.ini 文件进行的更新。

  6. 使用以下内容创建 FixAzureVM.cmd\Windows\System32\GroupPolicy\Machine\Scripts\Startup\<username><newpassword> 替换为自己的值:

    net user <username> <newpassword> /add /Y
    net localgroup administrators <username> /add
    net localgroup "remote desktop users" <username> /add
    

    屏幕截图显示了新创建的 FixAzureVM.cmd 文件,可在其中更新经典 VM 的用户名和密码。

    定义新密码时,必须满足 VM 配置的密码复杂性要求。

  7. 在 Azure 门户 中,从故障排除 VM 中分离磁盘:

    1. 在Azure 门户中选择故障排除 VM,单击“磁盘”。

    2. 选择步骤 2 中附加的数据磁盘,单击“ 分离”,然后单击“ 确定”。

    屏幕截图显示了步骤 2 中分离的磁盘。

    屏幕截图显示了“分离”按钮。

  8. 从源 VM 的 OS 磁盘创建 VM:

    屏幕截图显示“磁盘 (经典) 项。

    屏幕截图显示了订阅。

    屏幕截图突出显示了“创建 VM”按钮。

完成创建虚拟机体验

  1. 运行新 VM 后,使用在脚本中指定的 FixAzureVM.cmd 新密码使用远程桌面连接到 VM。

  2. 从远程会话到新 VM,删除以下文件以清理环境:

    • %windir%\System32\GroupPolicy\Machine\Scripts\Startup\
      • 删除 FixAzureVM.cmd
    • %windir%\System32\GroupPolicy\Machine\Scripts
      • 删除 scripts.ini
    • %windir%\System32\GroupPolicy
      • 删除 gpt.ini ((如果 gpt.ini 以前存在),并且已将其重命名为 gpt.ini.bak,将 .bak 文件重命名回 gpt.ini)

后续步骤

如果仍无法使用远程桌面进行连接,请参阅 RDP 故障排除指南详细的 RDP 故障排除指南介绍了故障排除方法,而不是具体步骤。 还可以打开Azure 支持请求以获取动手帮助。

联系我们寻求帮助

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