1. 程式人生 > >Windows WMIC命令使用詳解(附例項)

Windows WMIC命令使用詳解(附例項)

第一次執行WMIC命令時,Windows首先要安裝WMIC,然後顯示出WMIC的命令列提示符。在WMIC命令列提示符上,命令以互動的方式執行

執行“wmic”命令啟動WMIC命令列環境。這個命令可以在XP或 .NET Server的標準命令列直譯器(cmd.exe)、Telnet會話或“執行”對話方塊中執行。這些啟動方法可以在本地使用,也可以通過.NET Server終端服務會話使用。

第一次執行WMIC命令時,Windows首先要安裝WMIC,然後顯示出WMIC的命令列提示符。在WMIC命令列提示符上,命令以互動的方式執行。

wimic的執行方式可以有兩種法:

1、搞入wimic進入後輸入命令執行,鍵入wimic後出現wmic:root\cli>時你就可以輸入命令了,如輸入process顯示所有的程序。不知道有什麼命令時可以輸入用/?來顯示幫助。exit 是退出互動模式。具體幫助用法如下:

命令列幫助

命令 例子 說明

/? 或 -? 顯示所有全域性開關和別名的語法

/ /? /user /? 顯示指定全域性開關的資訊

/? class /? 顯示某個命令的資訊

/? memcache /? 顯示某個別名的資訊

/? temperature get /? 顯示別名與動詞組合的資訊

/?:Full irq get /?:Full 顯示動詞的幫助資訊

如:我要檢視process命令的幫助,鍵入:process/?後顯示如下:

wmic:root\cli>process /?

PROCESS - 程序管理。

提示: BNF 的別名用法。

(<alias> [WMIObject] | <alias> [<path where>] | [<alias>] <path where>) [<verb clause>].

用法:

PROCESS ASSOC [<format specifier>]

PROCESS CALL <method name> [<actual param list>]

PROCESS CREATE <assign list>

PROCESS DELETE

PROCESS GET [<property list>] [<get switches>]

PROCESS LIST [<list format>] [<list switches>]

2、用wimic 後面直接跟命令執行,如wmic process 就顯示了所有的程序了。這兩種執行方法就是:互動模式(Interactive mode)和非互動模式(Non-Interactive mode)

下面我們能過一些例項來說明用法:

=====================================================================

顯示程序的詳細資訊

輸入 process where name="maxthon.exe" list full

將顯示出mxathon.exe程序所有的資訊如下:

CommandLine="D:\mytools\Maxthon2\Maxthon.exe"

CSName=CHINA-46B1E8590

Description=Maxthon.exe

ExecutablePath=D:\mytools\Maxthon2\Maxthon.exe

ExecutionState=

Handle=684

HandleCount=2296

InstallDate=

KernelModeTime=3495000000

MaximumWorkingSetSize=1413120

MinimumWorkingSetSize=204800

Name=Maxthon.exe

OSName=Microsoft Windows XP Professional|C:\WINDOWS|

OtherOperationCount=307814

OtherTransferCount=60877207

PageFaults=1367971

PageFileUsage=89849856

ParentProcessId=1924

PeakPageFileUsage=90091520

PeakVirtualSize=385802240

PeakWorkingSetSize=94031872

Priority=8

PrivatePageCount=89849856

ProcessId=684

QuotaNonPagedPoolUsage=43496

QuotaPagedPoolUsage=257628

QuotaPeakNonPagedPoolUsage=72836

QuotaPeakPagedPoolUsage=271372

ReadOperationCount=85656

ReadTransferCount=121015982

SessionId=0

Status=

TerminationDate=

ThreadCount=57

UserModeTime=1778750000

VirtualSize=353206272

WindowsVersion=5.1.2600

WorkingSetSize=93716480

WriteOperationCount=30940

WriteTransferCount=24169673

******************************************************************************

停止、暫停和執行服務功能

啟動服務startservice,

停止服務stopservice,

暫停服務pauseservice

Service where caption="windows time" call stopservice ------停止服務

