Board logo

标题: [原创] [分享]wmic重要概念:类、实例、名称空间、别名等 [打印本页]

作者: applba    时间: 2011-5-26 07:49     标题: [分享]wmic重要概念:类、实例、名称空间、别名等

本帖最后由 applba 于 2011-5-26 08:08 编辑

1、基本概念

对象
对象的英文单词是Object,基本意思是东西、物体。
所有你看到的、遇到的甚至想到的东西、物体、人,都可以称为对象。
在计算机方面,对象也是一个广义的概念,所有的静态的和动态的东西都可以看作对象。
包括文件啊、进程啊、句柄啊、窗口啊、变量啊等全部都可以是对象。
我的理解就是 对象就是要处理的目标。

类(别)
对象这个概念真他妈模糊,因为神马都可以是对象。
于是我们把这些东西啊、物体啊、人啊进行归纳,把一些具有相同特点抽象出来,组成一个类(别)。
比如、我们说到“树”的时候,它就是一个“类”,它包含了很多很多种类的树,这些树都有共同的特征。
每一个类都有有些共同的特性,比如“树”都是是植物、都能进行光合作用、树可以长高。
每一个类下面还可以继续细分,比如“树”下面可以分出子类“杨树”、“柳树”等。
任何对象、只要能找到一些共同特点,就可以从它们抽象出一个类。
在计算机中,我们可以抽象出很多类,比如“文件”类、“进程”类等。
计算机中的类一般都有“共同的”属性、方法、动作等。
由对象到类,是从具体到抽象的过程。

实例
类是一个笼统的静态的抽象概念。
比如我们说到“同学”时,一般并不具体到某个或某些人,它只是一个概念。
再比如我们提到王晓明时,这个就很具体了,他是一个活生生的人啊。王晓明就是“同学”的一个实例。
当然了、作为“同学”的一个实例、王晓明具有“同学”的共同特点,比如他们年龄相仿、老师相同。
在计算机中,我们新建一个文件a.txt,这个a.txt就是“文件”的一个实例。
很显然一个实例可以继承类的所有特性,同时还可能有自己的专属特性。
由类到实例、是从抽象到具体的过程。


2、名字空间

为了便于管理,把这些类和他们的实例集合在一起,就组成了一个名字空间(或命名空间)。
名字空间可以相互联系和组织成一个具有任意层次的由类和类的实例组成的网状结构。
这种结构有点象文件系统的树状结构,在同一个层次的情况下,名字空间必须具有互异的名称。
为了表示它们的层次结构你可以用右下线表示这种关系,如:Namespace1\Namespace2\……\LastNamespace
虽然说这些名字空间可以表示成这样的层次结构,但是这些名字空间之间没有类的继承关系。
也就是说,子一级的名字空间中的类不会自动继承父一级的名字空间中的类。

所有的WMI包含了下面这些预定义的名字空间:
●root
●toor\default
●root\cimv32

root名字空间是专门为包含其他的名字空间而设计的名字空间,WMI把其他的名字空间都放在这个名字空间下面。
toor\default名字空间包含了基本上系统的类,而root\cimv32名字空间主要是包含了在Win32环境下运行的一些类。
比如:Win32_logicalDisk和Win32_OperatingSystem。很多操作基本上都是在root\cimv32名字空间下发生的。


3、别名

WMIC提供了到 WMI 的简单命令行接口。WMIC比WMI简单、直观得多,主要是由于其使用了别名(Alias)。
别名机制获取用户在命令行上输入的一些简单命令,按照预定义的方式操作WMI名称空间。
例如根据一个简单的WMIC别名Get命令构造出一个复杂的WMI查询语言(WQL)命令。
从这个意义上看,别名是用户和名称空间之间一个简化操作的中间层。
别名和名字空间是一种对应关系,但它屏蔽了对名称空间的复杂操作。

例如,执行这个简单的WMIC命令,就可以获得用户帐户的基本信息:wmic useraccount list brief
在上面的命令中,Useraccount别名执行了一个Win32_Useraccount类的WQL查询,以文本的形式显示出从该类提取的信息。
另外,WMIC还以文本的形式显示出Win32_Useraccount类的属性。
除了文本形式的输出之外,WMIC还能够以其他形式输出命令执行结果,例如XML、HTML或者CSV(逗号分隔的文本文件)。

