【问题标题】:How to export all rows of a WMI query to a file?如何将 WMI 查询的所有行导出到文件?
【发布时间】:2011-03-08 07:49:21
【问题描述】:

给定一个查询,例如

SELECT * FROM WIN32_PROCESS
  1. 有没有办法在结果对象中查询返回的列的名称?
  2. 将结果对象中的所有行写入文本文件,比如

【问题讨论】:

  • 您使用哪种语言编程?
  • 您使用哪种语言进行查询? VB 或 VC++ 上的 WQL ?
  • 我正在使用 VBScript,但 VB.NET 或 C# 中的任何提示也会有所帮助。

标签: wmi wmi-query


【解决方案1】:

有没有办法在结果对象中查询返回的列的名称?

是的。每个 WMI 对象都有Properties_ 集合,该集合提供有关该对象属性的信息。要获取对象中可用属性的名称,请枚举 Properties_ 集合并检查每个项目的 Name

将结果对象中的所有行写入文本文件,比如

枚举所有行并将FileSystemObjectwrite them 用于所需的文本文件。伪代码:

create a text file and open it for writing

for each object in the result set
  for each property in the object
    write the property value to the file

close the file


或者,您可以使用wmic 为您完成所有工作:

wmic /output:e:\processes.txt process get /all
wmic /output:e:\processes.csv process get /all /format:csv

【讨论】:

  • 谢谢海伦。使用您的伪代码作为基础,我可以编写列名和值 - 命令行代码(示例)非常有用。
  • 对于将来遇到此问题的任何人,输出标志位于别名之前。 wmic /output:c:\processes.csv process get /all /format:csv 并且生成的 csv 不会被 excel 自动读取,您必须指定分隔符才能使其看起来正确..
  • 当我使用此命令(在 Windows 7 64 位上)时,我得到“无效的 XSL 格式(或)文件名”。不过,Server 2003 具有可用的 CSV 格式。是否可以在 Windows 7 上获取 CSV?
  • @PaulMoore:在 Windows 7 64 位上为我工作。 this 有帮助吗?
  • @Helen 是的,该命令有效,谢谢。当然,在 powershell(我正在使用)中获取正确的语法是一场噩梦,但你并不真的需要在 powershell 中使用 WMIC,所以这不是这样的问题 :-)
猜你喜欢
  • 2010-11-19
  • 2018-03-22
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多