Service where caption="windows time" call startservice ------啟動服務

Service where name="w32time" call stopservice          ------停止服務,注意name和caption的區別。

caption 顯示服務名name服務名稱,如: telnet服務的顯示名稱是telnet 服務名稱是tlntsvr,還有Windows Time服務的名稱是w32time 顯示名稱是"Windows Time"要用引號引起來,主要是有一個空格。

好了具體看一下:輸入Service where caption="windows time" call startservice後有一個確認輸入y就可以了,返回ReturnValue = 0;表示成功

wmic:root\cli>Service where caption="windows time" call startservice

執行 (\\CHINA-46B1E8590\ROOT\CIMV2:Win32_Service.Name="W32Time")->startservice()

方法執行成功。

輸出引數:

instance of __PARAMETERS

{

        ReturnValue = 0;

};

wmic:root\cli>

================================================================================================

顯示出BIOS資訊 wmic bios list full

大家可能注意到了上面命令列中還有兩個引數list和full。list決定顯示的資訊格式與範圍,它有Brief、Full、Instance、 Status、System、Writeable等多個引數,full只是它的一個引數,也是list的預設引數,表示顯示所有的資訊。其他幾個引數顧名思義,如Brief表示只顯示摘要資訊,Instance表示只顯示物件例項,Status表示顯示物件狀態,Writeable表示只顯示該物件的可寫入的屬性資訊等。

************************************************************************=====================

停止程序的操作

例如,執行下面的命令將關閉正在執行的QQ.exe:

例1、wmic process where name='QQ.exe' call terminate

命令執行結束後,WMIC命令列提示出如下結果:

C:\>wmic process where name='QQ.exe' call terminate

執行 (\\CHINA-46B1E8590\ROOT\CIMV2:Win32_Process.Handle="728")->terminate()

方法執行成功。

輸出引數:

instance of __PARAMETERS

{

        ReturnValue = 0;

};

例2、wmic process where name="qq.exe" delete

命令執行結束後,WMIC命令列提示出如下結果:

C:\>wmic process where name="qq.exe" delete

刪除範例 \\CHINA-46B1E8590\ROOT\CIMV2:Win32_Process.Handle="2820"

範例刪除成功。

======================================================================

列出所有的程序   wmic process

==================================================================

連線遠端電腦

★★連線遠端的電腦,不過好象對要開一些相應的服務

wmic /node:"192.168.203.131" /password:"" /user:"administrator"

BIOS - 基本輸入/輸出服務 (BIOS) 管理

★★檢視bios版本型號

wmic bios get Manufacturer,Name

WMIC設定IP地址

★★配置或更新IP地址:

wmic nicconfig where index=0 call enablestatic("192.168.1.5"), ("255.255.255.0") ;index=0說明是配置網路介面1。

配置閘道器(預設路由):

wmic nicconfig where index=0 call setgateways("192.168.1.1"),(1)

COMPUTERSYSTEM - 計算機系統管理

★★檢視系統啟動選項,boot的內容

wmic COMPUTERSYSTEM get SystemStartupOptions

★★檢視工作組/域

wmic computersystem get domain

★★更改計算機名abc為123

wmic computersystem where "name='abc'" call rename 123

★★更改工作組google為MyGroup

wmic computersystem where "name='google'" call joindomainorworkgroup "","","MyGroup",1

CPU - CPU 管理

★★檢視cpu型號

wmic cpu get name

DATAFILE - DataFile 管理

★★查詢e盤下test目錄(不包括子目錄)下的cc.cmd檔案

wmic datafile where "drive='e:' and path='\\test\\' and FileName='cc' and Extension='cmd'" list

★★查詢e盤下所有目錄和子目錄下的cc.cmd檔案,且檔案大小大於1K

wmic datafile where "drive='e:' and FileName='cc' and Extension='cmd' and FileSize>'1000'" list

★★刪除e盤下檔案大小大於10M的.cmd檔案

wmic datafile where "drive='e:' and Extension='cmd' and FileSize>'10000000'" call delete

