我正在生成一个“Up-Time”Win7小工具并尝试重现类似小工具中的.vbs代码。
我是.js编码员。
相关JS:
vbStr=GetUpTime();
相关VBS:
Function GetUpTime
Set loc=CreateObject("WbemScripting.SWbemLocator")
Set svc=loc.ConnectServer(MachineName, "root\cimv2")
Set oss=svc.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each os in oss
tim=os.LastBootUpTime
Next
GetUpTime=tim
End Function
基本上这个.vbs可以解决问题,因为目前只有1 os
在运行。我想通过学习来扩展这个:
1)MachineName
的相关性是什么?
如果我返回MachineName
而不是tim
,我会得到undefined
值。
2)如何在没有os
循环的情况下提取单个For Each
,等同于.js:
os=oss[n];
3)如何相对于每个tim
返回os
的数组。
.vbs代码遍历可用的os
并获得各自的正常运行时间,但开发人员只计划1 os
,因此没有代码返回数组tim
的。在研究了.vbs数组之后,我发现了如何创建一个'set-length'数组,但这不相关!
答案 0 :(得分:0)
计算机名称未定义,因此被视为零长度字符串。这意味着它被忽略了。通常,它是您要查询的网络上的计算机。它是可选的,因此它的未声明不会引发错误。
使用COM缩写(其中Items
是默认属性)
os=oss(1)
或完整
os=oss.items(1)
字典更容易(来自帮助)。
Set d = CreateObject("Scripting.Dictionary")
d.Add "a", "Athens" ' Add some keys and items.
d.Add "b", "Belgrade"
d.Add "c", "Cairo"
注意:JScript使用COM就像VBScript一样。代码类似。