史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   網路軟硬體架設技術文件 (http://forum.slime.com.tw/f133.html)
-   -   WMIC 全新的超級指令行系統管理工具 (http://forum.slime.com.tw/thread61654.html)

psac 2003-08-19 01:23 AM

WMIC 全新的超級指令行系統管理工具
 
  微軟Windows Server的圖形界面接頭在為網路管理提供便利的同時,因其消耗資源偏大、操作緩慢而頗受Windows管理員的微詞,為提供一個圖形管理界面之外的另一種選項,微軟推出了集WMI的強大與指令行的簡潔於一身的全新的指令行系統管理工具WMIC。加入了WMIC的Windows server 2003的指令行,據稱可以完成幾乎所有的管理工作。

  以DOS起家的微軟,最終靠圖形界面一統了天下。傳統的微軟Windows Server的圖形界面接頭,在使系統管理簡單易行的同時,其偏大的資源消耗與緩慢的操作速度,不但使眾多IT Pro級系統管理員頗有微詞,也使許多從Unix、NetWare轉過來的系統管理員短時間內難以適從。雖然微軟開發了WMI(Windows Management Instrumentation,Windows管理架構),並在Support Tools和Resource Kits提供了大量關於WMI的指令碼讓管理員使用,在指令行下管理伺服器,但複雜的指令碼編程同樣令許多管理員卻步,因為並非每個管理員都是指令碼編程高手。從另一個角度講,圖形界面接頭像一個黑盒子,使許多管理員喪失了量身定制管理工作的機會與樂趣,只能亦步亦趨地跟在越來越多的嚮導屁股後面,不停地點按著"下一步"。

  鑒於上述原因,微軟在Windows Server 2003中,綜合了WMI的強大與指令行的簡潔,推出了全新的指令行系統管理工具WMIC,英文全稱Windows Management Instrumentation Command-line,即Windows管理規範指令行。並聲稱使用WMIC,再配合其他現存的指令行工具,管理員幾乎可以完成所有的管理工作,而不必再過多地依賴那些圖形界面。

  本文將對WMIC進行一個簡單的介紹,由於筆者在撰稿時Windows Server 2003還沒有正式發佈,所以一切技術均以Windows Server 2003 RC2(Build 3718)為準,最終版本正式發佈後可能會有變化。

  背景:WMI、WBEM與CIM

  關於WMI,我們在以前的文章中多次提及,並有過具體的套用,如《使用VS.NET實現WMI使用》(2003年1月刊),《限制域用戶同時的多點登入》與《來一段指令碼,Kill掉Mike的歌》(2003年2月刊)等。這裡不準備再對其做詳細的說明,只做一下簡單的介紹。

  WMI是微軟關於Web的企業管理(WBEM)這一理念與標準的具體實現,並對CIM(Common Information Model,公用信息模型)提供完整的支持。WMI由符合CIM標準的對象儲備庫(Object Repository)和CIM對像管理器(WMI Object Manager)組成,其中對像儲備庫是對像定義的資料庫,對像管理器負責處理儲備庫中對象的收集和操作,並從WMI提供程序(WMI Provider)收集信息。WMI提供程序在WMI與操作系統元件、應用程式和其他系統之間充當中間人角色,兩者通過WMI提供程序交換信息。WMI提供程序的主要作用就是為WMI提供下層對象的相關資訊,以及允許WMI通過它對下層對像進行管理。例如,註冊表提供程序從註冊表中提供信息,而SNMP提供程序則從SNMP設備中提供資料和事件等。

  WMI被許多電腦系統管理工具所用,如Microsoft Systems Management Server、Microsoft Health Monitor和Microsoft Operations Manager等。

  WMIC概述

  WMIC,是一款新出現在Windows Server 2003中的指令行系統管理工具。使用WMIC,你不但可以管理本機電腦,而且可以管理同一Windows域內的所有遠端電腦(需要必要的權限),而被管理的遠端電腦不必事先安裝WMIC,只需要支持WMI即可。

  WMIC有一個能夠分析、解釋和執行從指令行接收的別名(Alias)的引擎,它是一個可執行文件,名為WMIC.exe,這個文件通常位於"c:\windows\

  system32\wbem"資料夾中,該程序執行於用戶當前登入的電腦上。任何對WMIC指令行的擴展效能都經過別名文件定義或者註冊。別名又稱友好名稱(Friendly Names),通過MOF(Management Object Format,管理對像格式)格式定義。WMIC引擎接收到輸入的指令後,先進行分析。如果指令是一個別名,WMIC會從當前操作命名空間(比如root\cli)使用該別名的定義,套用當前的環境設定(如目標命名空間),並將別名指令與它的原始指令進行對應,然後執行。

  具體來說,你可以使用WMIC實現如下的管理工作:

  1、本機電腦管理

  2、遠端單個電腦管理

  3、遠端多個電腦管理

  4、使用遠端會話的電腦管理(如Telnet)

  5、使用管理指令碼的自動管理

  只有本機管理員組成員才能夠啟動WMIC,由於WMIC本質上是WMI的一個客戶端,因此WMIC的安全受限於WMI的安全。當WMIC在一個遠端會話中被使用時,如Telnet、終端服務等,預設情況下,它使用發起此會話的用戶的安全上下文。在使用WMIC管理一個遠端電腦之前,WMIC會Ping一下遠端電腦以確定其狀態。

  在使用WMIC指令行時,可以隨時使用"/?"來獲得當前指令上下文的說明 信息。

  執行模式

  WMIC可以以兩種模式執行:交互模式(Interactive mode)和非交互模式(Non-Interactive mode),經常使用Netsh指令行的管理員應該非常熟悉這兩種模式。

  交互模式。如果你在命令提示字元下或通過"執行"功能表只輸入WMIC,都將進入WMIC的交互模式,每當一個指令執行完畢後,系統還會返回到WMIC提示號下,如"Root\cli",交互模式通常在需要執行多個WMIC指令時使用。當你需要先執行"CONTEXT"指令檢視環境變數,再使用"OS"指令檢視當前操作系統消息時,就可以使用交互模式,如圖1所顯示。交互模式有時還會對一些敏感的操作要求驗證,比如刪除操作,最大限度地防止管理員出現失誤。

  非交互模式。非交互模式是指將WMIC指令直接作為WMIC的參數放在WMIC後面,當指令執行完畢後再返回到普通的命令提示字元下,而不是進入到WMIC上下文環境中。WMIC的非交互模式主要用於批次處理或者其他一些指令碼文件中,比如上面的"OS"指令在非交互模式下就可以使用下面的方式執行:

  wmic os /?

  使用WMIC管理系統

  WMIC包含了眾多的開關、指令,以及內裝的別名,詳細內容見表1、表2和表3。下面讓我們通過具體的實例體驗一下WMIC的強大功能。

  簡單管理工作

  使用WMIC,可以完成一些簡單的管理工作,比如檢視硬體與操作系統資訊。如果不使用WMIC,查詢硬體如BIOS、CPU、操作系統等信息,通常是使用系統提供的API接頭進行編程,或者編寫一小段指令碼程序,是一件比較麻煩的事情,如表4所顯示就是一個查詢BIOS信息的傳統VBscript指令碼。如果使用WMIC,那情況就大不相同,只需要一個簡單指令就能搞定:

  wmic bios list full

  結果如所顯示。

  大家可能注意到了上面指令行中還有兩個參數list和full。list決定顯示的信息格式與範圍,它有Brief、Full、Instance、Status、System、Writeable等多個參數,full只是它的一個參數,也是list的預設參數,表示顯示所有的信息。其他幾個參數顧名思義,如Brief表示只顯示摘要信息,Instance表示只顯示對像實例,Status表示顯示對像狀態,Writeable表示只顯示該對象的可寫入的內容信息等。

  在管理程序中,尤其是進行遠端系統管理的時候,管理員多數喜歡列一下工作列表,以瞭解當前系統中正在執行的程序。下面的指令就可以達到這一目的:

  wmic process list brief

  它會顯示當前所有工作的一些摘要信息,比如工作名稱、工作ID和優先級等。在我以前的文章《來一段指令碼,Kill掉Mike的歌》中,就可以使用這一指令替代那個list.vbs指令碼。

  複雜管理工作

  WMIC在完成複雜管理工作方面也是非常出色的,先看一下查詢事件日誌並產生結果文件的例子:

  WMIC /node:"dc2" /user:"mytest" NTEVENTswheres"eventtype<3 and eventtype>0 AND logfile='Application'" GET Logfile, SourceName, Eventtype, Message, TimeGenerated /FORMAT:htable:"sortby=EventType">c:\Application.htm

  這行長長的指令表示從電腦DC2中查詢應用程式日誌信息,事件類型為小於3且大於0的事件,通常是警告與錯誤事件。因為是遠端電腦,所以指令中使用了"/node"和"/user"開關。輸出結果儲存為網頁格式,儲存在"c:\Application.htm"文件中,並以事件類型進行排序。當你使用上面的指令時,因為使用了"/user"開關,所以系統會首先提示你輸入與該用戶匹配的密碼,如所顯示,查詢結果如所顯示。

  同樣,你還可以使用WMIC同時重新啟動多台被管理的伺服器或工作站,指令如下:

  WMIC /NODE:@"c:\MyServerList.txt" OSswheres(Primary="TRUE") CALL Win32ShutDown 6

  WMIC會首先從"c:\MyServerList.txt"中取得伺服器名稱列表,這些伺服器名稱在文件中以逗號分割,如"dc1,dc2"。要注意的是,在/node開關後面使用伺服器列表文件時,一定要在檔案名的前面加上"@"引導符。該指令執行結果如圖5所顯示,在執行重新啟動程序中,WMIC會返回詳細的執行結果。

  WMIC還可以從Active Directory中取得資料,下面是一個從Active Directory中取得用戶信息的例子,取得的用戶信息包括顯示名稱、UPN名稱、名稱和新增時間等,返回結果如圖6所顯示:

  WMIC/NAMESPACE:\root\directory\ldap PATH ds_user GET ds_displayname, ds_userprincipalname, ds_cn, ds_name, ds_whencreated /VALUE

  總結

  WMIC是我所見到的關於windows平台的功能最強大的指令行工具,但同樣也是最複雜的工具。尤其是在完成複雜的管理工作時,你需要對WMI的Win32類的內容及方法非常熟悉才可能做到游刃有餘。因此,在希望熟悉運用WMIC之前,建議先學習WMI,熟悉其Win32類的各種內容及方法。國內現在出過幾本不錯的WMI書籍,你也可以到微軟的MSDN網站(MSDN.microsoft.com)上查詢這方面的信息。

  有了WMIC的加入,指令行們應該可以大聲說:"雖然我很醜,但是我很強大"了


所有時間均為台北時間。現在的時間是 05:05 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1