★★刪除e盤下test目錄(不包括子目錄)下的非.cmd檔案

wmic datafile where "drive='e:' and Extension<>'cmd' and path='test'" call delete

★★複製e盤下test目錄(不包括子目錄)下的cc.cmd檔案到e:\,並改名為aa.bat

wmic datafile where "drive='e:' and path='\\test\\' and FileName='cc' and Extension='cmd'" call copy "e:\aa.bat"

★★改名c:\hello.txt為c:\test.txt

wmic datafile "c:\\hello.txt" call rename c:\test.txt

★★查詢h盤下目錄含有test,檔名含有perl,字尾為txt的檔案

wmic datafile where "drive='h:' and extension='txt' and path like '%\\test\\%' and filename like '%perl%'" get name

DESKTOPMONITOR - 監視器管理

★★獲取螢幕解析度

wmic DESKTOPMONITOR where Status='ok' get ScreenHeight,ScreenWidth

DISKDRIVE - 物理磁碟驅動器管理

★★獲取物理磁碟型號大小等

wmic DISKDRIVE get Caption,size,InterfaceType

ENVIRONMENT - 系統環境設定管理

★★獲取temp環境變數

wmic ENVIRONMENT where "name='temp'" get UserName,VariableValue

★★更改path環境變數值,新增e:\tools

wmic ENVIRONMENT where "name='path' and username='<system>'" set VariableValue="%path%;e:\tools"

★★新增系統環境變數home,值為%HOMEDRIVE%%HOMEPATH%

wmic ENVIRONMENT create name="home",username="<system>",VariableValue="%HOMEDRIVE%%HOMEPATH%"

★★刪除home環境變數

wmic ENVIRONMENT where "name='home'" delete

FSDIR - 檔案目錄系統專案管理

★★查詢e盤下名為test的目錄

wmic FSDIR where "drive='e:' and filename='test'" list

★★刪除e:\test目錄下除過目錄abc的所有目錄

wmic FSDIR where "drive='e:' and path='\\test\\' and filename<>'abc'" call delete

★★刪除c:\good資料夾

wmic fsdir "c:\\good" call delete

★★重新命名c:\good資料夾為abb

wmic fsdir "c:\\good" rename "c:\abb"

LOGICALDISK - 本地儲存裝置管理

★★獲取硬碟系統格式、總大小、可用空間等

wmic LOGICALDISK get name,Description,filesystem,size,freespace

NIC - 網路介面控制器 (NIC) 管理

OS - 已安裝的作業系統管理

★★設定系統時間

wmic os where(primary=1) call setdatetime 20070731144642.555555+480

PAGEFILESET - 頁面檔案設定管理

★★更改當前頁面檔案初始大小和最大值

wmic PAGEFILESET set InitialSize="512",MaximumSize="512"

★★頁面檔案設定到d:\下,執行下面兩條命令

wmic pagefileset create name='d:\pagefile.sys',initialsize=512,maximumsize=1024

wmic pagefileset where"name='c:\\pagefile.sys'" delete

PROCESS - 程序管理

★★列出程序的核心資訊,類似工作管理員

wmic process list brief

★★結束svchost.exe程序,路徑為非C:\WINDOWS\system32\svchost.exe的

wmic process where "name='svchost.exe' and ExecutablePath<>'C:\\WINDOWS\\system32\\svchost.exe'" call Terminate

★★新建notepad程序

wmic process call create notepad

PRODUCT - 安裝包任務管理

★★安裝包在C:\WINDOWS\Installer目錄下

★★解除安裝.msi安裝包

wmic PRODUCT where "name='Microsoft .NET Framework 1.1' and Version='1.1.4322'" call Uninstall

★★修復.msi安裝包

wmic PRODUCT where "name='Microsoft .NET Framework 1.1' and Version='1.1.4322'" call Reinstall

SERVICE - 服務程式管理

★★執行spooler服務

wmic SERVICE where name="Spooler" call startservice

★★停止spooler服務

wmic SERVICE where name="Spooler" call stopservice

★★暫停spooler服務

