关于“ WMIC已过时”,我该怎么办?

时间:2019-07-20 04:41:53

标签: windows command-line-interface wmic

我一直依靠这两个命令:

wmic memorychip get capacity        // Outputs how much RAM there is (in a convoluted manner).
wmic diskdrive get Status,Model     // Checks whether the HDDs/SSDs on the system are (supposedly) still "OK" and working.

今天,我随意输入“ wmic”以查看是否可以将JSON输出输出到上述命令。它以红色文字打印的第一件事是:

WMIC is deprecated.

我对此感到非常震惊。不赞成使用吗?好吧...那我绝对不应该依赖它。那么,这两个命令的“现代替代品”是什么?它们甚至存在吗?他们为什么只告诉我们该信息“已弃用”,且零信息?

2 个答案:

答案 0 :(得分:4)

如评论中所述,WMIC是充当与WMI通信的接口的实用程序。不赞成使用WMI本身,而不仅仅是“接口”。由于Microsoft正在推动PowerShell,所以我相信正式的后续产品wmic将是PowerShell Commandlet Get-WmiObject。如何使用它可以在Microsoft文档中找到:LINK

对于您的特殊情况,将使用PowerShell替代方法:

  

wmic内存芯片获得容量

Get-WMIObject -Class Win32_PhysicalMemory | Select-Object capacity

  

wmic diskdrive获取状态,型号

Get-WMIObject -Class Win32_diskdrive | Select-Object status, model

wmic中的命令通常是从WMI类名称派生的,但这并不是经验法则。使用PowerShell,您将改为使用真实的类名访问WMI,因此如果需要,您可能需要寻找其他类

PowerShell相比,wmic的无可争议的优势在于,输出是一个对象,您可以轻松地继续使用输出,而wmic仅返回最终需要解析的字符串,例如,如果在内部使用脚本,这带来了另一个好处,例如输出格式-您可以轻松地将任何输出重新格式化为例如您提到的JSON,只需将命令通过另一个管道传递到命令行开关ConvertTo-Json中,您将获得预期的输出。

示例:

Get-WMIObject -Class Win32_diskdrive | select status, model | ConvertTo-JSON

输出:

{ "status": "OK", "model": "SAMSUNG MZNTY256HDHP-000L7" }

希望这会有所帮助

答案 1 :(得分:-1)

除非powershell可以像dos运行时那样用于完成Java程序等的命令,否则它不能满足要求,因为它正在删除其他程序所依赖的工具而无需替换。