WMIC以WMI模式中类的实例的形式保存别名。
默认的别名类——MSFT_CliAlias,以及其他支持WMIC的类保存在模式的默认名称空间,或者说root\cli角色。
角色可以简单地看成专门用来支持WMIC的另一个WMI名称空间。
默认角色root\cli连接到root\cimv2名称空间,操作root\cimv2之内的类。

对于 WMIC 包括的别名列表,请在命令提示符输入 /?。
有关具体别名的详细信息,请输入:<alias> /?


4、角色

每个 WMIC 角色都能有自己的别名。
/Role 全局开关可用于更改角色。

角色 - 指定包含别名定义的角色的路径,以供实用程序会话使用。
用法:/ROLE:<namespace>
注意: wmic角色实际上是名称空间,应以(名称空间的)同样方式处理 -
      即应该使用合适的相对路径(默认名称空间是'\\root\cli')。
注意: 如果开关的值中含有特殊字符,如 '-' or '/',请使用双括号。


英文版:
ROLE - Path for the role containing the alias definitions to be available for the utility session.
USAGE: /ROLE:<namespace>
NOTE: Roles are actually namespaces and should be treated in the same way -
      i.e. relative paths should behave appropriately (default namespace is'\\root\cli').  
NOTE: Enclose the switch value in  double quotes, if the value contains special  characters like '-' or '/'.

WHERE 从句
可以通过包含 WHERE() 从句对别名返回特定的实例。
WHERE() 从句必须包括 WHERE 从句以进行有效的 WQL 查询。
请查看 WQL 语法的 WMI SDK。WHERE() 从句必须在别名名称的右边。

例如:
process where (processID>300) list brief


5、概念杂糅

类是抽象概念,实例是类的具体呈现。

名字空间是类和实例的集合,而别名又和名字空间相对应。

名字空间是wmi的概念,而别名是wmic中的概念。

实例中的属性、方法等继承自对应的类。

学习wmic,核心就是学习别名……
作者: applba    时间: 2011-5-26 07:52

本帖最后由 applba 于 2011-5-26 08:06 编辑

从昨天晚上开始,大约8个小时,本人已经打通了wmic的七经八脉……

这个就是本人通宵奋战的成果,说难不难,说简单不简单……

弄清楚了这些概念,wmic一点都不神秘…………

我建议先看入门教程再来看这些概念……


附上本人搜集的wmic学习资料,应该很全面
有理论的,有例子的、有中文的、有英文的

http://u.115.com/file/clwklky4
作者: lxzzr    时间: 2011-5-26 10:40

名称空间还有很多....系统版本不同稍有区别
作者: applba    时间: 2011-5-26 10:49

3# lxzzr


重在理解概念,理解了什么都好说……

如果要弄一个名字空间大全,那是wmi sdk的事情,和wimc关系不大吧
作者: myzam    时间: 2011-5-26 11:49

2# applba


祝贺你!
作者: sxw    时间: 2011-5-26 23:34

让我知道了很多概念,多谢,你在栽树啊!
作者: cjiabing    时间: 2011-5-26 23:52

搞得那么复杂!~
作者: hfg1977    时间: 2011-5-27 16:23

代表全国人民感谢LZ的无私奉献!

另:.docx 是什么文件格式? 不会是WORD的吧? 本人不会用OFFICE软件呀?
   OFFICE软件 太大太垃圾,除办公无使用价值. 建议转换TXT格式.
作者: hfg1977    时间: 2011-5-27 16:23

本帖最后由 hfg1977 于 2011-5-27 16:25 编辑

额?! 重复了一个...
铁通网真不给力呀.
作者: ioripalm    时间: 2012-7-6 14:52

回复 2# applba


    再发一次吧 找不到了
作者: brocale    时间: 2012-7-12 12:04

楼主,提取码过期了,跪求资源~
作者: cjiabing    时间: 2012-7-19 14:31

可参考同类题目:【真】wmic入门教程
http://bbs.bathome.net/thread-12502-1-1.html




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2