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

out接口指的是输出接口,in接口指的是输入接口。out接口一般代表着音源线路输出接口,用来接负载,例音箱、耳机等;而in接口一般代表着音源线路输入接口,用来接CD机、手机、MP3、电脑等。

随着国际化的不断发展,越来越多的网站和应用程序需要支持多语言切换功能。Vue作为一款流行的前端框架,提供了一种名为i18n的插件,可以帮助我们实现多语言切换。本文将介绍Vue中使用i18n实现多语言切换的常见技巧。第一步:安装i18n插件首先,我们需要使用npm或yarn安装i18n插件。在命令行中输入以下命令:npminst

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.下载并打开“蓝屏修复工具”
