我正在使用WMI做一些Citrix工作,特别是搜索特定用户注销。首先,我必须枚举一个名为MetaFrame_Session的对象,它列出了当前的会话,然后我必须检索一个名为Citrix_User的对象,该对象具有用户名。
Session对象包含对User对象的引用,但我对WMI不是很熟悉,而且我对如何从引用获取实际对象感到困惑。如何在VBScript中执行此操作的示例将非常有用
答案 0 :(得分:0)
似乎您无法在此other forum上找到答案,但是使用WMI注销Citrix会话的代码由here发送Haydn Davies,如下所示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
有关如何获取Citrix VirtualIP的代码,请参阅here,因为它可能有助于提供技术参考。此外,如果您发现服务器上的WMI已损坏,请参阅here进行修复。
答案 1 :(得分:0)
你可以用字符串操作来做到这一点,因为“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