wmic SERVICE where name="Spooler" call PauseService

★★更改spooler服務啟動型別[auto|Disabled|Manual] 釋[自動|禁用|手動]

wmic SERVICE where name="Spooler" set StartMode="auto"

★★刪除服務

wmic SERVICE where name="test123" call delete

SHARE - 共享資源管理

★★刪除共享

wmic SHARE where name="e$" call delete

★★新增共享

WMIC SHARE CALL Create "","test","3","TestShareName","","c:\test",0

SOUNDDEV - 聲音裝置管理

wmic SOUNDDEV list

STARTUP - 使用者登入到計算機系統時自動執行命令的管理

★★檢視msconfig中的啟動選項

wmic STARTUP list

SYSDRIVER - 基本服務的系統驅動程式管理

wmic SYSDRIVER list

USERACCOUNT - 使用者帳戶管理

★★更改使用者administrator全名為admin

wmic USERACCOUNT where name="Administrator" set FullName="admin"

★★更改使用者名稱admin為admin00

wmic useraccount where "name='admin" call Rename admin00

================================================獲取補丁資訊

★★檢視當前系統打了哪些補丁

/node:legacyhost qfe get hotfixid

檢視CPU當前的速度

★★cpu當前的速度

wmic cpu get CurrentClockSpeed

遠端計算機的遠端桌面連線

★★WMIC命令開啟遠端計算機的遠端桌面連線

執行wmic /node:192.168.1.2 /USER:administrator

PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1

具體格式:

wmic /node:"[full machine name]" /USER:"[domain]\[username]"

PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1

wmic 獲取程序名稱以及可執行路徑:

wmic process get name,executablepath

wmic 刪除指定程序(根據程序名稱):

wmic process where name="qq.exe" call terminate

或者用

wmic process where name="qq.exe" delete

wmic 刪除指定程序(根據程序PID):

wmic process where pid="123" delete

wmic 建立新程序

wmic process call create "C:\Program Files\Tencent\QQ\QQ.exe"

在遠端機器上建立新程序:

wmic /node:192.168.201.131 /user:administrator /password:123456 process call create cmd.exe

關閉本地計算機

wmic process call create shutdown.exe

重啟遠端計算機

wmic /node:192.168.1.10/user:administrator /password:123456 process call create "shutdown.exe -r -f -m"

更改計算機名稱

wmic computersystem where "caption='%ComputerName%'" call rename newcomputername

更改帳戶名

wmic USERACCOUNT where "name='%UserName%'" call rename newUserName

wmic 結束可疑程序(根據程序的啟動路徑)

wmic process where "name='explorer.exe' and executablepath<>'%SystemDrive%\\windows\\explorer.exe'" delete

wmic 獲取實體記憶體

wmic memlogical get TotalPhysicalMemory|find /i /v "t"

wmic 獲取檔案的建立、訪問、修改時間

@echo off

for /f "skip=1 tokens=1,3,5 delims=. " %%a in ('wmic datafile where name^="c:\\windows\\system32\\notepad.exe" get CreationDate^,LastAccessed^,LastModified') do (

set a=%%a

set b=%%b

set c=%%c

echo 檔案: c:\windows\system32\notepad.exe

echo.

echo 建立時間: %a:~0,4% 年 %a:~4,2% 月 %a:~6,2% 日 %a:~8,2% 時 %a:~10,2% 分 %a:~12,2% 秒

echo 最後訪問: %b:~0,4% 年 %b:~4,2% 月 %b:~6,2% 日 %b:~8,2% 時 %b:~10,2% 分 %b:~12,2% 秒

echo 最後修改: %c:~0,4% 年 %c:~4,2% 月 %c:~6,2% 日 %c:~8,2% 時 %c:~10,2% 分 %c:~12,2% 秒

)

echo.

pause

wmic 全盤搜尋某檔案並獲取該檔案所在目錄

for /f "skip=1 tokens=1*" %i in ('wmic datafile where "FileName='qq' and extension='exe'" get drive^,path') do (set "qPath=%i%j"&@echo %qPath:~0,-3%)

