Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在vbscript中处理空WMI查询_Vbscript_Wmi - Fatal编程技术网

在vbscript中处理空WMI查询

在vbscript中处理空WMI查询,vbscript,wmi,Vbscript,Wmi,我正在尝试处理以下情况:colItems将为空,因为计算机没有WMI类Win32\u TSLicenseKeyPack。然而,我所有的尝试都没有成功 这是我的工作代码,没有空检查: Set oWsh = WScript.CreateObject("WScript.Shell") Set oWshSysEnv = oWsh.Environment("PROCESS") Set objWMIService = GetObject("win

我正在尝试处理以下情况:
colItems
将为空,因为计算机没有WMI类Win32\u TSLicenseKeyPack。然而,我所有的尝试都没有成功

这是我的工作代码,没有空检查:

Set oWsh = WScript.CreateObject("WScript.Shell")   
Set oWshSysEnv = oWsh.Environment("PROCESS")   
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")   
Set colItems = GetObject("WinMgmts:root/cimv2").ExecQuery("select AvailableLicenses,IssuedLicenses,ProductVersion,TypeAndModel from Win32_TSLicenseKeyPack")
For Each objItem In colItems     
strTS = objItem.ProductVersion & " | " & objItem.TypeAndModel & " | " & objItem.AvailableLicenses & " | " & objItem.IssuedLicenses
wscript.echo strTS
Next
我一直在用
尝试
IsEmpty
IsObject
If
等函数,但都没有成功

正如一篇评论中所建议的,我尝试了
如果不是colItems,那就什么都不是

但如果我这样做,我会得到以下代码的错误:

 Set oWsh = WScript.CreateObject("WScript.Shell")   
    Set oWshSysEnv = oWsh.Environment("PROCESS")   
    Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")   
    Set colItems = GetObject("WinMgmts:root/cimv2").ExecQuery("select AvailableLicenses,IssuedLicenses,ProductVersion,TypeAndModel from Win32_TSLicenseKeyPack")
    
    If not colItems is nothing then
        For Each objItem In colItems     
        strTS = objItem.ProductVersion & " | " & objItem.TypeAndModel & " | " & objItem.AvailableLicenses & " | " & objItem.IssuedLicenses
        wscript.echo strTS
        Next
    Else
    wscript.echo "is empty"
    End If

这是lankymarte建议的使用.count函数的工作代码

Set oWsh = WScript.CreateObject("WScript.Shell")   
Set oWshSysEnv = oWsh.Environment("PROCESS")  
Set colItems = GetObject("WinMgmts:root/cimv2").ExecQuery("select AvailableLicenses,IssuedLicenses,ProductVersion,TypeAndModel from Win32_TSLicenseKeyPack")

dim i: i = getCount(colItems)

if (i < 0) then
    wscript.echo "empty"
else
    For Each objItem In colItems     
    strTS = objItem.ProductVersion & " | " & objItem.TypeAndModel & " | " & objItem.AvailableLicenses & " | " & objItem.IssuedLicenses
    wscript.echo strTS
    Next
end if

function getCount(wmiCol)
    on error resume next
    getCount = colItems.Count
    if (err.number <> 0) then getCount = (-1)
    on error goto 0
end function
Set oWsh=WScript.CreateObject(“WScript.Shell”)
设置oWshSysEnv=oWsh.Environment(“进程”)
设置colItems=GetObject(“WinMgmts:root/cimv2”).ExecQuery(“从Win32\u TSLicenseKeyPack中选择可用许可证、已颁发许可证、产品版本、类型和模型”)
dim i:i=getCount(共项)
如果(i<0),则
wscript.echo“空”
其他的
对于每个对象,在colitem中
strTS=objItem.ProductVersion&“|”&objItem.TypeAndModel&“|”&objItem.AvailableLicenses&“|”&objItem.IssuedLicenses
wscript.echo strTS
下一个
如果结束
函数getCount(wmiCol)
出错时继续下一步
getCount=colItems.Count
如果为(err.number 0),则getCount=(-1)
错误转到0
端函数

您是否尝试过
如果没有,则colItems不算什么
?请不要发布错误消息的图片。另请参见@tripleee,这也不是一个很好的图像,它裁剪了实际的错误描述。您确定
colItems
返回
null
?如果在
为空之后它仍然运行
For
循环,请检查您仍然有一个对象引用,因此可以尝试
.Count>0
,正如副本所建议的那样…您还获得了WMI服务对象两次,但方式不同,这是怎么回事?(
GetObject(“winmgmts:\.\root\CIMV2”)
vs
GetObject(“winmgmts:root/CIMV2”)
,而您似乎甚至没有使用第一个。