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

首頁 > 開發 > JS > 正文

Some tips of wmi scripting in jscript (1)

2024-09-06 12:42:47
字體:
來源:轉載
供稿:網友
集合的概念在windows腳本中很常用,尤其是在wmi方面的腳本中基本都會遇到集合操作。
在vbscript里遍歷集合的方法很簡單,For Each循環就可以達到目的。但是在jscript中
如何使用集合,卻困擾了我很長時間,連msdn中都找不到好的例子,令我一度悲觀的認為
jscript不能進行集合操作。

在我幾乎快要放棄的時候,又翻出一本vbscript wmi的電子書看了看,竟然找到了jscript
使用集合的方法,那就是Enumerator對象,該對象專門用作枚舉集合??吹竭@個對象你會
想到什么?是不是覺得很眼熟?如果你用jscript調用過FSO的話,如何枚舉Drives Files
和Folders的?FSO的例子里寫的明明白白,當時使用的時候是否行尸走肉般的把例子搬到
你的程序里?當時也會覺得奇怪它為什么遍歷一個集合要寫這么麻煩,可是就是沒有深究
為什么要這樣寫,那時因為你對數組的那套行不通,jscript中遍歷集合只能如此。

這時候你可能還是有疑問,集合和數組有什么差別?引用MS腳本幫助里的原話:集合與數
組的不同點在于集合的成員不能直接訪問。不像處理數組時使用下標,這只能將當前項目
指針移動到集合下一或前一元素。這里你想的深入一點,可以這樣理解,數組就相當于c
語言中的數組概念,是線性存儲空間,可以通過下標很方便的訪問,而集合則是一種復雜
的數據結構,比如是一個鏈表,你訪問的話只能通過結點之間的指向關系來訪問前一個或
者后一個元素。

Enumerator的用法很簡單,把你要遍歷集合作為參數傳遞給Enumerator對象的構造函數后,
你可以枚舉集合的成員,atEnd方法判斷是否已經到結尾,moveFirst方法可以把指針移動
到第一個元素,moveNext方法把當前的指針位置移動到下一個元素,通過item方法返回集
合中的單個元素。

例1:枚舉所有的驅動器


/**//*
* cscript ListDrive.js
*/
var oFSO = new ActiveXObject("Scripting.FileSystemObject");
var enDrives = new Enumerator(oFSO.Drives);
var oDrive;
while (! enDrives.atEnd()) {
    oDrive = enDrives.item();

    if (oDrive.IsReady) {
        WScript.Echo(oDrive.DriveLetter + ":");
    }

    enDrives.moveNext();
}
例2:通過wmi枚舉所有的進程


/**//*
* cscript ListProcess.js
*/
var sComputerName = ".";
var oLoc = new ActiveXObject("WbemScripting.SWbemLocator");
var oSvc = oLoc.ConnectServer(sComputerName, "root//cimv2");
var colItems = oSvc.ExecQuery("SELECT * FROM Win32_Process");
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁陕县| 林州市| 大关县| 旅游| 定结县| 大竹县| 富顺县| 金门县| 宁晋县| 崇义县| 竹北市| 城市| 澎湖县| 仪陇县| 元阳县| 九寨沟县| 茂名市| 鄱阳县| 雷山县| 伊宁市| 新乡县| 峨边| 栾城县| 隆回县| 潞城市| 肥东县| 招远市| 台中县| 镇原县| 台北市| 石景山区| 新津县| 舒城县| 开原市| 曲沃县| 濮阳市| 铜山县| 澄江县| 虎林市| 双鸭山市| 衡南县|