獲取螢幕解析度 wmic DESKTOPMONITOR where Status='ok' get ScreenHeight,ScreenWidth

wmic PageFileSet set InitialSize="512",MaximumSize="512"

設定虛擬記憶體到E盤,並刪除C盤下的頁面檔案,重啟計算機後生效

wmic PageFileSet create name="E:\\pagefile.sys",InitialSize="1024",MaximumSize="1024"

wmic PageFileSet where "name='C:\\pagefile.sys'" delete

獲得程序當前佔用的記憶體和最大佔用記憶體的大小:

wmic process where caption='filename.exe' get WorkingSetSize,PeakWorkingSetSize

以KB為單位顯示

@echo off

for /f "skip=1 tokens=1-2 delims= " %%a in ('wmic process where caption^="conime.exe" get WorkingSetSize^,PeakWorkingSetSize') do (

set /a m=%%a/1024

set /a mm=%%b/1024

echo 程序conime.exe現在佔用記憶體:%m%K;最高佔用記憶體:%mm%K

)

pause

遠端開啟計算機遠端桌面

wmic /node:%pcname% /USER:%pcaccount% PATH win32_terminalservicesetting WHERE (__Class!="") CALL SetAllowTSConnections 1

===========================================================================

批處理的api--WMIC學習體會

在這篇文章裡也許你看不到很多奇特有用的的實際例程,但是呢,授人以魚不如授人以漁,希望我的文章能讓你通俗易懂的瞭解一些wmic的基本知識,可以有一個學習的興趣,讓自己繼續深研一下wmic。

在WINDOWS\Help目下,wmic.chm文件是這樣解釋wmi的:Windows Management Instrumentation (WMI) 是“基於 Web 的企業管理倡議 (WBEM)”(這是一個旨在建立在企業網路上訪問和共享管理資訊的標準的工業倡議)的 Microsoft 的實現。有關 WBEM 的詳細資訊,請訪問 WBEM。XOXWMI 為公用資訊模型 (CIM)(該資料模型描述存在於管理環境中的物件)提供完整的支援。WMI 包括物件儲備庫和 CIM 物件管理器,其中物件儲備庫是包含物件定義的資料庫,物件管理器負責處理儲備庫中物件的收集和操作並從 WMI 提供程式 (WMI provider) 收集資訊。WMI 提供程式 (WMI provider) 在 WMI 和作業系統、應用程式以及其他系統的元件之間充當中介。例如,登錄檔提供程式從登錄檔中提供資訊,而 SNMP 提供程式則從 SNMP 裝置中提供資料和事件。提供程式提供關於其元件的資訊,也可能提供一些方法,這些方法可以操作可設定的元件、屬性,或者操作可能警告您在元件中要發生更改的事件。Windows Management Instrumentation 命令列 (WMIC) 向您提供了簡單的 Windows Management Instrumentation (WMI) 命令列介面,這樣即可利用 WMI 來管理執行 Windows 的計算機。WMIC 與現有命令列程式和實用程式命令相互操作,且很容易通過指令碼或其他面向管理的應用程式來擴充套件 WMIC。

以上的這些說法太專業了,通俗一點講就是wmic.exe是一個命令列程式,可以用它這個介面來實現在命令列下直接管理計算機軟硬體等方方面面的操作,相當於批處理的api了。

一、wmic的基本命令格式簡析

經常看網上的相關資料的話,讀者可能會對wmic有一個基本的認識,不過看得越多估計會越糊塗,起碼我是這樣認為的。其實簡單總結一下,命令格式就是 “wmic+全域性開關+別名+wql語句+動詞+副詞(或者說是動詞的引數)+動詞開關”而已了。這個命令格式可以根據需要來寫全或者寫部份格式,我這裡依次對格式的每個名稱按自己的理解來解釋一下,不過肯定完全不符合微軟專家的定義,只是讓大家弄懂它們而已。

