当前位置: 移动技术网 > IT编程>网络>Dos/Bat > 批处理的api WMIC学习体会有感第1/2页

批处理的api WMIC学习体会有感第1/2页

2017年12月12日  | 移动技术网IT编程  | 我要评论
给黑手专栏里写的文章 批处理的api--wmic学习体会 lcx 在这篇文章里也许你看不到很多奇特有用的的实际例程,但是呢,授人以鱼不如授人以渔,希望我的文章能让你通俗易懂

至于别名啦,就是给主板、服务、系统、进程啦这些和计算机相关的东东起了个英文名,在wmic.exe /?命令行下也可以看到。
wql语句和我们平常用的注入时的sql语句的语法几乎是一模一样,甚至更简单。一般是where name="xxx" and 之类的,不过有时候要把name=“xxx"这样的格式换成"name='xxx'"或者是where(name='xxx')这样,反正正常情况下不行的话就换个写法。

动词呢,就那么简单几个assoc、call、create、delete、get、list、set,从英文名字上应当可以看出它们是用来干什么的。不过说实话,assoc我真的还没用到过。
至于副词(动词的参数),就是得到用动词+它的参数得到对象的属性。像属于list动词的副词,就是显示个什么样的呀,例如显示详细状态或简要状态。
动词开关就好比显示个横表格式的或者显示个竖表格式的或者输出个什么样格式的文件,或者是几秒来重复显示信息等等,有的动词并没有开关。

二、一步一步来完成我们的wmic命令行
wmic里有个别名是logicaldisk,就是对磁盘进行管理。我们先按照最简单的格式来写,在cmd命令行下输入●wmic logicaldisk list●(wmic.exe+别名+list动词),稍等一会儿屏幕上会出现本地硬盘的各式各样的数据,看上去杂乱无章。这样子太不方便看了,我们来改写一下,改成●wmic logicaldisk list brief●,在list动词后加个brief参数,也就是brief副词,显示的就会很整齐,效果如下:


deviceid brief freespace   providername size        volumename
a:        2
c:        3          2925694976                6805409792 winxp
d:        3          1117487104                1759936512 work
e:        5


大家可能注意到了上面命令行中有动词list和副词brief。list动词决定显示的信息格式与范围,它有brief、full、instance、status、system、writeable等多个参数(副词),full只是它的一个参数,也是list的缺省参数,表示显示所有的信息。其他几个参数顾名思义,如brief表示只显示摘要信息,instance表示只显示对象实例,status表示显示对象状态,writeable表示只显示该对象的可写入的属性信息等。
我们再来把语句加点东东,在上边磁盘返回信息当中的deviceid的值为3时表示是本地硬盘的分区,如果是5为光区,为2则是移动磁盘了。我们把语句改一下,加入wql语句,只显示本地磁盘。语句改成●wmic logicaldisk where "drivetype=3" list brief●或者是●wmic logicaldisk where(drivetype=3) list brief●,显示效果都是下边的样子:

deviceid drivetype freespace   providername size        volumename
c:        3          2925686784                6805409792 winxp
d:        3          1117487104                1759936512 work

但是上边的格式呢显示的我们还是不太满意,providername不知是个什么东东也给显示出来了,我们只想要我们想要的东东,像卷标volumename之类的我们也不要它,再把语句改一下,换个get动词,命令改为●wmic logicaldisk where "drivetype=3" get deviceid,size,freespace,description,filesystem●,返回信息如下:
★ 
deviceid,size,freespace,description,filesystem
description   deviceid filesystem freespace   size
本地固定磁盘 c:        fat32       2925686784 6805409792
本地固定磁盘 d:        fat         1117487104 1759936512

至于get动词后面跟的参数你可以先用list来查看一下就明白了。好了,这回可以得到我们想要的结果了。不过命令里的开关我们还没用到呢,加几个全局开关吧。先来加个/output吧,让它把显示信息输出到一个文件中,命令如下:●wmic /output:a.html logicaldisk where "drivetype=3" get deviceid,size,freespace,description,filesystem●,这样一来刚才屏幕上返回的信息就到当前目录的a.htm里了。但是a.htm打开看看后,根本就像一个记事本一样,没有任何样式,看起来也不美观,我们给它指定一个样式,就要用到format这个动词开关了,命令改为●wmic /output:a.html logicaldisk where "drivetype=3" get deviceid,size,freespace,description,filesystem /format:htable●,这样一来a.htm里就花花绿绿的用表格显示我们本地磁盘的信息了。也许你要问,htable是什么东东,其实这是一个文件,你想要上边的a.html什么格式,就可以在c:\windows\system32\wbem这里找一个你想要的格式的文件名,具体有以下一些文件:

csv
hform
hmof
htable
hxml
list
table
value
htable-sortby
htable-sortby.xsl
texttablewsys
texttablewsys.xsl
wmiclimofformat
wmiclimofformat.xsl
wmiclitableformat
wmiclitableformat.xsl
wmiclitableformatnosys
wmiclitableformatnosys.xsl
wmiclivalueformat
wmiclivalueformat.xsl


还有人也许要问了,我只想显示c:盘的,不要其它盘的可以做到吗?当然可以,这就要用到wql语句的name这个变量了。你可以先用●wmic logicaldisk list instance●看到name的具体名字,然后更改上边的wql语句。好啦,我们改一下,改成●wmic /output:a.html logicaldisk where "name='c:'" get deviceid,size,freespace,description,filesystem /format:htable或者wmic /output:a.html logicaldisk where(name='c:') get deviceid,size,freespace,description,filesystem /format:htable●就可以了。值得注意的是我们在drivetype=3的没有用到单引号是因为3是数字型的,而c:是字符型的所以要用单引号或双引号。不过要注意的是如果在wql语句中用到了and,请用()或者""把语句引起来。
这样一来,我们最后的语句基本符合了我文章开头说的wmic的命令格式是“wmic+开关+别名+wql语名+动词+副词(或者说是动词的参数)+动词开关”。不过wmic可不只能对本机操作,还可以对远程机器进行操作,我们再来加三个全局开关,让我们的这条命令对远程格式进行操作,命令就是:

●wmic /node:"192.168.8.100" /user:"administrator" /password:"lcx" /output:a.html logicaldisk where "name='c:'" get deviceid,size,freespace,description,filesystem /format:htable●

其中node开关表示对哪台机器进行访问,user和password当然是远程机器的用户名和密码了,这个命令有了以上的讲解,大家应当一目了然了吧。到现在为止,我们的动词只用到了get和list,我们再加一个set来改变c:盘的卷标。命令如下:●wmic logicaldisk where "name='c:'" set volumename ="lcx"●,这样大家就更进一步清楚了这个格式的用法。写了这么多字,也许你要问到我wmic最有用的开关是什么,当然是"?"了,如果那个命令不会用,可以用wmic /? 、wmic logicaldisk /?、wmic logicaldisk list /?、wmic logicaldisk set /?这样仪次来查询用法。

三、总结
wmic是很强大的,像开2003的3389一句话就可以做到:●wmic rdtoggle where servername='%computername%' call setallowtsconnections 1●。不过呢,
这篇文章估计会有让观众上当受骗的感觉,一个wmic的磁盘命令写了这么长的篇幅,具体的奇淫技巧却没有看到。不过我想有了本文的基础,你研究wmic其它的别名像进程、服务、bios、主板呀,都会有一个切入点,具体的好的技巧如开3389等就要靠大家去研究发现了。
2

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网