Dynamic tokens

You can use dynamic tokens in any Workspace Environment Management actions to make them more powerful.

You can use dynamic tokens in the following fields:

  • Applications
    • With Installation application as the application type: Command Line, Working Directory, and Parameters
    • With File/Folder as the application type: Target
    • With URL as the application type: Shortcut URL
    • Icon File
  • Printers
    • Target Path
  • Network drives
    • Target Path and Display Name
  • Virtual drives
    • Target Path
  • Registries
    • Target path, Target name, and Target value

    Note:

    The Target value field does not support environment variable expansion. If you use environment variables, they do not work as expected.

  • Environment variables
    • Variable value
  • Ports
    • Port Target
  • Ini files
    • Target path, Target section, Target value name, and Target value

    Note:

    The Target section, Target value name, and Target value fields do not support environment variable expansion. If you use environment variables, they do not work as expected.

  • External tasks
    • Path and Arguments
  • File system operations
    • Source Path and Target Path
  • Certain filter conditions
    • Example: With Active Directory Attribute Match as the condition type: Tested Active Directory Attribute and Matching Result

    Note:

    For a complete list of supported fields for filter conditions, see Supportability matrix for filter conditions.

String operations

Sometimes you need to manipulate strings within a script to map drives or launch applications. The following string operations are accepted by the Workspace Environment Management agent:

Modal Description Example
#Left(string,length)# Returns the specified number of characters on the left. #Left(abcdef,2)# returns ab
#Right(string,length)# Returns the specified number of characters on the right. #Right(abcdef,2)# returns ef
#Truncate(string,length)# If the length of the string is less than or equal to the specified length, returns the entire string. If the length of the string is greater than the specified length, returns the specified number of characters on the left. #Truncate(abcdef,3)# returns abc
&Trim(string)& Removes all leading and trailing blank spaces of the string. &Trim( a b c )& returns a b c
&RemoveSpaces(string)& Removes all blank spaces of the string. &RemoveSpaces( a b c )& returns abc
&Expand(string)& If the string contains an environment variable that is enclosed with \%, expands the variable. &Expand(%userprofile%\destop)& returns C:\Users\Jill\desktop
$Split(string,[splitter],index)$ Splits the string into substrings based on the splitter that is enclosed with [] and returns the indexed substring. $Split(abc-def-hij,[-],2)$ returns hij
#Mid(string,startindex)# Starts at the specified index in the string and returns all characters after it. #Mid(abcdef,2)# returns cdef
!Mid(string,startindex,length)! Starts at the specified index in the string and returns the specified number of characters. !Mid(abcdef,1,2)! returns bc
!Substring(string,startindex,length)! Starts at the specified index in the string and returns the specified number of characters. !Substring(abcdef,1,2)! returns bc
#Mod(string,length)# Divides the string by the length and returns the remainder. The string must be able to be converted to an integer. #Mod(7,3)# returns 1

Note:

  • String operations are also supported with hashtags and Active Directory attributes. For example: #Left([ADAttribute:NAME],2)# where the name attribute of the current domain user is Administrator returns Ad, and $Split(##ClientIPAddress##,[\.],2)$ returns 157.
  • !Mid(string,startindex,length)! and !Substring(string,startindex,length)! operations are always performed last.

Hashtags

Hash-tags are a replacement feature widely used in the processing of Workspace Environment Management items. The following example illustrates how you use hash-tags:

To write to an .ini file, you can use %UserName% in the .ini file’s path and Workspace Environment Management processes it and expands the final directory. However, assessing the value which Workspace Environment Management writes in the .ini itself is more complicated: you may want to write %UserName% literally, or write the expanded value.

To increase flexibility, ##UserName## exists as a hash-tag, so that using %UserName% for a value writes it literally and ##UserName## writes the expanded value.

See the following table for examples:

