我一直依靠这两个命令:
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.
我对此感到非常震惊。不赞成使用吗?好吧...那我绝对不应该依赖它。那么,这两个命令的“现代替代品”是什么?它们甚至存在吗?他们为什么只告诉我们该信息“已弃用”,且零信息?
答案 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程序等的命令,否则它不能满足要求,因为它正在删除其他程序所依赖的工具而无需替换。