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