Vbscript 如何从WMI对象引用获取WMI对象

Vbscript 如何从WMI对象引用获取WMI对象,vbscript,wmi,citrix,Vbscript,Wmi,Citrix,我正在使用WMI做一些Citrix工作,特别是搜索要注销的特定用户。首先,我必须枚举一个名为MetaFrame_Session的对象,该对象列出当前会话,然后从中检索一个名为Citrix_User的对象,该对象具有用户名 Session对象包含对User对象的引用,但我对WMI不是很熟悉,对于如何从引用中获取实际对象,我感到困惑。如何在VBScript中执行此操作的示例将非常有用您似乎也找不到关于此问题的答案,但对于一台Citrix服务器,请发布使用WMI注销Citrix会话的代码,如下所示:

我正在使用WMI做一些Citrix工作,特别是搜索要注销的特定用户。首先,我必须枚举一个名为MetaFrame_Session的对象,该对象列出当前会话,然后从中检索一个名为Citrix_User的对象,该对象具有用户名


Session对象包含对User对象的引用,但我对WMI不是很熟悉,对于如何从引用中获取实际对象,我感到困惑。如何在VBScript中执行此操作的示例将非常有用

您似乎也找不到关于此问题的答案,但对于一台Citrix服务器,请发布使用WMI注销Citrix会话的代码,如下所示:

' Logoff Disconnected Sessions
' If you want to logoff active sessions as well, change the query to include
' cActive
On Error Resume Next

Const cActive = 0
Const cDisconnected = 4
Const strComputer = "."

Set objWMICitrix = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\citrix")
Set colItems = objWMICitrix.ExecQuery ("Select * from Metaframe_Session Where sessionstate = " & cDisconnected)

For Each objItem in colItems
if (objItem.SessionID > 0) and (objItem.SessionID < 65530) then
objItem.Logoff
end if
Next

Set objWMICitrix = Nothing
“注销断开连接的会话
'如果还要注销活动会话,请将查询更改为包含
“算了
出错时继续下一步
常数=0
常数cDisconnected=4
Const strComputer=“”
设置objWMICitrix=GetObject(“winmgmts:{impersonationLevel=impersonate}!\\”&strComputer&“\root\citrix”)
Set colItems=objWMICitrix.ExecQuery(“从Metaframe_会话中选择*,其中sessionstate=“&cDisconnected”)
对于每个对象,在colitem中
如果(objItem.SessionID>0)和(objItem.SessionID<65530),则
objItem.注销
如果结束
下一个
设置objWMICitrix=Nothing

有关如何获取Citrix VirtualIP的代码,请参阅,因为它可以作为技术参考。此外,如果您发现服务器上的WMI已损坏,请参阅以进行修复。

似乎您也找不到关于此问题的答案,但对于一台Citrix服务器,请发布使用WMI注销Citrix会话的代码,如下所示:

' Logoff Disconnected Sessions
' If you want to logoff active sessions as well, change the query to include
' cActive
On Error Resume Next

Const cActive = 0
Const cDisconnected = 4
Const strComputer = "."

Set objWMICitrix = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\citrix")
Set colItems = objWMICitrix.ExecQuery ("Select * from Metaframe_Session Where sessionstate = " & cDisconnected)

For Each objItem in colItems
if (objItem.SessionID > 0) and (objItem.SessionID < 65530) then
objItem.Logoff
end if
Next

Set objWMICitrix = Nothing
“注销断开连接的会话
'如果还要注销活动会话,请将查询更改为包含
“算了
出错时继续下一步
常数=0
常数cDisconnected=4
Const strComputer=“”
设置objWMICitrix=GetObject(“winmgmts:{impersonationLevel=impersonate}!\\”&strComputer&“\root\citrix”)
Set colItems=objWMICitrix.ExecQuery(“从Metaframe_会话中选择*,其中sessionstate=“&cDisconnected”)
对于每个对象,在colitem中
如果(objItem.SessionID>0)和(objItem.SessionID<65530),则
objItem.注销
如果结束
下一个
设置objWMICitrix=Nothing

有关如何获取Citrix VirtualIP的代码,请参阅,因为它可以作为技术参考。此外,如果您发现服务器上的WMI已损坏,请参阅以进行修复。

您可以通过字符串操作来进行修复,因为“SessionUser”是一个字符串

dim name
For Each objItem in colItems
name=left(Mid(objItem.SessionUser,InStr(objItem.SessionUser,"=")+2,20),InStr(Mid(objItem.SessionUser,InStr(objItem.SessionUser,"=")+2,20),",")-2)
 if (name="YOUR_SEARCH_NAME") and (objItem.SessionID < 65530) then
objItem.Logoff
end if
dim名称
对于每个对象,在colitem中
名称=左(Mid(objItem.SessionUser,InStr(objItem.SessionUser,“=”)+2,20),InStr(Mid(objItem.SessionUser,InStr(objItem.SessionUser,“=”+2,20),“,”)-2)
如果(name=“YOUR_SEARCH_name”)和(objItem.SessionID<65530),则
objItem.注销
如果结束

您可以通过字符串操作来实现这一点,因为“SessionUser”是一个字符串

dim name
For Each objItem in colItems
name=left(Mid(objItem.SessionUser,InStr(objItem.SessionUser,"=")+2,20),InStr(Mid(objItem.SessionUser,InStr(objItem.SessionUser,"=")+2,20),",")-2)
 if (name="YOUR_SEARCH_NAME") and (objItem.SessionID < 65530) then
objItem.Logoff
end if
dim名称
对于每个对象,在colitem中
名称=左(Mid(objItem.SessionUser,InStr(objItem.SessionUser,“=”)+2,20),InStr(Mid(objItem.SessionUser,InStr(objItem.SessionUser,“=”+2,20),“,”)-2)
如果(name=“YOUR_SEARCH_name”)和(objItem.SessionID<65530),则
objItem.注销
如果结束

我也有类似的问题。我需要从引用中获取对象。你明白了吗?我也有类似的问题。我需要从引用中获取对象。你明白了吗?如果这个问题已经解决,你能在这里回答我的问题吗:@Saher对不起,我想我无法回答你的问题(如果这个问题已经解决,你能在这里回答我的问题吗:@Saher对不起,我想我不能回答你要找的东西。:(我假设用户名短于20个字符。我假设用户名短于20个字符。)