Modal Description Example
##UserName## Returns the expanded environment variable “%username%” Jill
##UserProfile## Returns the expanded environment variable “%userprofile%” C:\Users\Jill
##FullUserName## Returns the user’s full name in Active Directory Jill Chou
##UserInitials## Returns the user name initials in Active Directory JC
##UserAppData## Returns the actual path of the special folder - RoamingAppData C:\Users\Jill\AppData\Roaming
##UserPersonal## Returns the actual path of the special folder - Documents C:\Users\Jill\Documents
##UserDocuments## Returns the actual path of the special folder - Documents C:\Users\Jill\Documents
##UserDesktop## Returns the actual path of the special folder - Desktop C:\Users\Jill\Desktop
##UserFavorites## Returns the actual path of the special folder - Favorites C:\Users\Jill\Favorites
##UserTemplates## Returns the actual path of the special folder - Templates C:\Users\Jill\AppData\Roaming\Microsoft\Windows\Templates
##UserStartMenu## Returns the actual path of the special folder - StartMenu C:\Users\Jill\AppData\Roaming\Microsoft\Windows\Start Menu
##UserStartMenuPrograms## Returns the actual path of the special folder - Programs C:\Users\Jill\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
##UserLocalAppData## Returns the actual path of the special folder - LocalAppData C:\Users\Jill\AppData\Local
##UserMusic## Returns the actual path of the special folder - Music C:\Users\Jill\Music
##UserPictures## Returns the actual path of the special folder - Pictures C:\Users\Jill\Pictures
##UserVideos## Returns the actual path of the special folder - Videos C:\Users\Jill\Videos
##UserDownloads## Returns the actual path of the special folder - Downloads C:\Users\Jill\Downloads
##UserLinks## Returns the actual path of the special folder - Links C:\Users\Jill\Links
##UserContacts## Returns the actual path of the special folder - Contacts C:\Users\Jill\Contacts
##UserSearches## Returns the actual path of the special folder - SavedSearches C:\Users\Jill\Searches
##commonprograms## Returns the actual path of the special folder - CommonPrograms C:\ProgramData\Microsoft\Windows\Start Menu\Programs
##ComputerName## Returns the machine’s name WIN10EN-LR3B66L
##ClientName## Returns the client machine’s name W2K16ST-5IS28JP
##ClientIPAddress## Returns the client machine’s IP address 10.150.153.138
##IpAddress## Returns the machine’s IP address 10.150.153.213
##ADSite## Returns the Active Directory site that the machine is a member of NKG
##DefaultRegValue## - Always string.Empty
##UserLDAPPath## Returns the current user’s distinguished name CN=Jill Chou,OU=User Accounts,OU=APAC,DC=citrite,DC=net
##VUEMAgentFolder## Returns the agent folder C:\Program Files (x86)\Citrix\Workspace Environment Management Agent
##RDSSessionID## Returns the remote desktop session ID 2
##RDSSessionName## Returns the remote desktop session name RDP-Tcp#72
##ClientRemoteOS## Returns the operating system of the machine used to connect to the virtual desktop Windows
##ClientOSInfos## Returns the machine’s OS information Windows 10 Enterprise 64-bit

Hash-tag ##UserScreenCaptureComment## is implemented for use in specific parts of the product. This tag can be included in the Email Template under Advanced Settings > UI Agent Personalization > Helpdesk Options. When included, users are presented with a comment field located below the screen capture in the agent screen capture utility. The comment is included in the support email at the location at which you placed the tag in the email template.

Active Directory attributes

To work with Active Directory attributes, WEM replaces the [ADAttribute:attrName] value with the related Active Directory attribute. [ADAttribute:attrName] is the dynamic token for any Active Directory attributes. There is a related filter that checks the value of the specified attributes.

For user organizational unit (OU) structures, WEM replaces the [UserParentOU:level] value with the related Active Directory OU name. The Active Directory path is the complete user path (LDAP) in Active Directory and [UserParentOU:level] is a subset of it.

For example, suppose you want to build a network drive for an OU to which the users belong. You can use the dynamic token [UserParentOU:level] in the network drive path to resolve the users’ OU dynamically. There are two ways to use the dynamic token:

  • Use the [UserParentOU:level] dynamic token directly in the network drive path. For example, you can use the following path: \\Server\Share\[UserParentOU:0]\.
  • Set an environment variable called OU, and then set its value to [UserParentOU:0]. You can then map the drive as \\Server\Share\%OU%\.

