Как получить объект WMI из ссылки на объект WMI - PullRequest
2 голосов
/ 10 февраля 2012

Я использую WMI для работы Citrix, в частности, для поиска конкретного пользователя для выхода из системы. Сначала я должен перечислить объект с именем MetaFrame_Session, в котором перечислены текущие сеансы, затем из него я должен извлечь объект с именем Citrix_User, который имеет имя пользователя.

Объект Session содержит ссылку на объект User, но я не очень знаком с WMI, и я озадачен тем, как получить реальный объект из ссылки. Примеры того, как сделать это в VBScript, будут очень полезны

Ответы [ 2 ]

0 голосов
/ 03 марта 2016

вы можете сделать это с помощью манипуляции со строками, потому что "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
0 голосов
/ 09 января 2013

Похоже, вы также не нашли ответа на этом другом форуме , но код для выхода из сеанса Citrix с использованием WMI был любезно размещен здесь следующим образом 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, поскольку он может помочь в качестве справочного материала для методов.Кроме того, если вы обнаружите, что WMI неисправен на сервере, см. здесь для восстановления.

...