Tasklist/Taskkill命令返回错误:无效类或找不到(WMI损坏)
现象描述:
1.电脑上任务管理器可以正常使用
2.taskkill /?命令可以正常运行
3.使用tasklist命令时会出错的,错误是“错误:无效类”
4.使用taskkill进程会出错,错误是“错误:无效类”或者是“错误:找不到”,但是在任务管理器可以看到要kill的进程
调查过程:
1.首先怀疑是系统文件损坏,使用sfc /scannow检查系统文件并未发现错误
2.使用:for %1 in (%windir%\system32*.dll) do regsvr32.exe /s %1 重新注册dll后未解决该问题
3.进一步调查怀疑是wmi损坏导致的,使用wbemtest对该怀疑进行了验证,操作如下:
(1)命令行中运行wbemtest,出现如下界面
(2)点击连接,在命名空间中输入root\cimv2,点击连接
3.出现如下界面后,点击查询
4.在输入查询中输入如下内容:select * from win32_process 点击应用
5.若是WMI没有问题,则会出现如下界面
但是我在运行后却出现了如下界面
通过该现象可以确认是WMI损坏导致的这个问题
解决办法:
通过查询相关文章,通过如下方法可以解决该问题
(1)在C:\Windows\System32\Wbem.目录下打开cmd
(2)运行如下脚本
@echo off
sc config winmgmt start= disabled
net stop winmgmt /y
%systemdrive%
cd %windir%\system32\wbem
for /f %%s in (‘dir /b *.dll’) do regsvr32 /s %%s
wmiprvse /regserver
winmgmt /resyncperf
sc config winmgmt start= auto
net start winmgmt
for /f %%s in (‘dir /s /b *.mof *.mfl’) do mofcomp %%s
(3)重启
根本原因调查:
查询相关文档,发现WMI损坏是几乎无法定位根本原因的,不过有几个可能的原因
1.卸载和安装驱动过程中导致
2.某些软件安装或运行过程会操作WMI导致该问题
3.异常断电
由于该问题是由WMI损坏导致,而且无法明确根本原因,所以在出现这种问题时建议重装操作系统,因为WMI的损坏可能影响到很多地方,而我们不能确定tasklist和taskkill使用的WMI修复好了别的也就没有问题,所以建议重装操作系统。
关于该问题我查到的觉得有用的链接如下:
1.https://techcommunity.microsoft.com/t5/ask-the-performance-team/wmi-rebuilding-the-wmi-repository/ba-p/373846
2.https://serverfault.com/questions/531450/erroneous-tasklist-exe
3.https://social.technet.microsoft.com/wiki/contents/articles/26158.root-cause-analysis-corrupted-wmi.aspx#:~:text=Due%20to%20the%20complex%20nature%20of%20the%20Database%2FRepository,it%20accepts%20the%20change%20and%20becomes%20a%20Victim.
上述链接中还介绍了很多定位问题的方法,希望可以帮到大家。