wmic就是wmic.exe,位於windows目錄底下,是一個命令列程式。WMIC可以以兩種模式執行:互動模式(Interactive mode)和非互動模式(Non-Interactive mode),經常使用Netsh命令列的讀者應該非常熟悉這兩種模式。

互動模式。如果你在命令提示符下或通過"執行"菜單隻輸入WMIC,都將進入WMIC的互動模式,每當一個命令執行完畢後,系統還會返回到WMIC提示符下,如"Root\cli",互動模式通常在需要執行多個WMIC指令時使用。互動模式有時還會對一些敏感的操作要求確認,比如刪除操作,最大限度地防止使用者操作出現失誤。

非互動模式。非互動模式是指將WMIC指令直接作為WMIC的引數放在WMIC後面,當指令執行完畢後再返回到普通的命令提示符下,而不是進入到WMIC上下文環境中。WMIC的非互動模式主要用於批處理或者其他一些指令碼檔案中,我在本文中一律用●非互動模式●示例。

開關有以下的全域性開關,打入wmic.exe /?可以看到的(這裡我們先不討論每個開關的具體意思,具體用法看示例):

/NAMESPACE 別名使用的名稱空間路徑。

/ROLE 包含此別名定義的角色路徑。

/NODE 別名使用的伺服器。

/IMPLEVEL 客戶模擬級別。

/AUTHLEVEL 客戶身份驗證級別。

/LOCALE 客戶應用的語言識別符。

/PRIVILEGES 啟用或禁用所有特權。

/TRACE 將除錯資訊輸出到 stderr。

/RECORD 將所有輸入命令和輸出寫入日誌。

/INTERACTIVE 設定或重設互動模式。

/FAILFAST 設定或重置 FailFast 模式。

/USER 會話期間使用的使用者。

/PASSWORD 用於會話登入的密碼。

/OUTPUT 為輸出重新定向指定模式。

/APPEND 為輸出重新定向指定模式。

/AGGREGATE 設定或重置集合模式。

/AUTHORITY Specifies the <authority type> for the connection.

/?[:<BRIEF|FULL>] Usage information.

至於別名啦,就是給主機板、服務、系統、程序啦這些和計算機相關的東東起了個英文名,在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等就要靠大家去研究發現了。

補充:

Windows WMIC命令詳解

rem 檢視cpu

wmic cpu list brief

rem 檢視實體記憶體

wmic memphysical list brief

rem 檢視邏輯記憶體

wmic memlogical list brief

rem 檢視快取記憶體

wmic memcache list brief

rem 檢視虛擬記憶體

wmic pagefile list brief

rem 檢視網絡卡

wmic nic list brief

rem 檢視網路協議

wmic netprotocal list brief

【例】將當前系統BIOS,CPU,主機板等資訊輸出到一個HTML網頁檔案,命令如下:

::得到系統資訊.bat,執行bat檔案即可

::系統資訊輸出到HTML檔案,檢視幫助: wmic /?

::wmic [系統引數名] list [brief|full] /format:hform >|>> [檔名]

wmic bios            list brief   /format:hform > PCinfo.html

wmic baseboard       list brief   /format:hform >>PCinfo.html

wmic cpu             list full    /format:hform >>PCinfo.html

wmic os              list full    /format:hform >>PCinfo.html

wmic computersystem  list brief   /format:hform >>PCinfo.html

wmic diskdrive       list full    /format:hform >>PCinfo.html

wmic memlogical      list full    /format:hform >>PCinfo.html

PCinfo.html

--------------------------------------------------------------------------------

WMIC命令引數幫助參考:

--------------------------------------------------------------------------------

ALIAS                    - 訪問本地機器上的別名

BASEBOARD                - 基板 (也叫母板或系統板) 管理。

BIOS                     - 基本輸入/輸出服務 (BIOS) 管理。

BOOTCONFIG               - 啟動配置管理。

CDROM                    - CD-ROM 管理。

COMPUTERSYSTEM           - 計算機系統管理。

CPU                      - CPU 管理。

CSPRODUCT                - SMBIOS 的計算機系統產品資訊。

