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