排查 Azure Windows VM 代理问题

适用于:✔️ Windows VM

备注

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

重要

新功能! 请尝试使用 VM 协助解决首要问题。 建议您运行 适用于 Windows 的 VM 助手适用于 Linux 的 VM 助手。 这些基于脚本的诊断工具可帮助你识别影响 Azure VM 来宾代理和整体 VM 运行状况的常见问题。

如果在 VM 上遇到性能问题,请先运行这些工具,然后再联系Microsoft支持部门。

Azure VM 代理是虚拟机(VM)代理。 它使 VM 能够与 IP 地址 168.63.129.16上托管 VM 的基础物理服务器(构造控制器)通信。 此地址是促进通信的虚拟公共 IP 地址。 有关详细信息,请参阅什么是 IP 地址 168.63.129.16?

从本地环境迁移到 Azure 的 VM 或使用自定义映像创建的 VM 未安装 Azure VM Agent。 在这些方案中,必须手动安装 VM 代理。 有关如何安装 VM 代理的详细信息,请参阅 Azure 虚拟机代理概述

成功安装 Azure VM 代理后,可以看到 VM 上的 services.msc 中列出的以下服务。

服务 说明
Windows Azure 来宾代理 此服务负责配置从来宾 VM 到主机代理的各种扩展和通信。 它还负责收集WaAppAgent.log中的日志。
Telemetry 此服务负责将 VM 的遥测数据发送到后端服务器。
RdAgent 此服务负责安装来宾代理。 (透明安装程序是 RdAgent 的另一个组件,可帮助升级来宾代理的其他组件和服务。RdAgent 还负责将检测信号从来宾 VM 发送到物理服务器上的主机代理。

备注

从来宾代理版本 2.7.41491.971 开始,遥测组件包含在 Windows Azure 来宾代理服务中。 因此,可能不会看到新创建的 VM 中列出的此遥测服务。

故障排除清单

若要使任何 VM 扩展能够运行,必须安装并成功运行 Azure VM 来宾代理。 如果看到来宾代理报告为 “未就绪”,或者扩展失败并返回错误消息, VMAgentStatusCommunicationError请按照以下步骤开始对来宾代理进行故障排除。

步骤 1:检查 VM 是否已启动

若要验证 VM 是否已启动,请执行以下步骤:

  1. Azure 门户中,搜索并选择“虚拟机”。

  2. 在 VM 列表中,选择 Azure VM 的名称。

  3. 在 Azure VM 的导航窗格中,选择“ 概述”。

  4. 如果 VM 还未启动,请在 “概述” 页顶部找到操作列表,然后选择 “开始” 链接。

此外,请验证作系统(OS)是否已启动并成功运行。

步骤 2:检查来宾代理是否已准备就绪

当仍在 Azure 门户的 VM 概述页上时,请选择“属性”选项卡。如果“代理状态”字段的值为“就绪”,请验证代理版本字段值是否满足最低支持版本。 以下屏幕截图显示了可在何处找到这些字段。

显示虚拟机(VM)属性的Azure 门户屏幕截图。代理状态为“就绪”,代理版本为 2.7.41491.1083。

如果来宾代理状态为 “就绪 ”,但存在涉及 VM 扩展的问题,请参阅 Azure 虚拟机扩展和功能 来查看故障排除建议。

如果来宾代理状态为 “未就绪 ”或“空白”,则未安装来宾代理或无法正常工作。

步骤 3:检查来宾代理服务是否正在运行

  1. 使用远程桌面协议(RDP)连接到 VM

    备注

    不需要安装并运行来宾代理,才能使 RDP 连接正常工作。 如果遇到影响与 VM 的 RDP 连接的问题,请参阅 排查与 Azure 虚拟机的远程桌面连接问题。

  2. 在 VM 上,选择“开始”,搜索 services.msc,然后选择“服务”应用。

  3. “服务 ”窗口中,选择 RdAgent 服务。

  4. 选择 “作 ”菜单,然后选择“ 属性”。

  5. “属性”对话框的“常规”选项卡上,确保满足以下条件,然后选择“确定”或取消”按钮:

    • 启动类型列表设置为“自动”。
    • 服务状态 ”字段的值为 “正在运行”。

    “RdAgent 属性”对话框的屏幕截图。对话框显示 RdAgent 服务状态为“正在运行”,启动类型显示为“自动”。

  6. “服务 ”窗口中,选择 WindowsAzureGuestAgent 服务。

  7. 重复步骤 4 和步骤 5。

如果服务不存在,则可能未安装来宾代理。 在这种情况下,可以 手动安装来宾代理。 在进行手动安装之前, 请检查安装先决条件

步骤 4:测试 WireServer 连接

若要成功运行,来宾代理需要在端口168.63.129.16上连接到 WireServer IP(主机 IP)地址8032526。 有关测试与此 IP 地址的连接的说明,请参阅排查连接问题部分的“IP 地址 168.63.129.16 是什么?”

如果该部分中的任何测试未创建连接,请检查可能导致以下任何组件阻止访问 IP 地址 168.63.129.16的问题:

  • 防火墙
  • 代理
  • 应用程序

步骤 5:查看日志文件

检查以下日志位置是否有任何值得注意的错误:

  • C:\WindowsAzure\Logs\WaAppAgent.log
  • C:\WindowsAzure\Logs\TransparentInstaller.log

常见错误情境

将找到的任何错误与以下常见方案进行比较,这些常见方案可能导致 Azure VM 代理显示 “未就绪 ”状态或停止按预期工作。

无法连接到 WireServer IP (168.63.129.16)

WaAppAgent.log 文件中记录 了以下错误条目:

[ERROR] GetVersions() failed with exception: Microsoft.ServiceModel.Web.WebProtocolException: Server Error: Service Unavailable (ServiceUnavailable) ---> 
System.Net.WebException: The remote server returned an error: (503) Server Unavailable.
[00000011] [12/11/2018 06:27:55.66] [WARN]  (Ignoring) Exception while fetching supported versions from HostGAPlugin: System.Net.WebException: Unable to connect to the remote server 
---> System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions 168.63.129.16:32526
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState status, IAsyncResult asyncResult, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
at System.Net.WebClient.DownloadString(Uri address)
at Microsoft.GuestAgentHostPlugin.Client.GuestInformationServiceClient.GetVersions()
at Microsoft.WindowsAzure.GuestAgent.ContainerStateMachine.HostGAPluginUtility.UpdateHostGAPluginAvailability()`

这些错误条目指示 VM 无法访问 WireServer IP 地址 168.63.129.16。

解决方案:启用 DHCP,并确保防火墙、代理或其他源不会阻止服务器

  1. 使用远程桌面连接到 VM,然后测试到 168.63.129.16 的连接。 请参阅 Azure IP 地址 168.63.129.16 概述“排查连接问题”部分。
  2. 如果 VM 的网络适配器上只有一个专用 IP,强烈建议在来宾 VM 上启用 DHCP。 如果需要静态专用 IP 地址,则应通过 Azure 门户或 PowerShell 进行配置,同时确保启用 VM 内的 DHCP 选项。 若要确保 IP 配置始终与 Azure 中的 VM 上的配置匹配,请了解如何使用 PowerShell 设置静态 IP 地址
  3. 如果为 VM 的网络适配器分配了多个专用 IP,请确保仔细按照步骤 正确分配 IP 配置。 完成这些步骤后,如果来宾代理无法与 168.63.129.16 通信,请检查 Windows 中的 主 IP 是否与 Azure 中 VM 网络适配器的主 IP 匹配
  4. 检查防火墙、代理或其他源可能导致阻止对 IP 地址 168.63.129.16的访问的任何问题。
  5. 检查 Windows 防火墙或第三方防火墙是否阻止了对端口 80 的访问和 32526。 有关为何不应阻止此地址的详细信息,请参阅 IP 地址 168.63.129.16 是什么?

来宾代理停滞在“正在停止”进程中

WaAppAgent.log 文件中记录 了以下错误条目:

[00000007] [07/18/2019 14:46:28.87] [WARN] WindowsAzureGuestAgent stopping.
[00000007] [07/18/2019 14:46:28.89] [INFO] Uninitializing StateExecutor with WaitForTerminalStateReachedOnEnd : True
[00000004] [07/18/2019 14:46:28.89] [WARN] WindowsAzureGuestAgent could not be stopped. Exception: System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.WindowsAzure.GuestAgent.ContainerStateMachine.GoalStateExecutorBase.WaitForExtensionWorkflowComplete(Boolean WaitForTerminalStateReachedOnEnd)
at Microsoft.WindowsAzure.GuestAgent.ContainerStateMachine.GoalStateExecutorBase.Uninitialize(Boolean WaitForTerminalStateReachedOnEnd)
at Microsoft.WindowsAzure.GuestAgent.ContainerStateMachine.GoalStateExecutorForCloud.Uninitialize(Boolean WaitForTerminalStateReachedOnEnd)
at Microsoft.WindowsAzure.GuestAgent.AgentCore.AgentCore.Stop(Boolean waitForTerminalState)
at Microsoft.WindowsAzure.GuestAgent.AgentCore.AgentService.DoStopService()
at Microsoft.WindowsAzure.GuestAgent.AgentCore.AgentService.<>c__DisplayClass2.<OnStopProcessing>b__1()

这些错误条目指示 Azure VM 代理停滞在“正在停止”进程中。

解决方案 A:启动 WaAppAgent.exe 并停止 WindowsAzureGuest.exe

确保 WaAppAgent.exe 在 VM 上运行。 如果它未运行,请重启 RdAgent 服务,然后等待五分钟。 WaAppAgent.exe开始运行后,结束WindowsAzureGuest.exe进程。

解决方案 B:升级 Azure VM 代理

如果解决方案 A 无法解决问题,请删除当前安装的版本,然后 手动安装最新版本的代理

已安装 Npcap 环回适配器

WaAppAgent.log 文件中记录 了以下错误条目:

[00000006] [06/20/2019 07:44:28.93] [INFO] Attempting to discover fabric address on interface Npcap Loopback Adapter
[00000024] [06/20/2019 07:44:28.93] [WARN] Empty DHCP option data returned
[00000006] [06/20/2019 07:44:28.93] [ERROR] Did not discover fabric address on interface Npcap Loopback Adapter

这些错误条目指示 Wireshark 在 VM 上安装了网络映射器 (Nmap) 项目的数据包捕获 (Npcap) 环回适配器。 Wireshark 是一种开源工具,用于分析网络流量和分析数据包。 此类工具通常称为网络分析器、网络协议分析器或嗅探器。

解决方案:禁用 Npcap 环回适配器

尝试禁用 Npcap 环回适配器,然后检查问题是否已解决。

远程过程调用 (RPC) 问题 - RdCrypt 初始化失败

WaAppAgent.log 文件中记录 了以下错误条目:

[00000004] [01/12/2019 00:30:47.24] [ERROR] RdCrypt Initialization failed. Error Code: -2147023143.
[00000004] [01/12/2019 00:30:47.24] [ERROR] Failed to get TransportCertificate. Error: System.AccessViolationException
Microsoft.Cis.Fabric.CertificateServices.RdCertificateFactory.Shutdown()
[00000004] [01/12/2019 00:30:47.24] [WARN]  Could not get transport certificate from agent runtime for subject name: 12345678-d7c8-4387-8cf3-d7ecf62544e5. Installing certificates in the LocalMachine store failed.
[00000004] [01/12/2019 00:30:47.24] [WARN] Fetching certificate blob from the cert URI: http://168.63.129.16/machine/12345678-d7c8-4387-8cf3-d7ecf62544e5/12345678-d447-4b10-a5da-1ba1581cd7d7._VMName?comp=certificates&incarnation=2 failed with exception: System.NullReferenceException
-2147023143 = 0x6d9 = EPT_S_NOT_REGISTERED

这些错误可能是由于远程过程调用 (RPC) 问题而发生的。 例如,RPC 终结点可能未侦听,或者 RPC 进程可能在另一端缺失。

解决方案:启动 CNG 密钥隔离服务

检查 加密下一代(CNG)密钥隔离CNGKEYISO) Windows 服务是否在 RPC 终结点列表中。 为此,请运行以下 portqry 命令:

portqry -n <VMName> -e 135

如果未看到 CNGKEYISO 该过程,请从 Windows 服务控制台(CNG 密钥隔离 = KeyIso)启动它,然后重启 WaAppAgent.exeWindowsAzureGuestAgent.exe

PInvoke PFXImportCertStore 失败,并返回 null 句柄。 错误代码:86

Windows 来宾代理正在运行,但扩展不起作用。 WaAppAgent.log 文件中记录 了以下错误条目:

PInvoke PFXImportCertStore failed and null handle is returned. Error Code: 86

[00000003] [10/21/2020 02:37:45.98] [WARN] Could not get transport certificate from agent runtime for subject name: 12345678-dae3-4c2f-be57-55c0ab7a44e5. Installing certificates in the LocalMachine store failed.
[00000003] [10/21/2020 02:37:45.98] [ERROR] Installing certificates in the LocalMachine store failed with exception: Microsoft.WindowsAzure.GuestAgent.CertificateManager.CryptographyNative+PInvokeException: PInvoke PFXImportCertStore failed and null handle is returned. Error Code: 86.

这些错误可能是因为系统帐户的 Crypto 文件夹缺少权限。 如果在重启来宾代理服务(RdAgent 或 WindowsAzureGuestAgent)时收集 进程监视器 (ProcMon)跟踪,则应能够看到一些“拒绝访问”错误。

解决方案:为 SYSTEM 帐户授予加密文件夹的完全访问权限

确保 SYSTEM 帐户对以下文件夹具有 完全控制 权限:

  • C:\ProgramData\Microsoft\Crypto\Keys

  • C:\ProgramData\Microsoft\Crypto\RSA

  • C:\ProgramData\Microsoft\Crypto\SystemKeys

System.BadImageFormatException:尝试加载一个格式不正确的程序。 (异常来自 HRESULT:0x8007000B)

以下错误条目记录在 WaAppAgent.log 文件中,指示来宾代理未响应:

[00000018] 2021-01-12T16:35:45Z [INFO]  Test extract the plugin zip file to the temp folder C:\TEMP\12345678-5f85-45dc-9f17-55be1fde7b10
[00000010] 2021-01-12T16:35:45Z [ERROR] InstallPlugins() failed with exception: System.AggregateException: One or more errors occurred. ---> System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
   at Microsoft.WindowsAzure.GuestAgent.ExtensionStateMachine.PluginInstaller.PackageExpand(String packageFilePath, String destinationPath)
   at Microsoft.WindowsAzure.GuestAgent.ExtensionStateMachine.PluginInstaller.ValidateExtensionZipFile(String pluginName, String pluginVersion, String& pluginZipFile)

最有可能的是,这些错误发生的原因是 VM 上安装了第三方应用程序,并修改了 32 位或 64 位 .NET 应用程序的行为。

BadImageFormatException当 64 位应用程序加载 32 位 DLL 时发生错误。

解决方案:为 .NET Framework 设置 Enable64Bit 注册表项并重启 VM

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 出于防范目的,请在修改之前备份注册表,以便在出现问题时还原注册表。 有关如何备份和还原注册表的详细信息,请参阅如何备份和还原 Windows 中的注册表

打开注册表,找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\。NETFramework 注册表子项,然后查看 Enable64Bit 注册表项。

如果 Enable64Bit 注册表项设置为 0,则 64 位 .NET 应用程序被视为 32 位应用程序。 因此,Azure VM 代理不起作用。

解决方案是将 Enable64Bit 密钥设置为 1,然后重启 VM。

由于 ConfigurationErrorsException 或 TypeInitializationException 错误,Windows 来宾代理无法启动

Windows 来宾代理在启动时停止响应,并记录以下应用程序日志条目:

Log Name:      Application
Source:        .NET Runtime
Date:          3/07/2023 10:25:59 AM
Event ID:      1026
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      vm372437823
Description:
Application: WindowsAzureGuestAgent.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Configuration.ConfigurationErrorsException
   at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean)
   at System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(System.Configuration.ConfigurationSchemaErrors)
   at System.Configuration.ClientConfigurationSystem.EnsureInit(System.String)

Exception Info: System.Configuration.ConfigurationErrorsException
   at System.Configuration.ClientConfigurationSystem.EnsureInit(System.String)
   at System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(System.String)
   at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(System.String)
   at System.Configuration.ConfigurationManager.GetSection(System.String)
   at System.Configuration.PrivilegedConfigurationManager.GetSection(System.String)
   at System.Diagnostics.DiagnosticsConfiguration.GetConfigSection()
   at System.Diagnostics.DiagnosticsConfiguration.Initialize()
   at System.Diagnostics.DiagnosticsConfiguration.get_IndentSize()
   at System.Diagnostics.TraceInternal.InitializeSettings()
   at System.Diagnostics.Trace.set_AutoFlush(Boolean)
   at Microsoft.WindowsAzure.GuestAgent.Prime.TraceManager..cctor()

Exception Info: System.TypeInitializationException
   at Microsoft.WindowsAzure.GuestAgent.Prime.TraceManager.Write(System.String, System.Object[])
   at Microsoft.WindowsAzure.GuestAgent.AgentCore.AgentCore.Start()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Threading.ThreadHelper.ThreadStart()

如果 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config 文件丢失或损坏,则可能会出现此问题。

解决方案:将工作 Machine.config 文件复制到 VM,然后重启来宾代理服务

要解决这个问题,请按照下列步骤操作:

  1. 从工作 VM 复制 Machine.config 文件,然后将该文件粘贴到有问题的 VM 上的 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config 文件夹中。

  2. 通过运行以下命令net stopnet start重启来宾代理服务:

    net stop RdAgent
    net stop WindowsAzureGuestAgent
    
    net start RdAgent
    net start WindowsAzureGuestAgent
    

安装来宾代理失败

如果尝试安装来宾代理失败,请确保满足 来宾代理的所有先决条件

解决方案:卸载并重新安装 Windows 来宾代理

  1. 检查“程序和功能”中是否安装了Guest Agent。

注意: 如果来宾代理是通过 .msi 安装程序手动安装的,代理会显示在“添加/删除程序”中。 如果在映像预配过程中安装了来宾代理,则代理不会出现在“添加/删除程序”中。

  1. 如果“添加/删除程序”中存在来宾代理,请从那里卸载它。 然后,可以使用此步骤中的命令行参数通过 .msi 文件进行安装。

  2. 如果代理已安装但未显示在“添加/删除”程序中,请执行以下步骤:

    1. 打开提升的命令提示符窗口。
    2. 停止来宾代理服务。 如果服务未停止,则必须将服务设置为手动启动,然后重启 VM:
    net stop rdagent
    net stop WindowsAzureGuestAgent
    
    1. 删除来宾代理服务
    sc delete rdagent
    sc delete WindowsAzureGuestAgent
    
    1. 在 C:\WindowsAzure 下,创建一个文件夹并将其命名为 OLD。
    2. 将名为 Packages 或 GuestAgent 的任何文件夹移动到 OLD 文件夹中。
    3. 为 .msi 安装位置(C:\VMAgentMSI)创建新文件夹。
  3. 从 GitHub 版本发布中下载适用于 Windows 客户代理的最新 .msi 文件

  4. 使用 msiexec 命令行 + 参数安装来宾代理:

    msiexec.exe /i c:\VMAgentMSI\WindowsAzureVmAgent.2.7.<version>.fre.msi /L*v C:\Windows\Panther\msiexec.log
    
  5. 如果安装失败,请收集以下文件来调查失败的原因:

    • C:\Windows\Panther\msiexec.log
    • C:\Windows\Panther\VmAgentInstaller.xml

由于 WMI 错误,来宾代理安装失败

  1. 从 GitHub 版本发布中下载适用于 Windows 客户代理的最新 .msi 文件

  2. 使用 msiexec 命令行 + 参数安装来宾代理

    msiexec.exe /i c:\VMAgentMSI\WindowsAzureVmAgent.2.7.<version>.fre.msi /L*v C:\Windows\Panther\msiexec.log
    
  3. 如果安装失败,请收集以下文件来调查失败的原因:

    • C:\Windows\Panther\msiexec.log
    • C:\Windows\Panther\VmAgentInstaller.xml

尝试安装来宾代理时,可以在MSIEXEC.log和 VmAgentInstaller.xml 上找到以下错误消息。

MSIEXEC.log:

Action start 12:11:03: CA2.
MSI (s) (7C:A8) [12:27:20:328]: Note: 1: 1722 2: CA2 3: wscript.exe 4: "C:\Program Files\Windows Azure VM Agent v2.7.41491.949\\InstallOrUpdateGA.vbs"
MSI (s) (7C:A8) [12:27:20:328]: Note: 1: 2205 2:  3: Error
MSI (s) (7C:A8) [12:27:20:328]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1722
CustomAction CA2 returned actual error code 1 (note this may not be 100% accurate if translation happened inside sandbox)
MSI (s) (7C:A8) [12:27:22:707]: Note: 1: 2205 2:  3: Error
MSI (s) (7C:A8) [12:27:22:707]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1709
MSI (s) (7C:A8) [12:27:22:707]: Product: Windows Azure VM Agent - 2.7.41491.949 -- Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor.  Action CA2, location: wscript.exe, command: "C:\Program Files\Windows Azure VM Agent v2.7.41491.949\\InstallOrUpdateGA.vbs"

C:\Windows\Panther\VmAgentInstaller.xml:

Event time="2019-12-12T12:49:05.123Z" category="INFO" source="GuestAgent"><SetRdAgentServicePathInRegistry ServiceName="RdAgent" ServiceImagePath="C:\WindowsAzure\Packages_20191212_124856\WaAppAgent.exe"/></Event>
<Event time="2019-12-12T12:49:05.163Z" category="ERROR" source="GuestAgent"><UnhandledError><Message>Setting the new RdAgent service path in registry failed.</Message><Number>424</Number><Description>Object required</Description><Source>Microsoft VBScript runtime error</Source></UnhandledError></Event>
<Event time="2019-12-12T12:49:05.203Z" category="ERROR" source="GuestAgent"><ConfigureRdAgentService/></Event>
<Event time="2019-12-12T12:49:05.258Z" category="ERROR" source="GuestAgent"><UnhandledError><Message>Installing the RdAgent service failed.</Message><Number>-2147467259</Number><Description>This name may not contain the ' ' character:

VM 代理 .msi 文件使用 WMI StdRegProv 访问注册表。 如果 WMI 无法正常工作,.msi 文件无法从注册表设置 RdAgent 服务路径。 因此,.msi 文件安装失败。

解决方案

  1. 打开提升的命令提示符窗口。
  2. 若要测试 WMI StdRegProv 是否正常工作,请运行以下 WMIC 命令,并将输出复制到文本文件:
wmic /namespace:\\root\default Class StdRegProv Call GetDWORDValue hDefKey="&H80000002" sSubKeyName="SYSTEM\CurrentControlSet\Services\Winmgmt" sValueName=Start

如果你使用的是 Windows Server 2025 或更高版本,但未手动安装 WMIC,请打开提升的 PowerShell 窗口以测试 StdRegProv:

Invoke-CimMethod -ClassName StdRegProv -MethodName GetDWORDValue -Arguments @{sSubKeyName = 'SYSTEM\CurrentControlSet\Services\Winmgmt';sValueName = 'Start'}
  1. 运行以下 WINMGMT 命令来验证 WMI 存储库,并将输出复制到文本文件:
winmgmt /verifyrepository
  1. 备份 WMI 存储库:
xcopy c:\windows\system32\wbem\repository c:\windows\system32\wbem\repository.bak /e /i
  1. 运行以下命令来修复 WMI 问题,并将输出复制到文本文件:
winmgmt /salvagerepository
  1. 再次尝试安装 VM 代理 .msi。 如果它成功完成,请等待一两分钟,然后检查 RdAgent 服务是否正在运行。
wmic service rdagent list brief
  1. 如果 WMIC 命令显示 RdAgent 正在运行,则应解决此问题。 如果 WMIC 命令失败或显示 RdAgent 未运行,请转到下一步。

  2. 运行以下命令以重置 WMI 存储库:

net stop winmgmt /y
winmgmt /resetrepository
net start winmgmt
  1. 再次尝试安装 VM 代理 .msi。 如果成功完成,请等待一两分钟,然后检查 RdAgent 服务是否正在运行:
wmic service rdagent list brief
  1. 此时,如果 WMIC 命令失败或仍未显示 RdAgent 正在运行,请将 C:\Windows\Panther\VMAgentInstall.xml 文件发送到Microsoft支持进行评审。

Windows Azure 来宾代理服务或 RdAgent 服务在启动时停止响应

记录系统事件错误 7031 或 7034,C:\WindowsAzure\logs\TransparentInstaller.log显示以下条目:

[ERROR] System.Configuration.ConfigurationErrorsException: The type 'Microsoft.VisualStudio.Diagnostics.ServiceModelSink.Behavior, Microsoft.VisualStudio.Diagnostics.ServiceModelSink, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' registered for extension 'Microsoft.VisualStudio.Diagnostics.ServiceModelSink.Behavior' could not be loaded.

(C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config line 242)

解决方案

如果启用了 Windows Communication Framework (WCF) 分析,则可能会出现此问题。 仅在调试 WCF 问题时才应启用 WCF 分析。 运行生产工作负荷时不应启用它。

若要禁用 WCF 分析,请执行:

  • 打开提升的命令提示符窗口。
  • 若要备份现有 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config 文件,请运行以下命令:
cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config
copy machine.config machine.config.bak
  • 若要在记事本中编辑文件,请运行 notepad machine.config。 删除以下文本(但请注意不要同时删除可能位于同一行的任何其他文本):
<add name="Microsoft.VisualStudio.Diagnostics.ServiceModelSink.Behavior" type="Microsoft.VisualStudio.Diagnostics.ServiceModelSink.Behavior, Microsoft.VisualStudio.Diagnostics.ServiceModelSink, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

删除以下文本(但请注意不要同时删除可能位于同一行的任何其他文本):

<commonBehaviors><endpointBehaviors><Microsoft.VisualStudio.Diagnostics.ServiceModelSink.Behavior/></endpointBehaviors><serviceBehaviors><Microsoft.VisualStudio.Diagnostics.ServiceModelSink.Behavior/></serviceBehaviors></commonBehaviors>
  • 保存并关闭该文件。
  • 重启来宾代理服务:
net stop Rdagent
net stop WindowsAzureGuestAgent

net start Rdagent
net start WindowsAzureGuestAgent
  • 在某些情况下,可能需要重启 VM 才能使 WCF 禁用生效。

后续步骤

与其 GitHub 存储库列出了与 Azure VM 代理关联的其他已知问题。

第三方信息免责声明

本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 对这些产品的性能和可靠性不作任何明示或默示担保。

第三方联系人免责声明

Microsoft 会提供第三方联系信息来帮助你查找有关本主题的其他信息。 此联系信息可能会更改,恕不另行通知。 Microsoft 不保证第三方联系信息的准确性。

联系我们寻求帮助

如果有疑问,可以询问 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区