2012-02-10 2 views
2

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

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

+0

http://stackoverflow.com/questions/18092577/how-to-get-wmi-object-from-a -wmi-object-reference –

+0

У меня такая же проблема. Мне нужно получить объект из ссылки. Вы поняли это? –

ответ

0

Кажется, вы не смогли найти ответ на этот other forum, либо, но код, чтобы выйти сеанс Citrix с помощью WMI любезно отвечал 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 

См here для кода о том, как получить Citrix VirtualIP, так как это может помочь в качестве ссылки для методов. Кроме того, если вы обнаружили, что WMI разбит на сервере, см. here для ремонта.

+0

можете ответить на мой вопрос здесь, если этот вопрос был решен: http://stackoverflow.com/questions/18092577/how-to-get-wmi-object-from-a-wmi-object-reference –

+0

@Saher извините, Я не думаю, что могу ответить на то, что вы ищете. :( – Lizz

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 
+0

Я предполагал, что UserName короче 20 символов – Marcin