首頁 web前端 js教程 Some tips of wmi scripting in jscript (1)_javascript技巧

Some tips of wmi scripting in jscript (1)_javascript技巧

May 16, 2016 pm 07:15 PM
in jscript of wmi

集合的概念在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就可以看出这一点,赫赫。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

在 Windows 11 上修復 WMI Provider Host High CPU 的 4 個快速提示 在 Windows 11 上修復 WMI Provider Host High CPU 的 4 個快速提示 Apr 18, 2023 pm 08:25 PM

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

Vue 中使用 i18n 實作多語言切換的技巧 Vue 中使用 i18n 實作多語言切換的技巧 Jun 25, 2023 am 09:33 AM

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

out和in介面是什麼意思 out和in介面是什麼意思 Sep 28, 2021 pm 04:39 PM

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

wmi佔用cpu特別高怎麼辦_Win10_WmiProviderHost佔用cpu解決方法 wmi佔用cpu特別高怎麼辦_Win10_WmiProviderHost佔用cpu解決方法 Mar 20, 2024 pm 02:10 PM

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

win10系統閃退顯示out of memory怎麼辦? win10系統閃退顯示out of memory怎麼辦? Feb 09, 2024 pm 03:00 PM

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

Mysql中on,in,as,where的差別是什麼 Mysql中on,in,as,where的差別是什麼 Jun 03, 2023 am 11:37 AM

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

wmi provider host可以結束進程嗎 wmi provider host可以結束進程嗎 Feb 21, 2024 am 09:10 AM

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

Thread Stuck in Device Driver藍屏的五種修復方法 Thread Stuck in Device Driver藍屏的五種修復方法 Mar 25, 2024 pm 09:40 PM

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

See all articles