Note:

  • You can substitute the digit “0” with the number that corresponds to the level you want to reach in the OU structure.
  • You can append variables to the path. To do this, ensure that you have an exact folder structure that matches your OU layout.

You can also use Active Directory attributes for filtering purposes. On the Administration > Filters > Conditions > Filter Condition List tab, you can open the New Filter Condition window after you click Add. In the New Filter Condition window, you can see the following four filter condition types associated with Active Directory attributes:

  • Active Directory Attribute Match
  • Active Directory Group Match
  • Active Directory Path Match
  • Active Directory Site Match

For Active Directory Attribute Match, the dynamic token is [ADAttribute:attrName]. There is no dynamic token available for Active Directory Group Match because that condition type is used to check a group membership. For Active Directory Path Match, the dynamic token for the full LDAP path is ##UserLDAPPath##. For Active Directory Site Match, the dynamic token is ##ADSite##.

See the following table for examples:

Modal Description Example
[ADAttribute:attrName] Returns the specified attribute of the domain user [ADAttribute:name] returns Administrator
[PrinterAttribute:printername|attrName] Returns the specified attribute of the specified domain printer [PrinterAttribute:printer1|name] returns printer1
[UserParentOU: level] Returns the specified level of the current user’s parent OU [UserParentOU:1] in CN=Jill Chou,OU=User Accounts,OU=APAC,DC=citrite,DC=net returns APAC

Registries

To work with a registry, WEM replaces the [RegistryValue:<Registry path>] value with the related registry value. For example, you can specify the following value:

  • [RegistryValue:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Norskale\Agent Host\AgentLocation]

XML files

To work with an XML file, WEM replaces the [GetXmlValue:<XML path>|<tag name>] value with the specific tag value in the XML file. The XML path can be an actual path or an environment variable that resolves to a path. You must enclose the environment variable with %. For example, you can specify the following value:

  • [GetXmlValue:C:\citrix\test.xml|summary] or
  • [GetXmlValue:%xmlpath%|summary]

INI files

To work with an .ini file, WEM replaces the [GetIniValue:<INI path>|<section name in the .ini file>|<key name in the .ini.file>] with the key value. The INI path can be an actual path or an environment variable that resolves to a path. You must enclose the environment variable with %. For example, you can specify the following value:

  • [GetIniValue:C:\citrix\test.ini|PLD_POOL_LIC_NODE_0_0|LicExpTime] or
  • [GetIniValue:%inipath%|PLD_POOL_LIC_NODE_0_0|LicExpTime]

More information

Supportability matrix for filter conditions

The following table lists all condition types whose tested value or matching result supports dynamic tokens.

Condition type Tested value Matching result
ComputerName Match - Yes
ClientName Match - Yes
Environment Variable Match No Yes
Registry Value Match Yes Yes
WMI Query Result Match - Yes
XenApp Farm Name Match - Yes
XenApp Zone Name Match - Yes
XenDesktop Farm Name Match - Yes
XenDesktop Desktop Group Name Match - Yes
Active Directory Attribute Match Yes Yes
Name or Value is in List Yes Yes
No ComputerName Match - Yes
No ClientName Match - Yes
No Environment Variable Match No Yes
No Registry Value Match Yes Yes
No WMI Query result Match - Yes
No XenApp Farm Name Match - Yes
No XenApp Zone Name Match - Yes
No XenDesktop Farm Name Match - Yes
No XenDesktop Desktop Group Name Match - Yes
No Active Directory Attribute Match Yes Yes
Name or Value is not in List Yes Yes
Dynamic Value Match Yes Yes
No Dynamic Value Match Yes Yes
File Version Match Yes Yes
No File Version Match Yes Yes
Published Resource Name - Yes
Name is in List Yes Yes
Name is not in List Yes Yes
File/Folder exists - Yes
File/Folder does not exist - Yes
Dynamic tokens