Thanks to a very helpful comment from Kahless on my previous post on this topic, I have developed a new method of obtaining the client IP address from a script running on the XenApp 6 or XenApp 6.5 server.
This only works on XenApp 6.5
This script uses the SESSIONNAME environment variable to return the ClientIP via WMI.
Function GetCTXClientIP
Set ObjShell = CreateObject(“Wscript.Shell”)
Dim strSessionName : strSessionName = ObjShell.ExpandEnvironmentStrings( “%SESSIONNAME%” )
Dim objCTXWMIService : Set objCTXWMIService = GetObject(“winmgmts:\\localhost\root\citrix\hdx”)
Dim colCTXItems : Set colCTXItems = objCTXWMIService.ExecQuery(“Select ClientIP from Citrix_Sessions where StationName = ‘” & strSessionName & “‘”)
Dim objItem, ClientIP
For Each objItem in colCTXItems
ClientIP = Cstr (objItem.ClientIP)
Next
GetCTXClientIP = ClientIP
End Function
Location
Deptive - Commercial Bay
11-19 Customs Street West St
Commercial Bay Tower, Level 17, Room 1715
Auckland 1010
We also have a virtual office in Wellington.
Contact Details
0800 000 141
Postal Address
PO Box 34797,
Birkenhead, Auckland 0746
3 Comments
The problem is that environment variables are sometimes empty during logon/logoff on W2008R2 SP1.
The same occurs for the %SESSIONNAME%. Means the script is useless as logon/logoff script.
Getting session from TMP folder doesn’t work.
Running CLientnfo.exe during logon result in disconnect.
Getting volatile env. is also untrustable.
Other solution?
Regards,
We have this script running as a logon script to map printers based on the client IP address so I can confirm is does work as a logon script.
How have you determined that the %SESSIONNAME% variable is not present?
Jason
Related problem – ever since we switched to XenApp 6.5 on W2k8 R2 from XenApp 5 on Windows 2003, the CLIENTNAME environment variable is blank during logon script but is set if you check later via cmd.exe