DATAFILE                 - DataFile 管理。

DCOMAPP                  - DCOM 程式管理。

DESKTOP                  - 使用者桌面管理。

DESKTOPMONITOR           - 監視器管理。

DEVICEMEMORYADDRESS      - 裝置記憶體地址管理。

DISKDRIVE                - 物理磁碟驅動器管理。

DISKQUOTA                - NTFS 卷磁碟空間使用情況。

DMACHANNEL               - 直接記憶體訪問(DMA)頻道管理。

ENVIRONMENT              - 系統環境設定管理。

FSDIR                    - 檔案目錄系統專案管理。

GROUP                    - 組帳戶管理。

IDECONTROLLER            - IDE 控制器管理。

IRQ                      - 間隔請求線 (IRQ) 管理。

JOB                      - 提供對使用計劃服務安排的工作的訪問。

LOADORDER                - 定義執行依存的系統服務管理。

LOGICALDISK              - 本地儲存裝置管理。

LOGON                    - 登入會話。

MEMCACHE                 - 快取記憶體管理。

MEMLOGICAL               - 系統記憶體管理 (配置佈局和記憶體可用性)。

MEMPHYSICAL              - 計算機系統實體記憶體管理。

NETCLIENT                - 網路客戶端管理。

NETLOGIN                 - (某一使用者的)網路登入資訊管理。

NETPROTOCOL              - 協議 (和其網路特點) 管理。

NETUSE                   - 活動網路連線管理。

NIC                      - 網路介面控制器 (NIC) 管理。

NICCONFIG                - 網路介面卡管理。

NTDOMAIN                 - NT 域管理。

NTEVENT                  - NT 事件日誌的專案

NTEVENTLOG               - NT 時間日誌檔案管理。

ONBOARDDEVICE            - 母板(系統板)內建普通設介面卡裝置的管理。

OS                       - 已安裝的作業系統管理。

PAGEFILE                 - 虛擬記憶體檔案對調管理。

PAGEFILESET              - 頁面檔案設定管理。

PARTITION                - 物理磁碟分割槽區域的管理。

PORT                     - I/O 埠管理。

PORTCONNECTOR            - 物理連線埠管理。

PRINTER                  - 印表機裝置管理。

PRINTERCONFIG            - 印表機裝置配置管理。

PRINTJOB                 - 列印工作管理。

PROCESS                  - 程序管理。

PRODUCT                  - 安裝包任務管理。

QFE                      - 快速故障排除。

QUOTASETTING             - 設定卷的磁碟配額資訊。

RECOVEROS                - 當作業系統失敗時,將從記憶體收集的資訊。

REGISTRY                 - 計算機系統登錄檔管理。

SCSICONTROLLER           - SCSI 控制器管理。

SERVER                   - 伺服器資訊管理。

SERVICE                  - 服務程式管理。

SHARE                    - 共享資源管理。

SOFTWAREELEMENT          - 安裝在系統上的軟體產品元素的管理。

SOFTWAREFEATURE          - SoftwareElement 的軟體產品元件的管理。

SOUNDDEV                 - 聲音裝置管理。

STARTUP                  - 使用者登入到計算機系統時自動執行命令的管理。

SYSACCOUNT               - 系統帳戶管理。

SYSDRIVER                - 基本服務的系統驅動程式管理。

SYSTEMENCLOSURE          - 物理系統封閉管理。

SYSTEMSLOT               - 包括埠、插口、附件和主要連線點的物理連線點管理。

TAPEDRIVE                - 磁帶驅動器管理。

TEMPERATURE              - 溫度感應器的資料管理 (電子溫度表)。

TIMEZONE                 - 時間區域資料管理。

UPS                      - 不可中斷的電源供應 (UPS) 管理。

USERACCOUNT              - 使用者帳戶管理。

VOLTAGE                  - 電壓感應器 (電子電量計) 資料管理。

VOLUMEQUOTASETTING       - 將某一磁碟卷與磁碟配額設定關聯。

WMISET                   - WMI 服務操作引數管理。