Some tips of wmi scripting in jscript (1)_javascript技巧
集合的概念在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");
var enProcesses = new Enumerator(colItems);
while (! enProcesses.atEnd()) {
WScript.Echo(enProcesses.item().Name);
enProcesses.moveNext();
}
前几天还和Long同学讨论vbscript和jscript之间的优劣,vbscript在语言功能和代码风
格上比jscript要差很多,但是jscript也有些功能实现上的缺憾,比如没有办法进行字节
操作,但是总的来说jscript是一个聪明的语言,从Enumerator就可以看出这一点,赫赫。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

WMIProviderHost進程在Windows11中扮演著至關重要的角色。它使其他應用程式可以請求有關您的電腦的資訊。與WMIProviderHost相關的進程通常在背景運行;因此,它們通常不會消耗大量系統資源。但是,據報道,該服務有時會因為其他應用程式而使用超過50%的CPU功率。令人擔憂的是,您的電腦處理器幾乎以最大容量長時間運行,因為這可能導致過熱和系統組件損壞。在今天的教學中,我們將研究為什麼WMIProviderHost在Windows11上的C

隨著國際化的不斷發展,越來越多的網站和應用程式需要支援多語言切換功能。 Vue作為一款流行的前端框架,提供了一個名為i18n的插件,可以幫助我們實現多語言切換。本文將介紹Vue中使用i18n實作多語言切換的常見技巧。第一步:安裝i18n插件首先,我們需要使用npm或yarn安裝i18n插件。在命令列中輸入以下命令:npminst

out介面指的是輸出接口,in接口指的是輸入接口。 out介面一般代表著音源線路輸出接口,用來接負載,例音箱、耳機等;而in接口一般代表著音源線路輸入接口,用來接CD機、手機、MP3、電腦等。

win10系統運作速度變得卡頓,開啟任務管理器發現WMIProviderHost佔用CPU資源過高,難怪系統那麼卡,下面我們就來看看詳細的解決辦法1、按鍵盤上的Win+R組合鍵,打開運行,輸入services.msc指令,按確定或回車,可以開啟服務;2、服務窗口,找到並雙擊名稱為WindowsManagementInstrumentation服務項目;3、WindowsManagementInstrumentation的屬性(本機電腦)窗口,切換到依存關係選項卡,可以依存關係選項卡,可以依存關係選項卡,可以看到IPHelper組件依賴

win10系統閃退顯示outofmemory,近期很多的用戶在使用電腦的時候,出現了這個提示,導致需要經常的重啟進行修復,那麼這種情況我們應該如何處理,針對這個問題,本期的win10教程就來和廣大用戶分享完整操作步驟,希望能幫助更多的小夥伴解決問題。 win10系統閃退顯示outofmemory怎麼辦1、右鍵點選桌面上的此電腦,選擇選項清單中的「屬性」。 2.進入到新的視窗介面後,點選左上角的「進階系統設定」選項。 3.在開啟的視窗中,切換到上方中的“

Mysqlon,in,as,where的區別答:Where查詢條件,on內外連接時候用,as作為別名,in查詢某值是否在某條件裡創建2個表:student,scorestudent:score:whereSELECT*FROMstudentWHEREs_sex='男'例如:onSELECT*FROMstudentLEFTJOINscoreonstudent.s_id=score.s_id;on和where組合:SELECT*FROMstudentLEFTJOINs

清理後台的時候,肯定很多的伙伴在任務管理器裡面看到了wmiproviderhost進程吧,大家最好奇的莫過於是不是可以去結束這個進程,其實可以結束進程,但是非常不建議喲~wmiproviderhost可以結束進程嗎:答:wmiproviderhost可以結束進程。但是非常不建議用戶強制的關閉,因為這個是系統的進程,如果直接關閉了可能會對後續的使用有影響。 wmiproviderhost結束流程方法:1、先右鍵點選你的工作欄,然後進入「工作管理員」。 2、隨後找到wmiproviderhost進程。 3、

有使用者反映,在安裝了微軟3月份的Win11更新修補程式KB5035853後,出現了藍色畫面死機錯誤,其中系統頁面顯示「ThreadStuckinDeviceDriver」。據了解,這種錯誤可能是由硬體或驅動程式問題引起的。以下是五種修復方法,希望能夠快速解決電腦藍色畫面問題。方法一:執行系統檔案檢查在指令提示字元中執行【sfc/scannow】指令,可用來偵測和修復系統檔案的完整性問題。這個命令的作用是掃描並修復任何缺失或受損的系統文件,有助於確保系統的穩定性和正常運作。方法二:1.下載並開啟“藍色畫面修復工具”
