Windows Server 2016执行Get-WmiObject报错‘Win32_DCOMApplicationSetting无效类’排查
问题描述
在Windows Server 2016 Standard主机上执行以下PowerShell命令时触发报错:
Get-WmiObject -query ('SELECT * FROM Win32_DCOMApplicationSetting WHERE AppId = "{00020906-0000-0000-C000-000000000046}"') -EnableAllPrivileges
报错信息如下:
Get-WmiObject : Invalid class "Win32_DCOMApplicationSetting" At line:1 char:1 + Get-WmiObject -query ('SELECT * FROM Win32_DCOMApplicationSetting WHE ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidType: (:) [Get-WmiObject], ManagementException + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
该主机已安装Microsoft Office 2016,上述AppID GUID对应“Microsoft Excel Application”DCOM应用,且其他配置相同的主机执行该命令可成功。
可能的问题原因
- Win32_DCOMApplicationSetting类未正确注册:该WMI类属于WMI的CIMV2命名空间,若主机上该类的注册信息丢失或损坏,就会触发“Invalid class”错误,可能是系统更新、第三方软件修改或注册表异常导致。
- Office 2016安装不完整或损坏:虽然已安装Office,但Excel对应的DCOM组件或WMI相关注册项未正确部署,比如安装过程中断、部分组件被误删,导致WMI无法识别到对应AppID的DCOM类。
- WMI存储库损坏:WMI存储库(
%SystemRoot%\System32\wbem\Repository)是存储WMI类和实例数据的核心,若存储库损坏,会导致部分WMI类无法正常读取。 - PowerShell架构与Office不匹配:如果安装的是32位Office,但在64位系统上运行64位PowerShell,可能出现WMI类访问异常——32位Office的DCOM注册项仅存在于32位WMI命名空间视图中。
- 权限不足:尽管命令添加了
-EnableAllPrivileges,但当前执行PowerShell的账户可能缺少访问WMI CIMV2命名空间或DCOM配置项的权限,导致无法加载该类。
内容的提问来源于stack exchange,提问作者Tom Hunter
相关产品推荐
相关产品推荐

