国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > BAT > 正文

批處理的api WMIC學習體會有感

2020-03-29 20:16:45
字體:
來源:轉載
供稿:網友
給黑手專欄里寫的文章
批處理的api--WMIC學習體會 lcx
在這篇文章里也許你看不到很多奇特有用的的實際例程,但是呢,授人以魚不如授人以漁,希望我的文章能讓你通俗易懂的了解一些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的基本命令格式簡析
經??淳W上的相關資料的話,讀者可能會對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等就要靠大家去研究發現了。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浦北县| 亳州市| 陵水| 阳高县| 应城市| 霞浦县| 侯马市| 延津县| 辉县市| 漠河县| 当雄县| 措美县| 子长县| 贵定县| 应城市| 额敏县| 奉节县| 佛冈县| 惠安县| 大关县| 偃师市| 峨眉山市| 海阳市| 论坛| 阿城市| 罗平县| 湘西| 永修县| 丁青县| 台前县| 牙克石市| 石台县| 尚义县| 郁南县| 洞口县| 方正县| 盖州市| 闽清县| 邓州市| 芦山县| 峨眉山市|