要成為WMI腳本高手當要認識一下什么叫WMI啦,下面將介紹一下有關WMI的東西。
Windows 管理規(guī)范(Windows Management Instrumentation)是一項核心的 Windows 管理技術;用戶可以使用 WMI 管理本地和遠程計算機。WMI 通過編程和腳本語言為日常管理提供了一條連續(xù)一致的途徑。用戶可以:
1.在遠程計算機器上啟動一個進程。
2.設定一個在特定日期和時間運行的進程。
3.遠程啟動計算機。
4.獲得本地或遠程計算機的已安裝程序列表。
5.查詢本地或遠程計算機的 Windows 事件日志。
而WMI適用的運得環(huán)境也是有些限制的,WMI 適用于所有最新版本的 Windows。WMI 附帶在 Windows Me、Windows 2000、Windows XP 和 Windows Server 2003 之中。
對于 Windows 98 和 Windows NT 4.0,可以訪問http://www.microsoft.com/downloads并搜索“Windows Management Instrumentation (WMI) CORE 1.5 (Windows 95/98/NT 4.0)”。 或直接腳本之家本站下載
注意:在 Windows NT 4.0 上安裝并運行 WMI 之前,需要首先安裝 Service Pack 4 或更高版本。
WMI 需要的其他軟件包括:
1. Microsoft Internet Explorer 5.0 或更高版本。
2. Windows script Host(WSH)。Windows 2000、Windows XP、Windows Server 2003、和 Windows Me 附帶的 WSH,而不是 Windows NT4 或 Windows 98 附帶的 WSH。您可以從以下地址下載 WSH http://www.microsoft.com/downloads. WSH 的最新版本—— 包括在 Windows XP 和 Windows Server 2003 之中——是 WSH 5.6。
要使WMI腳本可以正常的運行,Windows里的WMI 服務(winmgmt)保證是運行的,這樣才可以實現WMI里的更多功能。
好了,關于WMI的一些基本的信息資料就說到這,要想看更多的可以到MicroSoft網站的MSDN找。下面就簡單的講一下WMI腳本編寫的基本要素,看看下面的代碼:
//這個腳本是查看系統(tǒng)啟動的引導配置參數,下面我們來看看關于WMI腳本編寫的架構。
On Error Resume Next
//下面這行是比較重要的,它定義了主機的變量,可以是本機或遠程主機,域上的機等,參數英文的“.”是表示本機,要想實現其它機的可以填上其它機的主機名或IP。
strComputer = "."
//下面這行是通過GetObject得到主機的WMI對象管理空間“\root\cimv2”,如果是本機的是通過NT(Authentication)認證的,所以可以不用用戶名和密碼,而對于非本機或非域機的就要再加多幾條參數,
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
//執(zhí)行WMI數據對象的查詢
//至于連接遠程的要用下面的語句
Set objLocator = CreateObject("Wbemscripting.SWbemLocator")
Set objService = objLocator.ConnectServer(strComputer, "root\cimv2", "administrator", "a")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BootConfiguration",,48)
//利用數組列出相關
For Each objItem in colItems
Wscript.Echo "BootDirectory: " & objItem.BootDirectory
Next
從上面的例子可以看出寫一個WMI的要求:
1.得到主機的WMI對像管理空間
2.執(zhí)行WMI數據對象的查詢
3.利用數組列出相關
學習編寫的架構并不難,只要練多幾次就行了,但是學習WMI的第一個難題就是它的子集對象,因為我們并不知道它的子集對象是什么,這樣寫起程序來就會力不從心了。要一下子知道這樣子集的對象也是不難的,只要在MicroSoft的MSDN找找會有不少,但是這樣找下去的話可能要找很久或資料不夠全,是不是有些難呢?其實MicroSoft公司的網站上有一個叫“scriptomatic”的工具,才100多K,解壓后你們發(fā)覺真正有用的是那個才12k的“scriptomatic.hta”文件,雙擊打開后你會發(fā)覺是一個子集的數據列表,且還有例子呢。
以上就是查詢“Win32_BIOS”里的子集參數,是不是很易實現WMI腳本的編寫呢?
朋友們,可曾記得大半年前是不是有一個這樣的漏洞:就是一個GUEST用戶權限可以用WMI的腳本實現加賬號的例子,其實就是一個WMI 命名空間的安全性出現問題。下面我們打開計算機上的MMC看看如何設置WMI的安全權限。
在運行菜單上打“MMC”,然后在“文件”菜單上選“添加/刪除管理單元”,然后在“獨立”的選項卡(默認)上按“添加”,之后來到“添加獨立管理單元”列表。
然后就一路按“添加”、“確定”就可以了。返回到MMC的主介面上,然后右擊“WMI”單元選“屬性”。
在WMI控件屬性對話框中單擊安全選項卡。
一個名為Root,前面帶加號(+)的文件夾將會出現。如果必要,展開這個樹狀結構,定位到想要設置權限的命名空間。
單擊安全設置按鈕。一組用戶和權限顯示出來。如果用戶在這個列表中,請按照需要修改權限。如果用戶不再這個列表中,請單擊 添加 按鈕,然后從賬戶所在的位置(本地計算機、域等等)添加用戶。
小提示:
為了查看和設置 NameSpace 安全性,用戶必需擁有讀取安全設置 和 編輯安全設置 權限。系統(tǒng)管理員默認具備這些權限,并可以按照需要將權限賦予其他用戶如果一個用戶需要遠程訪問命名空間,必須為其選中遠程啟用權限。
默認情況下,針對一個命名空間設置的用戶權限只對該命名空間有效。如果希望用戶可以訪問該命名空間和其下所有子命名空間,或者只能訪問子命名空間,請單擊高級按鈕。單擊編輯并在出現的對話框中指定允許訪問的范圍。這樣就可以防止此類事情的發(fā)生,但是透過此類的WMI命名空間的安全設置,也可以成為黑手會配置后門的地方,所以在架建一個安全的系統(tǒng),這里不能不看。今天的WMI技術就介紹到這里