Commands

This page shows available commands in the FastTrack language. Refer to the Getting Started Guide for more information.

Commands syntax

Commands Reference
Active Directory - Computers

CreateComputer <ComputerName>
CreateComputer <ComputerName>, <ContainerOrOUName>

Creates a computer in the Active Directory. If ContainerOrOUName is specified, the computer is created in that Container or OU, otherwise in the root of the Active Directory. If domain is different than the domain of the executing user, specify group as <Domain>\<ComputerName> and <Domain>\<ContainerOrOUName>.
Example: CreateComputer AcmePC0010

DeleteComputer <ComputerName>

Deletes an Active Directory computer, if it exists. If domain is different than the domain of the executing user, specify computer as <Domain>\<ComputerName>.
Example: DeleteComputer AcmePC0010

DisableComputer <ComputerName>

Disables an Active Directory computer. If domain is different than the current users' domain, specify name <Domain>\<ComputerName>.
Example: DisableComputer AcmeComputer

EnableComputer <ComputerName>

Enables an Active Directory computer. If domain is different than the current users' domain, specify name <Domain>\<ComputerName>.
Example: EnableComputer AcmeComputer

RenameComputer <ComputerName>, <NewComputerName>

Renames an Active Directory computer. If domain is different than the current users' domain, specify name <Domain>\<ComputerName>. Use SetComputerName to rename a local computer.
Example: RenameComputer AcmePC0010,AcmeShopPC01

SetComputerCustomProperty <ComputerName>, <PropertyName>, <PropertyValue>

Changes a custom property for an Active Directory computer. Property name must be an LDAP property name like 'managedBy'; see the "Attribute Editor" property tab of the computer for a list of attribute and values. Multiple values can be passed for multi-attribute fields. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<ComputerName>.
Example: SetComputerCustomProperty AcmePC0010,managedBy,"[UserDistinguishedName AcmeSysAdm]"

SetComputerDescription <ComputerName>, <Description>

Sets the description field of an Active Directory computer. Use the SetLocalComputerDescription command to set the local description of a computer. If domain is different than the domain of the executing user, specify computer as <Domain>\<ComputerName>.
Example: SetComputerDescription AcmePC0010,Shop demo computer

SetLocalComputerDescription <Description>

Sets the local description of the computer. Use SetComputerDescription to set the property in the Active Directory.
Example: SetLocalComputerDescription Houston DC
Active Directory - Groups - Computers

AddComputerToGroup <ComputerName>, <GroupName>

Adds a computer to the Active Directory group, if not already member. If domain is different than the current users' domain, specify group as <Domain>\<GroupName> and <Domain>\<ComputerName>.
Example: AddComputerToGroup AcmeComputer, MSOfficeMachines

RemoveComputerFromGroup <ComputerName>, <GroupName>

Removes a computer from the Active Directory group, if already member. If domain is different than the current users' domain, specify group as <Domain>\<GroupName> and <Domain>\<ComputerName> .
Example: RemoveComputerFromGroup AcmeComputer, MSOfficeMachines
Active Directory - Groups - Users

AddUserToGroup <UserName>, <GroupName>

Adds a user to an Active Directory group, if not already member. If domain is different than the domain of the executing user, specify as <Domain>\<GroupName> and <Domain>\<UserName>.
Example: AddUserToGroup AcmeUser,Acme Operators

CloneUserGroups <UserName>, <TargetUserName>

Makes the second user member of the same groups as the first user. If second user is member of any additional groups, the user will be removed from these groups. The result is that the second user is member of the exact same groups as the first user, including having same primary group. Use the CopyUserGroups command to only add new memberships. If domain is different than the domain of the executing user, specify as <Domain>\<GroupName> and <Domain>\<UserName>.
Example: CloneUserGroups AcmeUser,NewAcmeUser

CopyUserGroups <UserName>, <TargetUserName>

Adds the second user to all groups that the first user is member of, including setting the primary group to the same group. Groups that the user is already member of are ignored. Use the CloneUserGroups command to remove additional groups that the second user is member of that the first one is not. If domain is different than the domain of the executing user, specify as <Domain>\<GroupName> and <Domain>\<UserName>.
Example: CopyUserGroups AcmeUser,NewAcmeUser

RemoveUserFromGroup <UserName>, <GroupName>

Removes a user from an Active Directory group, if already member. If domain is different than the domain of the executing user, specify as <Domain>\<GroupName> and <Domain>\<UserName>.
Example: RemoveUserFromGroup AcmeUser,Acme Operators

SetUserPrimaryGroup <UserName>, <GroupName>

Sets the primary group of a user. The user must be member of the group. If domain is different than the domain of the executing user, specify as <Domain>\<GroupName> and <Domain>\<UserName>.
Example: SetUserPrimaryGroup AcmeUser,Domain Admins
Active Directory - Groups

AddGroupToGroup <GroupName>, <TargetGroupName>

Adds a the first specified Active Directory group to the second Active Directory group, if not already member. If domain is different than the current users' domain, specify group as <Domain>\<DomainGroupName>.
Example: AddGroupToGroup AcmeHelpDesk,Acme Operators

CreateDomainLevelDistributionGroup <GroupName>
CreateDomainLevelDistributionGroup <GroupName>, <ContainerOrOUName>

Creates a Domain Level Active Directory Distribution group. If ContainerOrOUName is specified, the user is created in that Container or OU, otherwise in the root of the Active Directory. If domain is different than the domain of the executing user, specify group as <Domain>\<GroupName> and <Domain>\<ContainerOrOUName>.
Example: CreateDomainLevelDistributionGroup Acme Operators

CreateDomainLevelGroup <GroupName>
CreateDomainLevelGroup <GroupName>, <ContainerOrOUName>

Creates a Domain Level Active Directory Security group. If ContainerOrOUName is specified, the user is created in that Container or OU, otherwise in the root of the Active Directory. If domain is different than the domain of the executing user, specify group as <Domain>\<GroupName> and <Domain>\<ContainerOrOUName>.
Example: CreateDomainLevelGroup Acme Operators

CreateGlobalDistributionGroup <GroupName>
CreateGlobalDistributionGroup <GroupName>, <ContainerOrOUName>

Creates a Global Active Directory Distribution group. If ContainerOrOUName is specified, the user is created in that Container or OU, otherwise in the root of the Active Directory. If domain is different than the domain of the executing user, specify group as <Domain>\<GroupName> and <Domain>\<ContainerOrOUName>.
Example: CreateGlobalDistributionGroup Acme Operators

CreateGlobalGroup <GroupName>
CreateGlobalGroup <GroupName>, <ContainerOrOUName>

Creates a Global Active Directory Security group. If ContainerOrOUName is specified, the user is created in that Container or OU, otherwise in the root of the Active Directory. If domain is different than the domain of the executing user, specify group as <Domain>\<GroupName> and <Domain>\<ContainerOrOUName>.
Example: CreateGlobalGroup Acme Operators

CreateUniversalDistributionGroup <GroupName>
CreateUniversalDistributionGroup <GroupName>, <ContainerOrOUName>

Creates a Universal Active Directory Distribution group. If ContainerOrOUName is specified, the user is created in that Container or OU, otherwise in the root of the Active Directory. If domain is different than the domain of the executing user, specify group as <Domain>\<GroupName> and <Domain>\<ContainerOrOUName>.
Example: CreateUniversalDistributionGroup Acme Operators

CreateUniversalGroup <GroupName>
CreateUniversalGroup <GroupName>, <ContainerOrOUName>

Creates a Universal Active Directory Security group. If ContainerOrOUName is specified, the user is created in that Container or OU, otherwise in the root of the Active Directory. If domain is different than the domain of the executing user, specify group as <Domain>\<GroupName> and <Domain>\<ContainerOrOUName>.
Example: CreateUniversalGroup Acme Operators

DeleteGroup <GroupName>

Deletes an Active Directory group of any type, if it exists. If domain is different than the domain of the executing user, specify group as <Domain>\<GroupName>.
Example: DeleteGroup Acme Operators

DisableSimpleGroupCheck

Disables simple group checks for the UserIsMemberOf condition (default).

EnableSimpleGroupCheck

Enables simple group checks for the UserIsMemberOf condition, when used for the logged on user. The simple group check will not query the Active Directory for information about memberships, but will use the local Windows cache information. Simple group is quicker, but will disable support for cross-domain checks, distribution group memberships, recursive groups and when executed under User Account Control (UAC), will not return true on membership of administrator groups such as Domain Admins.

RemoveGroupFromGroup <GroupName>, <TargetGroupName>

Removes the first specified Active Directory group from the second Active Directory group, if already member. If domain is different than the current users' domain, specify group as <Domain>\<DomainGroupName>.
Example: RemoveGroupFromGroup AcmeHelpDesk,Acme Operators

RenameGroup <GroupName>, <NewGroupName>

Renames an Active Directory group. If domain is different than the current users' domain, specify group as <Domain>\<DomainGroupName>.
Example: RenameGroup AcmeHelpDesk,Acme HelpDesk

SetGroupCustomProperty <GroupName>, <PropertyName>, <PropertyValue>

Changes a custom property for an Active Directory group. Property name must be an LDAP property name like 'managedBy'; see the "Attribute Editor" property tab of the group for a list of attribute and values. Multiple values can be passed for multi-attribute fields. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<GroupName>.
Example: SetGroupCustomProperty AcmeHelpDesk,managedBy,"[UserDistinguishedName AcmeSysAdm]"

SetGroupDescription <GroupName>, <Description>

Sets the description field of an Active Directory group of any type. If domain is different than the domain of the executing user, specify group as <Domain>\<GroupName>.
Example: SetGroupDescription Acme Operators,HelpDesk operators within Acme Corp
Active Directory - Organizational Units - Computers

MoveComputer <ComputerName>, <ContainerOrOUName>

Moves a computer to a specific OU or container. The domain is, by default, the domain of the logged-on user. To specify another domain, use: <Domain>\<OUName>. An OU can be located by either its name (if unique), distinguished name or a special FastTrack slash notation. If the name of an OU is unique, simply use the name and it will automatically be found. If the name might be ambiguous, a slash notation from the root can be used instead of full distinguished name. For example an OU "Sales" under a root OU "America" would have a distinguished name of for example OU=Sales,OU=America,DC=ACME,DC=COM. Simply use America/Sales for simpler syntax instead. If the OU actually contains a slash, use double slash to escape.
Example: MoveComputer AcmePC0010,Acme Sales America
Active Directory - Organizational Units - Groups

MoveGroup <GroupName>, <ContainerOrOUName>

Moves a group to a specific OU or container. The domain is, by default, the domain of the logged-on user. To specify another domain, use: <Domain>\<OUName>. An OU can be located by either its name (if unique), distinguished name or a special FastTrack slash notation. If the name of an OU is unique, simply use the name and it will automatically be found. If the name might be ambiguous, a slash notation from the root can be used instead of full distinguished name. For example an OU "Sales" under a root OU "America" would have a distinguished name of for example OU=Sales,OU=America,DC=ACME,DC=COM. Simply use America/Sales for simpler syntax instead. If the OU actually contains a slash, use double slash to escape.
Example: MoveUser Acme Sales Staff,Acme Sales America
Active Directory - Organizational Units - Users

MoveUser <UserName>, <ContainerOrOUName>

Moves user to a specific OU or container. The domain is, by default, the domain of the logged-on user. To specify another domain, use: <Domain>\<OUName>. An OU can be located by either its name (if unique), distinguished name or a special FastTrack slash notation. If the name of an OU is unique, simply use the name and it will automatically be found. If the name might be ambiguous, a slash notation from the root can be used instead of full distinguished name. For example an OU "Sales" under a root OU "America" would have a distinguished name of for example OU=Sales,OU=America,DC=ACME,DC=COM. Simply use America/Sales for simpler syntax instead. If the OU actually contains a slash, use double slash to escape.
Example: MoveUser AcmeUser,Acme Sales America
Active Directory - Organizational Units

CreateOU <OUName>
CreateOU <OUName>, <ContainerOrOUName>

Creates an organizational unit in the Active Directory. If ContainerOrOUName is specified, the OU is created in that Container or OU, otherwise in the root of the Active Directory. The domain is, by default, the domain of the logged-on user. To specify another domain, use: <Domain>\<OUName>. An OU can be located by either its name (if unique), distinguished name or a special FastTrack slash notation. If the name of an OU is unique, simply use the name and it will automatically be found. If the name might be ambiguous, a slash notation from the root can be used instead of full distinguished name. For example an OU "Sales" under a root OU "America" would have a distinguished name of for example OU=Sales,OU=America,DC=ACME,DC=COM. Simply use America/Sales for simpler syntax instead. If the OU actually contains a slash, use double slash to escape.
Example: CreateOU Acme Sales America

DeleteOU <OUName>

Deletes an Active Directory organizational unit, if it exists. The domain is, by default, the domain of the logged-on user. To specify another domain, use: <Domain>\<OUName>. An OU can be located by either its name (if unique), distinguished name or a special FastTrack slash notation. If the name of an OU is unique, simply use the name and it will automatically be found. If the name might be ambiguous, a slash notation from the root can be used instead of full distinguished name. For example an OU "Sales" under a root OU "America" would have a distinguished name of for example OU=Sales,OU=America,DC=ACME,DC=COM. Simply use America/Sales for simpler syntax instead. If the OU actually contains a slash, use double slash to escape.
Example: DeleteOU Acme Sales America

DisableOURecursion

Disables recursion for conditions and collections on Organizational Unit operations. Conditions and collections only look at the current OU and not SubOUs.

EnableOURecursion

Enables recursion for conditions and collections on Organizational Unit operations. Recursion in enabled by default.

MoveOU <OUName>, <ContainerOrOUName>

Moves an organizational unit to a specific OU or container. The domain is, by default, the domain of the logged-on user. To specify another domain, use: <Domain>\<OUName>. An OU can be located by either its name (if unique), distinguished name or a special FastTrack slash notation. If the name of an OU is unique, simply use the name and it will automatically be found. If the name might be ambiguous, a slash notation from the root can be used instead of full distinguished name. For example an OU "Sales" under a root OU "America" would have a distinguished name of for example OU=Sales,OU=America,DC=ACME,DC=COM. Simply use America/Sales for simpler syntax instead. If the OU actually contains a slash, use double slash to escape.
Example: MoveOU Acme Sales America,Acme Sales Global

RenameOU <OUName>, <NewOUName>

Renames an Active Directory organizational unit. The domain is, by default, the domain of the logged-on user. To specify another domain, use: <Domain>\<OUName>. An OU can be located by either its name (if unique), distinguished name or a special FastTrack slash notation. If the name of an OU is unique, simply use the name and it will automatically be found. If the name might be ambiguous, a slash notation from the root can be used instead of full distinguished name. For example an OU "Sales" under a root OU "America" would have a distinguished name of for example OU=Sales,OU=America,DC=ACME,DC=COM. Simply use America/Sales for simpler syntax instead. If the OU actually contains a slash, use double slash to escape.
Example: RenameOU Acme Sales America,Acme Sales

SetOUCustomProperty <OUName>, <PropertyName>, <PropertyValue>

Changes a custom property for an Active Directory organizational unit. Property name must be an LDAP property name like 'managedBy'; see the "Attribute Editor" property tab of the organizational unit for a list of attribute and values. Multiple values can be passed for multi-attribute fields. The domain is, by default, the domain of the logged-on user. To specify another domain, use: <Domain>\<OUName>. An OU can be located by either its name (if unique), distinguished name or a special FastTrack slash notation. If the name of an OU is unique, simply use the name and it will automatically be found. If the name might be ambiguous, a slash notation from the root can be used instead of full distinguished name. For example an OU "Sales" under a root OU "America" would have a distinguished name of for example OU=Sales,OU=America,DC=ACME,DC=COM. Simply use America/Sales for simpler syntax instead. If the OU actually contains a slash, use double slash to escape.
Example: SetOUCustomProperty Acme Sales America,managedBy,"[UserDistinguishedName AcmeSysAdm]"

SetOUDescription <OUName>, <Description>

Sets the description field of an Active Directory organizational unit. The domain is, by default, the domain of the logged-on user. To specify another domain, use: <Domain>\<OUName>. An OU can be located by either its name (if unique), distinguished name or a special FastTrack slash notation. If the name of an OU is unique, simply use the name and it will automatically be found. If the name might be ambiguous, a slash notation from the root can be used instead of full distinguished name. For example an OU "Sales" under a root OU "America" would have a distinguished name of for example OU=Sales,OU=America,DC=ACME,DC=COM. Simply use America/Sales for simpler syntax instead. If the OU actually contains a slash, use double slash to escape.
Example: SetOUDescription Acme Sales America,All sales staff in the US
Active Directory - Users - Password

AllowUserPasswordChange <UserName>

Enables the ability to change password for an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: AllowUserPasswordChange AcmeUser

DisableUserMustChangePassword <UserName>

Sets the user not be forced to change password at next logon. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: DisableUserMustChangePassword AcmeUser

DisableUserPasswordExpiry <UserName>

Disables expiration of password for an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: DisableUserPasswordExpiry AcmeUser

DisallowUserPasswordChange <UserName>

Disables the ability to change password for an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: DisallowUserPasswordChange AcmeUser

EnableUserMustChangePassword <UserName>

Sets the user to must change password at next logon. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: EnableUserMustChangePassword AcmeUser

EnableUserPasswordExpiry <UserName>

Enables expiration of password for an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: EnableUserPasswordExpiry AcmeUser

SetUserPassword <UserName>, <EncryptedPassword>

Changes the password of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>. Password must be encrypted in the editor using Tools->Encrypt Password or using the EncryptPassword function.
Example: SetUserPassword AcmeUser, Akut3sRS6e3kJHztyeqg9w==

SetUserPasswordPlain <UserName>, <PlainTextPassword>

Changes the password of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>. Password is entered as plain text. SetUserPassword is recommended, unless the password is retrieved from user input.
Example: SetUserPassword AcmeUser, MyNewAcmePassword2
Active Directory - Users - Properties

ClearUserImage <UserName>
ClearUserImage <UserName>, <PropertyName>

Clears a user photo of an Active Directory user. The default attribute is "thumbnailPhoto", but other attributes can be specified, such as "jpegPhoto". Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: ClearUserPhoto AcmeUser

ClearUserWorkstations <UserName>

Allows the user to log on to any workstation by clearing the list of workstations that the user is allowed to log on to, which is listed by pressing the "Log on to..." under the user account tab in the Active Directory. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: ClearUserWorkstations AcmeUser

CopyUserImage <UserName>, <ImageFile>
CopyUserImage <UserName>, <ImageFile>, <PropertyName>

Copies a user photo of an Active Directory user to a disk file. The default attribute is "thumbnailPhoto", but other attributes can be specified, such as "jpegPhoto". Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: CopyUserImage AcmeUser,AcmeUser.jpg

SetUserAssistantPhoneNo <UserName>, <PhoneNo>

Changes the assistant's phone number of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserAssistantPhoneNo AcmeUser,555.555.5555

SetUserCity <UserName>, <City>

Changes the "City" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserCity AcmeUser,Los Angeles

SetUserCommonName <UserName>, <CommonName>

Changes the common name ("cn" attribute) of an Active Directory user. When using CreateUser the common name is the same as the account name. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserCommonName AcmeUser,Steve Hansson

SetUserCompany <UserName>, <CompanyName>

Changes the "Company" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserCompany AcmeUser,Acme Corp

SetUserCountry <UserName>, <CountryName>

Changes the "Country" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserCountry AcmeUser,United States

SetUserCustomProperty <UserName>, <PropertyName>, <PropertyValue>

Changes a custom property for an Active Directory user. Property name must be an LDAP property name like 'streetAddress'; see the "Attribute Editor" property tab of the user for a list of attribute and values. Multiple values can be passed for multi-attribute fields. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserCustomProperty AcmeUser,streetAddress,Acmeroad 55

SetUserDepartment <UserName>, <DepartmentName>

Changes the "Department" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserDepartment AcmeUser,Sales

SetUserDescription <UserName>, <Description>

Changes the description of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserDescription AcmeUser,Acme test user

SetUserDisplayName <UserName>, <DisplayName>

Changes the display name of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserDisplayName AcmeUser,Steve Hansson

SetUserEMailAddress <UserName>, <EmailAddress>

Changes the principal name of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserEMailAddress AcmeUser,acme@acme.com

SetUserExchangeCustomAttribute <UserName>, <Number>, <PropertyValue>

Changes an Exchange Custom Attribute (also known as Extension Attributes) for an Active Directory user. Number must be between 1 and 15. To clear the attribute, set property value to an empty string. If no username is specified, current user is assumed. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.

SetUserFaxNo <UserName>, <FaxNo>

Changes the "FaxNo" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserFaxNo AcmeUser,555.555.5555

SetUserHomeDir <UserName>, <Path>

Changes the home path of an Active Directory user. Enter blank path to clear the home path. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserHomeDir AcmeUser,\\Acme\Home$\AcmeUser

SetUserHomeDrive <UserName>, <Drive>

Changes the home drive of an Active Directory user (e.g. H:). Enter blank path to clear the home drive. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserHomeDrive AcmeUser,H:

SetUserHomePhoneNo <UserName>, <PhoneNo>

Changes the "Home Phone" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserHomePhoneNo AcmeUser,555.555.5555

SetUserImage <UserName>, <ImageFile>
SetUserImage <UserName>, <ImageFile>, <PropertyName>
SetUserImage <UserName>, <ImageFile>, <PropertyName>, <ScaledPixelSize>

Sets a user photo of an Active Directory user. The default attribute is "thumbnailPhoto", but other attributes can be specified, such as "jpegPhoto". ScaledPixelSize will scale the photo to a this maximum width or height in pixels. If ScaledPixelSize is 96 and the original image is 960x640, the image will be 96x64. If ScaledPixelSize is not specified, no scaling is done. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserPhoto AcmeUser,Acme.jpg

SetUserInitials <UserName>, <Initials>

Changes the initials of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserInitials AcmeUser,SH

SetUserIPPhoneNo <UserName>, <PhoneNo>

Changes the "IP Phone" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserIPPhoneNo AcmeUser,555.555.5555

SetUserLogonScript <UserName>, <File>

Changes the logon script path of an Active Directory user. Enter blank path to clear the logon script. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserLogonScript AcmeUser,\\Acme\NetLogon\FTLogon.exe

SetUserMobileNo <UserName>, <PhoneNo>

Changes the "Mobile" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserMobileNo AcmeUser,555.555.5555

SetUserName <UserName>, <FirstName>, <LastName>

Changes the first name and last name of an Active Directory user. Use the SetUserCommonName and SetUserDisplayName commands to change the common and display names of the account. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserName AcmeUser,Steve,Hansson

SetUserNotes <UserName>, <Notes>

Changes the "Notes" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.

SetUserOffice <UserName>, <Office>

Changes the "Office" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserOffice AcmeUser,Acme office

SetUserPagerNo <UserName>, <PhoneNo>

Changes the "Pager" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserPagerNo AcmeUser,555.555.5555

SetUserPhoneNo <UserName>, <PhoneNo>

Changes the "Telephone number" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserPhoneNo AcmeUser,555-12345

SetUserPOBox <UserName>, <POBox>

Changes the "P.O. Box" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.

SetUserPrincipalName <UserName>, <PrincipalName>

Changes the principal name of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserPrincipalName AcmeUser,acme@acme.com

SetUserProfilePath <UserName>, <Path>

Changes the profile path of an Active Directory user. Enter blank path to clear the profile path. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserProfilePath AcmeUser,\\AcmeServer\Roaming$\AcmeUser

SetUserState <UserName>, <State>

Changes the "State" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserState AcmeUser,California

SetUserStreet <UserName>, <Address>

Changes the "Street" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserStreet AcmeUser,Fremont St. 4533

SetUserTitle <UserName>, <Title>

Changes the "Title" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserTitle AcmeUser,CEO

SetUserWebPage <UserName>, <WebPage>

Changes the "Webpage" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.

SetUserWorkstations <UserName>, <ListOfWorkstations>

Sets a list of workstations that the user is allowed to log on to, which is listed by pressing the "Log on to..." under the user account tab in the Active Directory. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserWorkstations AcmeUser,DesktopPC1244,LaptopPC4433

SetUserZip <UserName>, <ZipCode>

Changes the "Zip" property of an Active Directory user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserZip AcmeUser,90210
Active Directory - Users

CopyUser <UserName>, <NewUserName>, <EncryptedPassword>
CopyUser <UserName>, <NewUserName>, <EncryptedPassword>, <ContainerOrOUName>
CopyUser <UserName>, <NewUserName>, <EncryptedPassword>, <FirstName>, <LastName>
CopyUser <UserName>, <NewUserName>, <EncryptedPassword>, <ContainerOrOUName>, <FirstName>, <LastName>

Copies an Active Directory user account. The new user is created in the same container or OU as the source user, unless specified otherwise by parameters. The new user will be member of the same groups as the source user and non-personal attributes will be copied, such as company, department, address, department, logon script, etc. Personal attributes must be set afterwards with other commands, such as using the SetUserHomeDir command to the set the home folder directory. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName> and <Domain>\<ContainerOrOUName>. When specifying first name and last name, this information will be used to set the first name, last name, display name and common name properties. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: CopyUser AcmeUser, NewAcmeUser, Akut3sRS6e3kJHztyeqg9w==

CopyUserPlain <UserName>, <NewUserName>, <EncryptedPassword>
CopyUserPlain <UserName>, <NewUserName>, <EncryptedPassword>, <ContainerOrOUName>
CopyUserPlain <UserName>, <NewUserName>, <EncryptedPassword>, <FirstName>, <LastName>
CopyUserPlain <UserName>, <NewUserName>, <EncryptedPassword>, <ContainerOrOUName>, <FirstName>, <LastName>

Copies an Active Directory user account. The new user is created in the same container or OU as the source user, unless specified otherwise by parameters. The new user will be member of the same groups as the source user and non-personal attributes will be copied, such as company, department, address, department, logon script, etc. Personal attributes must be set afterwards with other commands, such as using the SetUserHomeDir command to the set the home folder directory. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName> and <Domain>\<ContainerOrOUName>. When specifying first name and last name, this information will be used to set the first name, last name, display name and common name properties. Password is entered as plain text. CopyUser is recommended, unless the password is retrieved from user input.
Example: CopyUserPlain AcmeUser, NewAcmeUser, AcmePassword

CreateUser <UserName>, <EncryptedPassword>
CreateUser <UserName>, <EncryptedPassword>, <ContainerOrOUName>
CreateUser <UserName>, <EncryptedPassword>, <FirstName>, <LastName>
CreateUser <UserName>, <EncryptedPassword>, <ContainerOrOUName>, <FirstName>, <LastName>

Creates an Active Directory user account. If no ContainerOrOUName is specified, the new user is placed in the "Users" container. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName> and <Domain>\<ContainerOrOUName>. When specifying first name and last name, this information will be used to set the first name, last name, display name and common name properties. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: CreateUser AcmeUser, Akut3sRS6e3kJHztyeqg9w==

CreateUserPlain <UserName>, <PlainTextPassword>
CreateUserPlain <UserName>, <PlainTextPassword>, <ContainerOrOUName>
CreateUserPlain <UserName>, <PlainTextPassword>, <FirstName>, <LastName>
CreateUserPlain <UserName>, <PlainTextPassword>, <ContainerOrOUName>, <FirstName>, <LastName>

Creates an Active Directory user account. If no ContainerOrOUName is specified, the new user is placed in the "Users" container. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName> and <Domain>\<ContainerOrOUName>. When specifying first name and last name, this information will be used to set the first name, last name, display name and common name properties. Password is entered as plain text. CreateUser is recommended, unless the password is retrieved from user input.
Example: CreateUserPlain AcmeUser, AcmePassword

DeleteUser <UserName>

Deletes an Active Directory user account, if it exists. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: DeleteUser AcmeUser

DisableUser <UserName>

Disables an Active Directory user, if it is currently enabled. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: DisableUser AcmeUser

EnableUser <UserName>

Enables an Active Directory user, if it is currently disabled. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: EnableUser AcmeUser

RemoveUserExpiry <UserName>

Removes account expiry of a user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: RemoveUserExpiry AcmeUser

RenameUser <UserName>, <NewName>

Renames a user account. Note that this does not change the common name. If the common name needs to changed, use the SetUserCommonName command. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: RenameUser AcmeUser, AcmeRenamedUser

SetUserExpiryDate <UserName>, <Date>

Set the expiry date of a user. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: SetUserExpiryDate AcmeUser, [AddDays 90]

UnlockUser <UserName>

Unlocks an Active Directory user, if it is currently locked. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: UnlockUser AcmeUser
Azure Active Directory

ResetAzureUser

Resets the default user for all Azure Active Directory user features to the logged on user.

SetAzureApp <TenantName>, <ClientId>, <Key>

Points to the Azure Active Directory application that must be used for interaction.
Example: SetAzureApp acme.com,"c40ab109-8ed2-e6fe-43ed-f00523470e79","R5fTQh2TUtDA4NYId6QVnchwoP5IH0q/xoToin1PY5W="

SetAzureUser <UserName>

Sets the default user for all Azure Active Directory user features.
Example: SetAzureUser joe@acme.com
Backup and Replication - Excludes

SyncExcludeClear

Clears all exclude patterns for SyncDir, SyncDirSecure, CopyDir and CopyDirSecure operations.

SyncExcludeDir <DirectoryName>

Adds a directory to exclude from SyncDir, SyncDirSecure, CopyDir and CopyDirSecure operations. Any directory matching the file name will be excluded.
Example: SyncExcludeDir Pictures

SyncExcludeDirs <DirectoryName>
SyncExcludeDirs <ListOfDirectories>

Adds directory names or patterns to exclude from SyncDir, SyncDirSecure, CopyDir and CopyDirSecure operations. Wildcards are accepted like *picture*. All subdirectories and subfiles under a matched directory are excluded. ListOfDirectories simply means a dynamic number of parameters/directories; there can be any number of parameters from none to an infinite number of parameters.
Example: SyncExcludeDir Pictures,Movies,Backup

SyncExcludeFile <FileName>

Adds a file to exclude from SyncDir, SyncDirSecure, CopyDir and CopyDirSecure operations. Any file matching the file name will be excluded.
Example: SyncExcludeFile Index.dat

SyncExcludeFiles <FilePattern>
SyncExcludeFiles <ListOfFilePatterns>

Adds file names or patterns to exclude from SyncDir, SyncDirSecure, CopyDir and CopyDirSecure operations. Wildcards are accepted like *.dat. Any file matching the patterns will be excluded. ListOfFilePatterns simply means a dynamic number of parameters/patterns; there can be any number of parameters from none to an infinite number of parameters.
Example: SyncExcludeFile *.mp3,*.avi,*.jpg
Backup and Replication - Include

SyncIncludeClear

Clears all include patterns for SyncDir, SyncDirSecure, CopyDir and CopyDirSecure operations.

SyncIncludeFile <FileName>

Adds a file to include to SyncDir, SyncDirSecure, CopyDir and CopyDirSecure operations. Any file matching the file name will be included. Any files not matching all included files or file patterns will be excluded.
Example: SyncIncludeFile Index.dat

SyncIncludeFiles <FilePattern>
SyncIncludeFiles <ListOfFilePatterns>

Adds file names or patterns to include to SyncDir, SyncDirSecure, CopyDir and CopyDirSecure operations. Wildcards are accepted like *.dat. Any files not matching all included files or file patterns will be excluded. ListOfFilePatterns simply means a dynamic number of parameters/patterns; there can be any number of parameters from none to an infinite number of parameters.
Example: SyncIncludeFiles *.pst,*.ost
Backup And Replication - Settings

DisableSyncCancel

Removes the cancel button for commands SyncDir and SyncDirSecure.

DisableSyncLog

Disables logging for SyncDir, SyncDirSecure, CopyDir and CopyDirSecure operations.

DisableSyncRepairMode

Determines if secure operations using SyncDirSecure, SyncDirSecureHidden, CopyDirSecure and CopyDirSecureHidden checks for permission changes in files that are not new or have content changes. By default existing unchanged files are not checked for security changes for performance reasons, but folders are always checked. If an unchanged file exists in both source and destination, changes in file security will not be checked, unless explicitly overruled with the EnableSyncRepairMode command. The recommended setting is the default mode that can also be set with the DisableSyncRepairMode command. Refer to http://www.fasttrackscript.com/SyncDir for more information on this mode.

EnableSyncCancel <LogFile>

When enabled, a cancel button is displayed in the user interface for operations for the commands SyncDir and SyncDirSecure. By default the user can cancel. If the user clicks the cancel button, all current copies are finished to avoid data corruption and then the operation is cancelled. Use the LastSyncWasCancelled condition to determine, if the last operation was cancelled by the user. Use the DisableSyncCancel command to remove the cancellation option.

EnableSyncLog <LogFile>

When enabled, all operations using SyncDir, SyncDirSecure, CopyDir and CopyDirSecure are logged to this file. Refer to http://www.fasttrackscript.com/SyncDir for more information on this mode.

EnableSyncRepairMode

Determines if secure operations using SyncDirSecure, SyncDirSecureHidden, CopyDirSecure and CopyDirSecureHidden checks for permission changes in files that are not new or have content changes. By default existing unchanged files are not checked for security changes for performance reasons, but folders are always checked. If an unchanged file exists in both source and destination, changes in file security will not be checked, unless explicitly overruled with the EnableSyncRepairMode command. The recommended setting is the default mode that can also be set with the DisableSyncRepairMode command. Refer to http://www.fasttrackscript.com/SyncDir for more information on this mode.

SetIOThreads <NumberOfThreads>

Sets the number of threads that SyncDir, SyncDirSecure, CopyDir, CopyDirSecure, DeleteSubFiles and DeleteDir use. Default is 8, meaning that up to 8 simultaneous IO operations are executed in parallel.
Example: SetIOThreads 32

SetIOThreshold <ThresholdInMB>

Sets the size in MB, where SyncDir, SyncDirSecure, CopyDir and CopyDirSecure operations will copy single threaded (regardless of thread settings) and operate on block level instead of file level. Default is 50, meaning files over 50 MB will be copied single threaded. If number of IO threads is already set to 1 with the SetIOThreads command, this setting has no effect.
Example: SetIOThreshold 50
Backup and Replication

SyncDir <SourcePath>, <DestPath>

Synchronizes source directory tree to the destination directory making them the same, while only copying changes. The difference between SyncDir and SyncDirSecure is that SyncDirSecure will also copy and synchronize permissions. Files and directories issued with SyncExcludeDir and SyncExcludeFile are excluded. Symbolic link directories are ignored to prevent unintended copying of files. Will by default use 8 threads to execute, use SetIOThreads command to change number of threads. SyncDir will switch to single threaded and block level mode when files are over 50mb by default, use SetIOThreshold to change the threshold. Use the LastSyncWasCancelled condition to detect cancellation. The cancel button can be removed using the DisableSyncCancel command. Use the SetWaitCaption to change the "Please wait ..." header.
Example: SyncDir [UserDocumentsDir],[UserHomeDir]\DocumentsBackup

SyncDirHidden <SourcePath>, <DestPath>

Synchronizes source directory tree to the destination directory making them the same, while only copying changes. The difference between SyncDirHidden and SyncDirSecureHidden is that SyncDirSecureHidden will also copy and synchronize permissions. No user interface is shown during the process. Files and directories issued with SyncExcludeDir and SyncExcludeFile are excluded. Symbolic link directories are ignored to prevent unintended copying of files. Will by default use 8 threads to execute, use SetIOThreads command to change number of threads. SyncDir will switch to single threaded and block level mode when files are over 50mb by default, use SetIOThreshold to change the threshold.
Example: SyncDirHidden [UserDocumentsDir],[UserHomeDir]\DocumentsBackup

SyncDirSecure <SourcePath>, <DestPath>

Synchronizes source directory tree to the destination directory making them the same, while only copying changes. The difference between SyncDir and SyncDirSecure is that SyncDirSecure will also copy and synchronize permissions. If an unchanged file exists in both source and destination, changes in file security only will not be checked for performance reasons, unless explicitly overruled with the EnableSyncRepairMode command. Folder permissions are always checked. Files and directories issued with SyncExcludeDir and SyncExcludeFile are excluded. Symbolic link directories are ignored to prevent unintended copying of files. Will by default use 8 threads to execute, use SetIOThreads command to change number of threads. SyncDirSecure will switch to single threaded and block level mode when files are over 50mb by default, use SetIOThreshold to change the threshold. Use the LastSyncWasCancelled condition to detect cancellation. The cancel button can be removed using the DisableSyncCancel command.
Example: SyncDirSecure [UserDocumentsDir],[UserHomeDir]\DocumentsBackup

SyncDirSecureHidden <SourcePath>, <DestPath>

Synchronizes source directory tree to the destination directory making them the same, while only copying changes. The difference between SyncDirHidden and SyncDirSecureHidden is that SyncDirSecureHidden will also copy and synchronize permissions. If an unchanged file exists in both source and destination, changes in file security only will not be checked for performance reasons, unless explicitly overruled with the EnableSyncRepairMode command. Folder permissions are always checked. No user interface is shown during the process. Files and directories issued with SyncExcludeDir and SyncExcludeFile are excluded. Symbolic link directories are ignored to prevent unintended copying of files. Will by default use 8 threads to execute, use SetIOThreads command to change number of threads. SyncDir will switch to single threaded and block level mode when files are over 50mb by default, use SetIOThreshold to change the threshold.
Example: SyncDirSecureHidden [UserDocumentsDir],[UserHomeDir]\DocumentsBackup
Browsers

DisableProxyLocalAddressBypass

Disables proxy bypass for local addresses.

DisableProxyServer

Clears proxy server for the current user. Will also be disabled for running browsers and processes. Proxy changes will also take effect in Firefox and Chrome, unless the configuration in these are manually changed to not use system settings.

EnableProxyLocalAddressBypass

Enables proxy bypass for local addresses.

EnableProxyServer

Enables the current proxy server for the current user. Will also be enabled for running browsers and processes. Proxy changes will also take effect in Firefox and Chrome, unless the configuration in these are manually changed to not use system settings.

InstallVirtualBrowser <ScriptFile>

Installs a virtual browser named "FastTrack Virtual Browser" to handle http and https requests; refer to www.fasttrackscript.com/BrowserControl for more information. The command must be executed as an elevated administrator to install the virtual browser. The command has no effect on operating systems previous to Windows 8 - use the SetScriptAsDefaultBrowser for these operating systems. If the script has no path, it will automatically be copied to the local machine. If the script has a path, the script will execute from this location. Inside the script use the [VirtualBrowserURL] function to get the url to use. The intention of the command is to use a controller script to launch browsers based on logic, such as the url and start a browsers exe file based on this logic and pass the [VirtualBrowserURL] value. Refer to www.fasttrackscript.com/BrowserControl for more information.
Example: InstallVirtualBrowser MyController.fsh

RemoveDefaultBrowserChecks

Removes the default browser checks in Internet Explorer, Firefox and Chrome. This is automatically done when using the SetDefaultBrowser or SetScriptAsDefaultBrowser commands. When using the InstallVirtualBrowser command and Windows 2012 Group Policies, the command can be used in logon script to remove the annoyance of default browser notification in the browser set by Group Policies. Refer to www.fasttrackscript.com/BrowserControl for more information.

RemoveVirtualBrowser

Removes a virtual browser set with the InstallVirtualBrowser command. Refer to www.fasttrackscript.com/BrowserControl for more information.

SetDefaultBrowser <Browser>

Sets the default browser and removes the default browser checks in Internet Explorer, Firefox and Chrome. Notice that this command has no effect starting from Windows 8, where you must use Group Policies to control the default browser - refer to www.fasttrackscript.com/BrowserControl for more information. Possible values are "Internet Explorer", "Chrome" and "FireFox". If the browser is not installed, the default browser is not changed. For other browsers, select a default browser in your own computer and use the value set under HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http - using a custom value does not work in Windows XP.
Example: SetDefaultBrowser Chrome

SetHomePage <Url>

Sets the browser home page for the current user. The change is immediate on Internet Explorer. On Firefox and Chrome, the change will apply if the browser is not open and the user has a browser profile. For logon scripts, use this command in the prelogon.fsh part.
Example: SetHomePage www.google.com

SetProxyBypassAddresses <ListOfAddresses>

Sets hostnames/addresses for the proxy to bypass. An empty list will clear the addresses.

SetProxyServer <Server>, <Port>

Sets and enables proxy server for the current user. The setting will also take effect on running browsers. Proxy changes will also take effect in Firefox and Chrome, unless the configuration in these are manually changed to not use system settings.
Example: SetProxyServer acmeproxy.acme.com,8080

SetScriptAsDefaultBrowser <ScriptFile>

Installs a script as the default browser and removes the default browser checks in Internet Explorer, Firefox and Chrome. Notice that this command has no effect starting from Windows 8. On Windows 8 the InstallVirtualBrowser command must be used - refer to www.fasttrackscript.com/BrowserControl for more information. Inside the script use the [VirtualBrowserURL] function to get the url to use. The intention of the command is to use a controller script to launch browsers based on logic, such as the url and start a browsers exe file based on this logic and pass the [VirtualBrowserURL] value. Refer to www.fasttrackscript.com/BrowserControl for more information.
Example: SetScriptAsDefaultBrowser MyController.fsh
Citrix - Client

DisableSeamlessIcaMode

Disables seamless mode. Must be used when the application is a published desktop.

EnableSeamlessIcaMode

Enables seamless mode when possible for published applications and published desktops executed with the RunIcaApp and RunIcaAppDirect commands.

RunIcaApp <XMLBroker>, <ApplicationName>
RunIcaApp <XMLBroker>, <ApplicationName>, <UserName>, <EncryptedPassword>

Shows a Citrix published application. To specify a another port than 80 for the Citrix XML Broker port, use <XMLBroker>:<Port> instead of just <XMLBroker>. When the user stops the session, the script continues. Use <Domain>\<UserName> to specify domain for the connecting user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If the published application is a desktop, use the DisableSeamlessIcaMode command first to disable seamless mode. Citrix receiver must be installed.

RunIcaAppDirect <Server>, <ApplicationName>
RunIcaAppDirect <Server>, <ApplicationName>, <UserName>, <EncryptedPassword>

Shows a Citrix published application from a specific server. To specify a another port than the default 1494, use <Server>:<Port> instead of just <Server>. When the user stops the session, the script continues. Use <Domain>\<UserName> to specify domain for the connecting user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If the published application is a desktop, use the DisableSeamlessIcaMode command first to disable seamless mode. Citrix receiver must be installed.

RunIcaFile <IcaFile>
RunIcaFile <IcaFile>, <UserName>, <EncryptedPassword>

Shows a Citrix session based on an ICA file. When the user stops the session, the script continues. Use <Domain>\<UserName> to specify domain for the connecting user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. To specify a another port than the default 1494, use <Server>:<Port> instead of just <Server>. Citrix receiver must be installed.

SetIcaFixedSize <Width>, <Height>
SetIcaFixedSize <Width>, <Height>, <Depth>

Sets the size in pixels of new Citrix desktops created with RunIcaApp, RunIcaAppDirect and ShowIcaDesktop commands. Setting the size of a seamless application is not supported by Citrix and therefore this command only takes effect with RunIcaApp and RunIcaAppDirect, when seamless mode is disabled. Depth can be 16 or 24 for number of color bit. To restore the default size, use the SetIcaSize command and set size to 80 percent.
Example: SetIcaDesktopFixedSize 1024,768

SetIcaSize <Percent>
SetIcaSize <PercentX>, <PercentY>
SetIcaSize <PercentX>, <PercentY>, <Depth>

Sets the size of new Citrix desktops created with RunIcaApp, RunIcaAppDirect and ShowIcaDesktop commands. Setting the size of a seamless application is not supported by Citrix and therefore this command only takes effect with RunIcaApp and RunIcaAppDirect, when seamless mode is disabled. The size is in percent of the screen resolution. Setting the percent to 100 invokes full screen mode. For instance a percent of 80 will show all subsequent applications filling 80% of the screen in both directions on any given computer at any given resolution. Depth can be 16 or 24 for number of color bit. To restore the default size, set size to 80 percent.
Example: SetIcaAppSize 90,90

ShowFullIcaDesktop <Server>
ShowFullIcaDesktop <Server>, <UserName>, <EncryptedPassword>

Shows a full-screen Citrix ICA desktop on a specific server. The session is full-screen regardless of seamless and size settings. When the user stops the session, the script continues. Use <Domain>\<UserName> to specify domain for the connecting user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. To specify a another port than the default 1494, use <Server>:<Port> instead of just <Server>. Citrix receiver must be installed.

ShowIcaDesktop <Server>
ShowIcaDesktop <Server>, <UserName>, <EncryptedPassword>

Shows a Citrix ICA desktop on a specific server. When the user stops the session, the script continues. Use <Domain>\<UserName> to specify domain for the connecting user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. To specify a another port than the default 1494, use <Server>:<Port> instead of just <Server>. Citrix receiver must be installed.
Clipboard

SetClipboard <Value>

Puts text on the clipboard.
Cloud Inventory - Cloud Account

UploadBasicInventory

UploadBasicInventory is a scaled-down version of UploadInventory. If you do not want to use the list of installed software, you can save bandwidth by uploading only hardware information. It is recommended to UploadInventory, unless there is an explicit reason not to. It is safe to always call UploadBasicInventory in for example a logon and/or SmartDock script, as the upload only happens, when inventory information is changed. If no information is changed over a longer period of time, an upload is made every 2 weeks to keep the last inventory date updated. This is done to allow you to use the last inventory date as an indicator to identify computers that no longer exist. In typical scenarios, a computer will upload about 2 kilobytes per month only with UploadBasicInventory, whereas UploadInventory will typically upload about 10 kilobytes. To see the actual information sent, use the HardwareInventoryXML function, which returns the same information in a different format. Any parameters added as custom information will be shown on the client detail page on the reporting site and are fully filterable. Custom information could for example be additional information from your Active Directory that you would like to attach to your inventory information. Please refer to http://www.fasttrackscript.com/SkyBox for more information on inventory.
Example: If OnceAWeek Then UploadHardwareInventory

UploadInventory
UploadInventory <ListOfCustomValues>

Uploads encrypted and compressed inventory information to your personal inventory web on http://www.fasttrackscript.com/Inventory. It is safe to always call UploadInventory in for example a logon and/or SmartDock script, as the upload only happens, when inventory information is changed. ListOfCustomValues simply means a dynamic number of parameters/values; there can be any number of parameters from none to an infinite number of parameters. If hardware information is changed, the upload is about 500 bytes and if the list of installed software is changed, the upload is typically about 2 kilobytes. If no information is changed over a longer period of time, a hardware upload is made every 2 weeks to keep the last inventory date updated. This is done to allow you to use the last inventory date as an indicator to identify computers that no longer exist. In typical scenarios, a computer will upload about 10 kilobytes per month only. To see the actual information sent, use the InventoryXML function, which returns the same information in a different format. Any parameters added as custom information will be shown on the client detail page on the reporting site and are fully filterable. Custom information could for example be additional information from your Active Directory that you would like to attach to your inventory information. Please refer to http://www.fasttrackscript.com/SkyBox for more information on inventory. The difference between UploadInventory and SaveInventory is that UploadInventory is for the cloud-based inventory and SaveInventory is for a local SkyBox server.
Example: If OnceAWeek Then UploadInventory
Cloud Inventory - Local Server

LogInventoryError <DataBrokerUrl>, <Category>, <Event>
LogInventoryError <DataBrokerUrl>, <Category>, <Event>, <UserName>, <EncryptedPassword>

Uploads an event of type 'Error' to a local SkyBox Server. See more documentation on http://www.fasttrackscript.com/Inventory. The data broker url can be found at the top right corner in the local SkyBox server web, once logged in. If an event cannot be stored, an error occurs. The username and password is for use when the inventory web site has Windows authentication (other authentications such as forms authentication must be disabled). Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: LogInventoryError 192.168.1.3,Backup status,Backup successful

LogInventoryEvent <DataBrokerUrl>, <Category>, <Event>
LogInventoryEvent <DataBrokerUrl>, <Category>, <Event>, <UserName>, <EncryptedPassword>

Uploads an event of type 'Information' to a local SkyBox Server. See more documentation on http://www.fasttrackscript.com/Inventory. The data broker url can be found at the top right corner in the local SkyBox server web, once logged in. If an event cannot be stored, an error occurs. The username and password is for use when the inventory web site has Windows authentication (other authentications such as forms authentication must be disabled). Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: LogInventoryEvent 192.168.1.3,Backup status,Backup successful

LogInventoryWarning <DataBrokerUrl>, <Category>, <Event>
LogInventoryWarning <DataBrokerUrl>, <Category>, <Event>, <UserName>, <EncryptedPassword>

Uploads an event of type 'Warning' to a local SkyBox Server. See more documentation on http://www.fasttrackscript.com/Inventory. The data broker url can be found at the top right corner in the local SkyBox server web, once logged in. If an event cannot be stored, an error occurs. The username and password is for use when the inventory web site has Windows authentication (other authentications such as forms authentication must be disabled). Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: LogInventoryWarning 192.168.1.3,Backup status,Backup successful

SaveInventory <DataBrokerUrl>
SaveInventory <DataBrokerUrl>, <ListOfCustomValues>

Uploads or refreshes inventory data for the executing computer to a local SkyBox Server. The data broker url can be found at the top right corner in the local SkyBox server web, once logged in. ListOfCustomValues simply means a dynamic number of parameters/values; there can be any number of parameters from none to an infinite number of parameters. If hardware information is changed, the upload is about 500 bytes and if the list of installed software is changed, the upload is typically about 2 kilobytes. The SaveInventory command is for open web sites and SaveInventorySecure is for use when the inventory web site has Windows authentication (other authentications such as forms authentication must be disabled). Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If no information is changed over a longer period of time, a hardware upload is made every 2 weeks to keep the last inventory date updated. This is done to allow you to use the last inventory date as an indicator to identify computers that no longer exist. In typical scenarios, a computer will upload about 10 kilobytes per month only. To see the actual information sent, use the InventoryXML function, which returns the same information in a different format. Any parameters added as custom information will be shown on the client detail page on the reporting site and are fully filterable. Custom information could for example be additional information from your Active Directory that you would like to attach to your inventory information. Please refer to http://www.fasttrackscript.com/SkyBox for more information on inventory. The difference between UploadInventory and SaveInventory is that UploadInventory is for the cloud-based inventory and SaveInventory is for a local SkyBox server.
Example: SaveInventory 192.168.1.3

SaveInventorySecure <DataBrokerUrl>, <UserName>, <EncryptedPassword>
SaveInventorySecure <DataBrokerUrl>, <UserName>, <EncryptedPassword>, <ListOfCustomValues>

Uploads or refreshes inventory data for the executing computer to a local SkyBox Server. The data broker url can be found at the top right corner in the local SkyBox server web, once logged in. ListOfCustomValues simply means a dynamic number of parameters/values; there can be any number of parameters from none to an infinite number of parameters. If hardware information is changed, the upload is about 500 bytes and if the list of installed software is changed, the upload is typically about 2 kilobytes. The SaveInventory command is for open web sites and SaveInventorySecure is for use when the inventory web site has Windows authentication (other authentications such as forms authentication must be disabled). Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If no information is changed over a longer period of time, a hardware upload is made every 2 weeks to keep the last inventory date updated. This is done to allow you to use the last inventory date as an indicator to identify computers that no longer exist. In typical scenarios, a computer will upload about 10 kilobytes per month only. To see the actual information sent, use the InventoryXML function, which returns the same information in a different format. Any parameters added as custom information will be shown on the client detail page on the reporting site and are fully filterable. Custom information could for example be additional information from your Active Directory that you would like to attach to your inventory information. Please refer to http://www.fasttrackscript.com/SkyBox for more information on inventory. The difference between UploadInventory and SaveInventory is that UploadInventory is for the cloud-based inventory and SaveInventory is for a local SkyBox server.
Example: SaveInventory 192.168.1.3,acmeuser,[EncryptPassword acmepass]
Cloud Jobs

InstallUserJobsDownloader

Installs the download handler that is executed, whenever a user logs on. This handler basically just executes the RunUserJobs command, when a user logs on. This command requires local admin rights and UAC elevation (see www.fasttrackscript.com/uac for more information on UAC). Use url for a local SkyBox server. The data broker url for a local SkyBox server can be found at the top right corner in the local SkyBox server web, once logged in. The username and password is for use when the inventory web site has Windows authentication (other authentications such as forms authentication must be disabled). Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.

RunSystemJobs
RunSystemJobs <DataBrokerUrl>
RunSystemJobs <DataBrokerUrl>, <UserName>, <EncryptedPassword>

Downloads and executes system jobs from a SkyBox server. If the job is deleted from the server, the job will also be removed on clients. This command requires local admin rights and UAC elevation (see www.fasttrackscript.com/uac for more information on UAC). Use url for a local SkyBox server. The data broker url for a local SkyBox server can be found at the top right corner in the local SkyBox server web, once logged in. The username and password is for use when the inventory web site has Windows authentication (other authentications such as forms authentication must be disabled). Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.

RunUserJobs
RunUserJobs <DataBrokerUrl>
RunUserJobs <DataBrokerUrl>, <UserName>, <EncryptedPassword>

Downloads and executes user jobs from a SkyBox server. Jobs are cached locally and check for new jobs will happen at first logon of the day only. Use url for a local SkyBox server. The data broker url for a local SkyBox server can be found at the top right corner in the local SkyBox server web, once logged in. The username and password is for use when the inventory web site has Windows authentication (other authentications such as forms authentication must be disabled). Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.

UninstallUserJobsDownloader

Removes the download handler that is executed, whenever a user logs on. This command requires local admin rights and UAC elevation (see www.fasttrackscript.com/uac for more information on UAC). Use url for a local SkyBox server. The data broker url for a local SkyBox server can be found at the top right corner in the local SkyBox server web, once logged in. The username and password is for use when the inventory web site has Windows authentication (other authentications such as forms authentication must be disabled). Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
COM Automation

Exec <SourceObject>.<Method>
Exec <SourceObject>.<Method>(<ListOfParameters>)

Executes a method on a COM object. The source object can be an object created with the CreateObject function (entering for instance CreateObject(Scripting.FileSystemObject) as SourceObject) or an object set with SetObject. Indefinite object nesting is supported to compact scripts, for example executing a third level object: Exec <SourceObject>.<Method>(<Parameters>).<Method>(<Parameters>). ListOfParameters simply means a dynamic number of parameters; there can be any number of parameters from none to an infinite number of parameters. Methods or properties that have dots in the name must be quoted. Refer to http://fasttrackscript.com/COM for more details on using COM with FastTrack Automation Studio.
Example: Exec MyFile.WriteLine(Test line)

SetObject <ObjectName>=<SourceObject>
SetObject <ObjectName>=<SourceObject>.<SubObject>
SetObject <ObjectName>=<SourceObject>.<Method>(<ListOfParameters>)

Sets an internal object to another object. The name before the equal sign is the name by which the object can be used for other COM functions and commands. The source object can be an object created with the CreateObject function (entering for instance CreateObject(Scripting.FileSystemObject) as SourceObject) or a method result or property of another object. Indefinite object nesting is supported to compact scripts, for example setting an object to a third level object: SetObject <ObjectName>=<SourceObject>.<Method>(<Parameters>).<Method>(<Parameters>). ListOfParameters simply means a dynamic number of parameters; there can be any number of parameters from none to an infinite number of parameters. Methods or properties that have dots in the name must be quoted. Refer to http://www.fasttrackscript.com/COM for more details on using COM with FastTrack Automation Studio.
Example: SetObject Excel = CreateObject(Excel.Application)

SetValue <SourceObject>.<PropertyName>=<Value>

Sets the value of a property of an object. The source object can be an object created with the CreateObject function (entering for instance CreateObject(Scripting.FileSystemObject) as SourceObject) or an object set with SetObject. Indefinite object nesting is supported to compact scripts, for example setting a third level object property: SetValue <SourceObject>.<Method>(<Parameters>).<Method>(<Parameters>).<PropertyName>=<Value>. Methods or properties that have dots in the name must be quoted. Refer to http://fasttrackscript.com/COM for more details on using COM with FastTrack Automation Studio.
Example: SetValue Excel.Visible = True
Computer Name

SetComputerName <NewName>
SetComputerName <NewName>, <UserName>, <EncryptedPassword>
SetComputerName <NewName>, <UserName>, <EncryptedPassword>, <RemoteComputerName>

Renames the executing computer. If the computer is not in a domain, credentials are ignored and the executing user must be local admin. If the computer is in a domain, the computer account in the Active Directory is also renamed. Use <DomainName>\<UserName> for domain user credentials. A reboot is required after the rename; use RebootForced to perform a forced reboot. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: SetComputerName AcmePC0010
Custom Collections

AddToCollection <CollectionName>, <ListOfValues>

Adds one or more elements to a custom collection. If the collection is not created with the CreateCollection, the custom collection will be created. ListOfValues simply means a dynamic number of parameters/values; there can be any number of parameters from none to an infinite number of parameters.
Example: AddToCollection MyUsers,[Var User]

AddToCollectionStart <CollectionName>, <ListOfValues>

Inserts one or more elements into a custom collection at the start. If the collection is not created with the CreateCollection, the custom collection will be created. ListOfValues simply means a dynamic number of parameters/values; there can be any number of parameters from none to an infinite number of parameters.
Example: AddToCollection MyUsers,[Var User]

ClearCollection <CollectionName>

Clears the content of a custom collection. If the collection does not exist, an error will occur. If the collection may not exist, use the CreateCollection command instead.
Example: ClearCollection MyUsers

CreateCollection <CollectionName>
CreateCollection <CollectionName>=<ListOfValues>

Creates a custom collection and optionally adds a list of values. If the collection already exists, it will be reset. It is best practice to define a collection first with the CreateCommand for readability, but the collection will automatically be created on use, if it does not exist. ListOfValues simply means a dynamic number of parameters/values; there can be any number of parameters from none to an infinite number of parameters.
Example: CreateCollection MyUsers
Date And Time

SetTime <Time>

Sets the local clock time. If user is not administrator and UAC elevated, the command has no effect, as the user does not have permission to set the clock.

SetTimeFromServer
SetTimeFromServer <ComputerName>

Synchronizes client time to the remote time. If no computer name is specified, the logon server is used. If user is not administrator and UAC elevated, the command has no effect, as the user does not have permission to set the clock.
Desktop

DisableScreenSaverLogonScreen

Disables the logon screen after screensaver.

EmptyRecycleBin
EmptyRecycleBin <DriveLetter>:

Empties recycle bin of all drives. Specifying for instance C: as parameter, vil empty recycle bin on the C-drive only.

EnableScreenSaverLogonScreen

Enables the logon screen after screensaver.

RemoveScreenSaver

Removes the screensaver for the current user.

RestoreDesktop

Restores windows from ShowDesktop.

SetScreenSaver <ImageFile>

Sets the screensaver for the current user.
Example: SetScreenSaver [SystemDir]\Bubbles.scr

SetScreenSaverTimeout <Seconds>

Sets the timeout in minutes of the screensaver.

SetWallPaper <ImageFile>

Sets the wallpaper for the current user. The wallpaper must be png, jpeg or bmp format. Png is recommended.
Example: SetWallPaper [WinDir]\Acme.jpg

ShowDesktop

Minimizes all windows and shows the desktop.
Directories - Attributes

ClearDirArchived <Directory>

Removes the archive bit on a directory.

ClearDirArchivedSub <Directory>

Removes the archive bit on a directory and all subdirectories and subfiles recursively.

ClearDirAttributes <Directory>

Clears the system, hidden, archive and read-only bits on a directory.

ClearDirAttributesSub <Directory>

Clears the system, hidden, archive and read-only bits on a directory and all subdirectories and subfiles recursively.

ClearDirHidden <Directory>

Clears the hidden attribute on a directory.

ClearDirHiddenSub <Directory>

Clears the hidden attribute on a directory and all subdirectories and subfiles recursively.

ClearDirReadOnly <Directory>

Removes the read-only attribute from a directory.

ClearDirReadOnlySub <Directory>

Removes the read-only attribute from a directory and all subdirectories and subfiles recursively.

ClearDirSystemAttrib <Directory>

Clears the system bit on a directory.

ClearDirSystemAttribSub <Directory>

Clears the system bit on a directory and all subdirectories and subfiles recursively.

SetDirArchived <Directory>

Sets the archive bit on a directory.

SetDirArchivedSub <Directory>

Sets the archive bit on a directory and all subdirectories and subfiles recursively.

SetDirHidden <Directory>

Sets the hidden attribute on a directory.

SetDirHiddenSub <Directory>

Sets the hidden attribute on a directory and all subdirectories and subfiles recursively.

SetDirReadOnly <Directory>

Marks a directory as read-only.

SetDirReadOnlySub <Directory>

Marks a directory and all subdirectories and subfiles recursively as read-only.

SetDirSystemAttrib <Directory>

Sets the system bit on a directory.

SetDirSystemAttribSub <Directory>

Sets the system bit on a directory and all subdirectories and subfiles recursively.
Directories - Permissions

AddDirPermissions <Path>, <ACL>

Removes inherited permissions and ensures the defined accounts have the defined access to the directory including all subdirectories and subfiles. If the accounts already have permissions, they will be changed to the new access right. Any accounts not specified, will keep their existing access rights. ACL (Access Control List) is as a comma separated ACE (Access Control Entry) list in the format [<Domain>\]<AccountName>:<AccessRight>. Account name can be a user or a group. AccessRight is typically 'Read', 'Read And Execute', 'Modify', 'Write' or 'Full Control' (or abbreviated to R, RE, M, W and FC respectively); for a full list of access rights, click the "Show" icon on the "Scripting" tab in the script editor and select "Extended Attributes". To add multiple access rights to the same user, add the user more than once in the list. Use SetDirPermissions to specify a new ACL instead of replacing permissions. Requires admin privileges.
Example: AddDirPermissions [ProgramFilesDir]\Acme,Acme\CRMUsers:Read

AddDirPermissionsDenied <Path>, <ACL>

Removes inherited permissions and denies access to the directory including all subdirectories and subfiles. ACL (Access Control List) is as a comma separated ACE (Access Control Entry) list in the format [<Domain>\]<AccountName>:<AccessRight>. Account name can be a user or a group. AccessRight is typically 'Read', 'Read And Execute', 'Modify', 'Write' or 'Full Control' (or abbreviated to R, RE, M, W and FC respectively); for a full list of access rights, click the "Show" icon on the "Scripting" tab in the script editor and select "Extended Attributes". To add multiple access rights to the same user, add the user more than once in the list. Use SetDirPermissions to specify a full ACL list. Requires admin privileges.
Example: AddDirPermissionsDenied [ProgramFilesDir]\Acme,Acme\CRMUsers:Read

AddDirPermissionsInherited <Path>

Sets the directory and all subdirectories and subfiles to inherit permissions from its parent directory, but preserves added permissions. Requires admin privileges.
Example: SetDirPermissionsInherited [ProgramFilesDir]\Acme

RemoveDirPermissions <Path>, <AccountName>

Removes inherited permissions and removes the specified account name from the ACL (Access Control List) on the directory including all subdirectories and subfiles. Account name can be a user or a group in the format [<Domain>\]<AccountName>. When specifying a specific user, be aware that the user can still have access, if the user is a member of a group that still has access. Requires admin privileges.
Example: RemoveDirPermissions [ProgramFilesDir]\Acme,Acme\CRMUsers

SetDirOwner <Path>, <AccountName>

Sets the owner of to the specified account name including all subdirectories and subfiles.
Example: SetDirOwner [ProgramFilesDir]\Acme,[LocalSystemAccount]

SetDirPermissions <Path>, <ACL>

Removes inherited permissions and sets the directory permissions including all subdirectories and subfiles. ACL (Access Control List) is as a comma separated ACE (Access Control Entry) list in the format [<Domain>\]<AccountName>:<AccessRight>. Account name can be a user or a group. AccessRight is typically 'Read', 'Read And Execute', 'Modify', 'Write' or 'Full Control' (or abbreviated to R, RE, M, W and FC respectively); for a full list of access rights, click the "Show" icon on the "Scripting" tab in the script editor and select "Extended Attributes". To add multiple access rights to the same user, add the user more than once in the list. Use AddDirPermissions, AddDirPermissionsDenied and RemoveDirPermissions to modify to an existing ACL instead of creating a new one. Requires admin privileges.
Example: SetDirPermissions [ProgramFilesDir]\Acme,Acme\Domain Users:Read,Acme\Domain Admins:Full Control

SetDirPermissionsInherited <Path>

Sets the directory and all subdirectories and subfiles to inherit permissions from its parent directory. Requires admin privileges.
Example: SetDirPermissionsInherited [ProgramFilesDir]\Acme
Directories

CopyDir <SourcePath>, <DestPath>

Copies source directory tree to the destination directory, copying only files that are new or changed. Any extra files and directories in destination will not be deleted, use SyncDir or SyncDirSecure for this functionality. The difference between CopyDir and CopyDirSecure is that CopyDirSecure will also copy permissions. Files and directories issued with SyncExcludeDir and SyncExcludeFile are excluded. Symbolic link directories are ignored to prevent unintended copying of files. Most settings and statistics under "Backup and Replication Settings" and "Backup and Replication Statistics" in the Engine Browser tree also applies to this command. The operation will by default use 8 threads to execute, use the SetIOThreads command to change number of threads. Use the SetWaitCaption to change the "Please wait ..." header.
Example: CopyDir [UserDocumentsDir],[UserHomeDir]\DocumentsBackup

CopyDirHidden <SourcePath>, <DestPath>

Copies source directory tree to the destination directory without showing any user interface during the process. Any extra files and directories in destination will not be deleted, use SyncDirHidden for this functionality. The difference between CopyDirHidden and CopyDirSecureHidden is that CopyDirSecureHidden will also copy permissions. Files and directories issued with SyncExcludeDir and SyncExcludeFile are excluded. Symbolic link directories are ignored to prevent unintended copying of files. Most settings and statistics under "Backup and Replication Settings" and "Backup and Replication Statistics" in the Engine Browser tree also applies to this command. The operation will by default use 8 threads to execute, use the SetIOThreads command to change number of threads.
Example: CopyDirHidden [UserDocumentsDir],[UserHomeDir]\DocumentsBackup

CopyDirSecure <SourcePath>, <DestPath>

Copies source directory tree to the destination directory, copying only files that are new or changed. Any extra files and directories in destination will not be deleted, use SyncDir or SyncDirSecure for this functionality. The difference between CopyDir and CopyDirSecure is that CopyDirSecure will also copy permissions. If an unchanged file exists in both source and destination, changes in file security only will not be checked for performance reasons, unless explicitly overruled with the EnableSyncRepairMode command. Folder permissions are always checked. Files and directories issued with SyncExcludeDir and SyncExcludeFile are excluded. Symbolic link directories are ignored to prevent unintended copying of files. Most settings and statistics under "Backup and Replication Settings" and "Backup and Replication Statistics" in the Engine Browser tree also applies to this command. The operation will by default use 8 threads to execute, use the SetIOThreads command to change number of threads.
Example: CopyDirSecure [UserDocumentsDir],[UserHomeDir]\DocumentsBackup

CopyDirSecureHidden <SourcePath>, <DestPath>

Copies source directory tree to the destination directory without showing any user interface during the process. Any extra files and directories in destination will not be deleted, use SyncDirHidden for this functionality. The difference between CopyDirHidden and CopyDirSecureHidden is that CopyDirSecureHidden will also copy permissions. If an unchanged file exists in both source and destination, changes in file security only will not be checked for performance reasons, unless explicitly overruled with the EnableSyncRepairMode command. Folder permissions are always checked. Files and directories issued with SyncExcludeDir and SyncExcludeFile are excluded. Symbolic link directories are ignored to prevent unintended copying of files. Most settings and statistics under "Backup and Replication Settings" and "Backup and Replication Statistics" in the Engine Browser tree also applies to this command. The operation will by default use 8 threads to execute, use the SetIOThreads command to change number of threads.
Example: CopyDirSecureHidden [UserDocumentsDir],[UserHomeDir]\DocumentsBackup

DeleteDir <Path>

Deletes a directory including all directories and files under it, if it exists. Will by default use 8 threads to execute, use the SetIOThreads command to change number of threads.
Example: DeleteDir [ProgramFilesDir]\Acme\AcmeCRMApp

DeleteDirPreserved <Path>

Deletes all subdirectories and files in a directory preserving the folder itself. Useful for emptying folder, e.g. temporary internet files or the windows temp directory.
Example: If UserOnceAWeek Then DeleteDirPreserved [TempDir]

MakeDir <Path>

Creates a directory recursively.
Example: MakeDir [ProgramFilesDir]\Acme\AcmeCRMApp

MoveDir <Path>, <NewPath>

Moves the directory including subdirectories and subfiles.

PurgeTempFiles

Purges all files in the TEMP folder for the current user.
Example: If UserOnceAWeek Then PurgeTempFiles

RenameDir <Path>, <NewPath>

Renames the directory including subdirectories and subfiles.

SetCurrentDir <Path>

Changes the current directory.

Subst <DriveLetter>:, <Path>
Subst <DriveLetter>:, <Path>, <DisplayName>

Creates a virtual drive. If the drive is already created, existing mapping is removed first. The optional display name is the name of the drive name displayed in the Explorer.
Example: Subst Y:,[ProgramFilesDir]\Acme

Unsubst <DriveLetter>:

Removes a virtual drive. If the virtual drives does not exist, the command does nothing.
Example: Unsubst Y:
Drivers

InstallDriver <InfFile>
InstallDriver <InfFile>, <InfFile32Bit>

Preinstalls a signed driver to the Windows driver store and updates existing hardware with the new driver, if hardware is present and the driver is a better match. If not, the driver remain in the driver store. Wildcards can be used such as *.inf for multiple installs. If your environment is mixed between 32 and 64 bit and the drivers are different, use the last parameter to point to 32-bit driver to be used for 32-bit machines only.

PreinstallDriver <InfFile>
PreinstallDriver <InfFile>, <InfFile32Bit>

Preinstalls a signed driver to the Windows driver store, even if the hardware is not currently present but does not update drivers on existing hardware. Wildcards can be used such as *.inf for multiple installs. If your environment is mixed between 32 and 64 bit and the drivers are different, use the last parameter to point to 32-bit driver to be used for 32-bit machines only.

UninstallDriver <InfFile>
UninstallDriver <InfFile>, <InfFile32Bit>

Uninstalls a driver from the Windows driver store. Wildcards can be used such as *.inf for multiple installs. If your environment is mixed between 32 and 64 bit and the drivers are different, use the last parameter to point to 32-bit driver to be used for 32-bit machines only.
Environment Variables

SetEnvVar <Name>, <Value>

Sets a common environment variable.
Example: SetEnvVar LocalServer,[Var CurrentServer]

SetProcessEnvVar <Name>, <Value>

Sets an environment variable for the current process only.
Example: SetProcessEnvVar LocalServer,[Var CurrentServer]

SetUserEnvVar <Name>, <Value>

Sets a user specific environment variable.
Example: SetUserEnvVar LocalServer,[Var CurrentServer]
Event Log

ClearEventLog <LogName>
ClearEventLog <LogName>, <RemoteComputerName>

Clears an event log. LogName must be the name of the log to clear, for instance System or Application.
Example: ClearEventLog Application

CreateEventSource <Source>
CreateEventSource <Source>, <LogName>
CreateEventSource <Source>, <LogName>, <RemoteComputerName>

Creates an event log source, which requires admin rights. If log name is not speciefied, "Application" is assumed. The purpose of this command is to be able to create a source once as administrator, allowing loggig of events to this source without admin rights.

LogErrorEvent <Source>, <EventText>
LogErrorEvent <Source>, <EventText>, <LogName>
LogErrorEvent <Source>, <EventText>, <LogName>, <RemoteComputerName>

Logs an error event to the event log, which requires local admin rights (unless source is already created once). Source is the Source row in the event viewer, which is used to categorize events in a log. If log name is not specified, Application is used by default. You could use you company name for a custom log area, if you would like to isolate your own custom events. Be aware that Windows does not allow the same Source name to be used in multiple logs.
Example: If [DiskStatus]<>OK Then LogErrorEvent Disk failure,Harddrive has failure: [DiskStatus]

LogEvent <Source>, <EventText>
LogEvent <Source>, <EventText>, <LogName>
LogEvent <Source>, <EventText>, <LogName>, <RemoteComputerName>

Logs an information event to the event log, which requires local admin rights (unless source is already created once). Source is the Source row in the event viewer, which is used to categorize events in a log. If log name is not specified, Application is used by default. You could use you company name for a custom log area, if you would like to isolate your own custom events. Be aware that Windows does not allow the same Source name to be used in multiple logs.
Example: LogEvent Installation,Installation of [CurrentInstallName] v[CurrentInstallVersion] complete at [Time] on [Date]

LogWarningEvent <Source>, <EventText>
LogWarningEvent <Source>, <EventText>, <LogName>
LogWarningEvent <Source>, <EventText>, <LogName>, <RemoteComputerName>

Logs a warning event to the event log, which requires local admin rights (unless source is already created once). Source is the Source row in the event viewer, which is used to categorize events in a log. If log name is not specified, Application is used by default. You could use you company name for a custom log area, if you would like to isolate your own custom events. Be aware that Windows does not allow the same Source name to be used in multiple logs.
Example: If [FreeDiskSpace]<10 Then LogWarningEvent LowDisk,Harddrive has only [FreeDiskSpace]GB free.
Execution - Console

AddConsoleBreak

Inserts a blank line into the console window. The console window will be displayed, if it is not already visible. The following settings commands have effect on the window: SetScreenPos, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetWindowSize, SetWindowScale, SetNextWindowSize, SetNextWindowScale, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands.

AddConsoleLine

Inserts a custom text line into the console window. The console window will be displayed, if it is not already visible. The following settings commands have effect on the window: SetScreenPos, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetWindowSize, SetWindowScale, SetNextWindowSize, SetNextWindowScale, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands.

ClearConsole

Clears the console output.

HideConsole

Hides the console output window. The window is automatically displayed again, when content is added.

LaunchCMD <CmdLine>
LaunchCMD <CmdLine>, <UserName>, <EncryptedPassword>

Launches a console command without waiting for it to finish. Specify user as <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or using the EncryptPassword function. The following settings commands have effect on the console window: SetScreenPos, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetWindowSize, SetWindowScale, SetNextWindowSize, SetNextWindowScale, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. If the user specified is under User Account Control (UAC), these restrictions apply.
Example: LaunchCMD MyWorkerProgram.Exe

LaunchCMDElevated <CmdLine>

Launches a console command without waiting for it to finish. If the user is under User Account Control (UAC), the script will temporarily halt to show the UAC pop-up screen to ask for permission to continue. Username cannot be specified because a target user would not have a session, where permission can be asked to elevate. If UAC is not enabled, you can use the Launch command with credentials to run the file as another user.
Example: LaunchCMDElevated MyWorkerProgram.Exe

LaunchCMDHidden <CmdLine>

Launches a console command hidden, if possible, without waiting for it to finish.
Example: LaunchCMDHidden MyWorkerProgram.Exe

RunCMD <CmdLine>
RunCMD <CmdLine>, <UserName>, <EncryptedPassword>

Runs a console command line and waits for it to finish. If credentials are not specified, the internal FastTrack Console will be used for output. If credentials are specified, this console will not be used, because the output cannot be retrieved cross-process. The following settings commands have effect on the console window: SetScreenPos, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetWindowSize, SetWindowScale, SetNextWindowSize, SetNextWindowScale, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. Exit code can be retrieved with the LastExitCode function and last output can be retreived with the LastCMDOutput function, if credentials are not specified. Specify user as <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If the user specified is under User Account Control (UAC), these restrictions apply.
Example: RunCMD Build.Exe

RunCMDElevated <CmdLine>

Runs a console command and waits for it to finish. Exit code can be retrieved with the LastExitCode function. If the user is under User Account Control (UAC), the script will temporarily halt to show the UAC pop-up screen to ask for permission to continue. Username cannot be specified because a target user would not have a session, where permission can be asked to elevate. If UAC is not enabled, you can use the Run command with credentials to run the file as another user.
Example: RunCMDElevated Build.Exe

RunCMDHidden <CmdLine>

Runs a console command hidden, if possible, and waits for it to finish. Exit code can be retrieved with the LastExitCode function and last output can be retreived with the LastCMDOutput function.
Example: RunCMDHidden MyMaintenanceTask.Exe

SetConsoleCaption <IconName>

Overrules the default header text in the console.

SetConsoleIcon <IconName>

Overrules the default header icon in the console. IconName refers to an internal icon name of icons listed in the "Icon Explorer" in the script editor. Further icons can added with the AddCustomIcon command. You also point directly to an image file preferably by in png format.

ShowConsole

Shows the console output window. The window is automatically displayed, when content is added. The following settings commands have effect on the window: SetScreenPos, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetWindowSize, SetWindowScale, SetNextWindowSize, SetNextWindowScale, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands.

WaitForConsoleClose

Displays a close button at the bottom left on the console window and waits for the users to close it.
Example: Run Setup.Exe,/Config Acme.xml
Execution

BlockExecution <ProcessName>
BlockExecution <ProcessName>, <Message>

Blocks execution of a process. BlockExecution will only disable while the current script runs, whereas DisableExecution sets a permanent blocking. The process is a filename without path. Useful for installations to prevent execution of a program during an installation. This command requires local admin rights and UAC elevation (see www.fasttrackscript.com/uac for more information on UAC). Default message is "An installation of the program you are trying to start is in progress. Please try again later". Use the UnblockExecution command to unblock the application. If you forget to do it or the script fails, the unblocking will automatically happen, when the current (or any other) instance FSH.Exe terminates.
Example: BlockExecution WinWord.exe

ClearExecutionDisabling

Clears all blocking set using the DisableExecution command.
Example: EnableExecution WinWord.exe

DisableExecution <ProcessName>
DisableExecution <ProcessName>, <Message>

Disables execution of a process. BlockExecution will only disable while the current script runs, whereas DisableExecution sets a permanent blocking. The process is a filename without path. This command requires local admin rights and UAC elevation (see www.fasttrackscript.com/uac for more information on UAC). Default message is "The application you are trying to start is disabled". Use the EnableExecution command to re-enable the application.
Example: DisableExecution WinWord.exe

EnableExecution <ProcessName>

Enables execution of a process, reversing the DisableExecution command.
Example: EnableExecution WinWord.exe

Launch <File>
Launch <File>, <Arguments>
Launch <File>, <UserName>, <EncryptedPassword>
Launch <File>, <Arguments>, <UserName>, <EncryptedPassword>

Launches a program without waiting for it to finish. Launch uses shell execution, meaning that implicit execution is also possible, like launching a web page or executing files that are associated without specifying the executable file. Specify user as <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or using the EncryptPassword function. If the user specified is under User Account Control (UAC), these restrictions apply.
Example: If UserOnce ShowWelcome Then Launch http://intra.acme.com/Welcome

LaunchElevated <File>
LaunchElevated <File>, <Arguments>

Launches a program without waiting for it to finish. Launch uses shell execution, meaning that implicit execution is also possible, like launching a web page or executing files that are associated without specifying the executable file. If the user is under User Account Control (UAC), the script will temporarily halt to show the UAC pop-up screen to ask for permission to continue. Username cannot be specified because a target user would not have a session, where permission can be asked to elevate. If UAC is not enabled, you can use the Launch command with credentials to run the file as another user.

LaunchHidden <File>
LaunchHidden <File>, <Arguments>

Launches a program hidden, if possible, without waiting for it to finish. LaunchHidden uses shell execution, meaning that implicit execution is also possible, like launching a web page or executing files that are associated without specifying the executable file.
Example: LaunchHidden MyWorkerProgram.Exe

LaunchMax <File>
LaunchMax <File>, <Arguments>

Launches a program maximized without waiting for it to finish. LaunchMax uses shell execution, meaning that implicit execution is also possible, like launching a web page or executing files that are associated without specifying the executable file.
Example: If UserOnce ShowWelcome Then LaunchMax http://intra.acme.com/Welcome

LaunchMin <File>
LaunchMin <File>, <Arguments>

Launches a program minimized without waiting for it to finish. LaunchMin uses shell execution, meaning that implicit execution is also possible, like launching a web page or executing files that are associated without specifying the executable file.

LaunchScript <ScriptFile>
LaunchScript <ScriptFile>, <UserName>, <EncryptedPassword>

Launches another script without waiting for it to finish out of process. Specify user as <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If the user specified is under User Account Control (UAC), these restrictions apply.
Example: LaunchScript Cleanup.fsh

LaunchScriptElevated <ScriptFile>

Launches another script out of process without waiting for it to finish. If the user is under User Account Control (UAC), the script will temporarily halt to show the UAC pop-up screen to ask for permission to continue. Username cannot be specified because a target user would not have a session, where permission can be asked to elevate. If UAC is not enabled, you can use the LaunchScript command with credentials to run the script as another user.
Example: LaunchScriptElevated Cleanup.fsh

Run <File>
Run <File>, <Arguments>
Run <File>, <UserName>, <EncryptedPassword>
Run <File>, <Arguments>, <UserName>, <EncryptedPassword>

Runs a program and waits for it to finish. Exit code can be retrieved with the LastExitCode function. Specify user as <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If the user specified is under User Account Control (UAC), these restrictions apply.
Example: Run Setup.Exe,/Config Acme.xml

RunElevated <File>
RunElevated <File>, <Arguments>

Runs a program and waits for it to finish. Exit code can be retrieved with the LastExitCode function. If the user is under User Account Control (UAC), the script will temporarily halt to show the UAC pop-up screen to ask for permission to continue. Username cannot be specified because a target user would not have a session, where permission can be asked to elevate. If UAC is not enabled, you can use the Run command with credentials to run the file as another user.
Example: RunElevated Setup.Exe,/Config Acme.xml

RunHidden <File>
RunHidden <File>, <Arguments>

Runs a program hidden, if possible, and waits for it to finish. Exit code can be retrieved with the LastExitCode function.
Example: RunHidden MyMaintenanceTask.Exe

RunMax <File>
RunMax <File>, <Arguments>

Runs a program maximized and waits for it to finish. Exit code can be retrieved with the LastExitCode function.
Example: If UserOnce ShowWelcome Then RunMax [ProgramFilesDirx86]\Internet Explorer\IExplore.exe,http://intra.acme.com/Welcome

RunMin <File>
RunMin <File>, <Arguments>

Runs a program minimized and waits for it to finish. Exit code can be retrieved with the LastExitCode function.

RunScript <ScriptFile>
RunScript <ScriptFile>, <UserName>, <EncryptedPassword>

Runs another script out of process and waits for it to finish, not sharing script variables. To share variables between scripts, use the Include command instead. Include is much faster than RunScript, because it will not start another engine instance, but Include cannot be used when specifying username and password. Specify user as <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If the user specified is under User Account Control (UAC), these restrictions apply.
Example: RunScript \\AcmeServer\Installers$\Office2010\Install.fsh,Acme\Installer,<EncryptedPassword>

RunScriptElevated <ScriptFile>

Runs another script out of process and waits for it to finish, not sharing script variables. To share variables between scripts, use the Include command instead. Include is much faster than RunScript, because it will not start another engine instance. If the user is under User Account Control (UAC), the script will temporarily halt to show the UAC pop-up screen to ask for permission to continue. Username cannot be specified because a target user would not have a session, where permission can be asked to elevate. If UAC is not enabled, you can use the RunScript command with credentials to run the script as another user.
Example: RunScriptElevated \\AcmeServer\Installers$\Office2010\Install.fsh,Acme\Installer,<EncryptedPassword>

SetRunTimeout <Seconds>
SetRunTimeout <Seconds>, <ReturnCode>

Sets a timeout in seconds for waiting for Run command (and other commands starting with "Run") to finish. If the timeout occurs, the selected return code is returned. If the return code is not used, an error occurs and the return code will be -1. A second value of 0 returns to default state without a timeout.
Example: SetRunTimeout 3600

UnblockExecution <ProcessName>

Unblocks execution of a process, reversing the BlockExecution command.
Example: UnblockExecution WinWord.exe
FastTrack Engine

EnableOnlineBackup

Placeholder to enable configuration online backup.

InstallSmartConnect

Installs the SmartConnect utility as a Windows Explorer startup item for the current user. SmartConnect does not start, if the session is not a remote session. See www.fasttrackscript.com/smartconnect for details.

InstallSmartDock

Installs the SmartDock utility as a Windows Explorer startup item for the current user. Only installs on portable computers, has no effect on desktop computers. See www.fasttrackscript.com/smartdock for details.

SelfAssociate

Performs a system association of the .fsh extension to the executing instance of fsh.exe. If a user has a user association, this overrules the system association. Same as passing /Associate to fsh.exe. Requires local admin rights.

SelfInstall

Creates machine-wide runtime support for executing fsh files. Will cache the executing engine fsh.exe and create a system association to .fsh files. Same as passing /Install to fsh.exe. Requires local admin rights.

SelfUnassociate

Performs a system un-association of the .fsh extension. Same as passing /Unassociate to fsh.exe. Requires local admin rights.

SelfUninstall

Removes support the system-wide support for executing fsh files. Will remove the system cache and unassociate .fsh files. Same as passing /Uninstall to fsh.exe. Requires local admin rights.

SelfUserAssociate

Performs a user association for the current user of the .fsh extension to the executing instance of fsh.exe. User associations overrule system associations. Same as passing /UserAssociate to fsh.exe.

SelfUserInstall

Creates runtime support for the current user to execute fsh files. Will cache the executing engine fsh.exe and create a user association to .fsh files. Same as passing /UserInstall to fsh.exe.

SelfUserUnassociate

Performs a user un-association of the .fsh extension. Same as passing /UserUnassociate to fsh.exe.

SelfUserUninstall

Removes support for executing fsh files for the current user. Will remove the cache and unassociate .fsh files for the user. Same as passing /UserUninstall to fsh.exe.

ShowInvisibleLogonScriptWarning

Shows a message one time, if a logon script will not be visible and a pop-up is shown, to avoid dead waiting time at logon. See http://www.fasttrackscript.com/UnhidingLogonScripts on how to make it visible.

UninstallSmartConnect

Removes the SmartConnect utility as a Windows Explorer startup item for the current user.

UninstallSmartDock

Removes the SmartDock utility as a Windows Explorer startup item for the current user.
Files - Associations

AssociateExtension <Extension>, <File>
AssociateExtension <Extension>, <File>, <Parameters>

Associates an extension with an exe file. Extension is without dot prefix. A system association requires local admin rights, but association per user can be done with AssociateUserExtension. If parameters are not specified, the opened filename is send to the program as the only parameter. If parameters are specified, use "%1" (with quotes) to include the filename.
Example: AssociateExtension fsh,[FastTrackExe]

AssociateUserExtension <Extension>, <File>
AssociateUserExtension <Extension>, <File>, <Parameters>

Associates an extension with an exe file for the current user only. Extension is without dot prefix and overrules system associations. If parameters are not specified, the opened filename is send to the program as the only parameter. If parameters are specified, use "%1" (with quotes) to include the filename.
Example: AssociateUserExtension fsh,[FastTrackExe]

UnassociateExtension <Extension>

Unassociates an extension. Will ask the user to select an associated program when the extension is used.
Example: UnassociateExtension fsh

UnassociateUserExtension <Extension>

Unassociates an extension for the current user only. Will ask the user to select an associated program when the extension is used, unless a system association is also present for that extension.
Example: UnassociateUserExtension fsh
Files - Attributes

ClearFileArchived <File>

Removes the archive bit on a file.

ClearFileAttributes <File>

Clears the system, hidden, archive and read-only bits on a file.

ClearFileHidden <File>

Clears the hidden attribute on a file.

ClearFileReadOnly <File>

Removes the read-only attribute from a file.

ClearFileSystemAttrib <File>

Clears the system bit on a file.

SetFileArchived <File>

Sets the archive bit on a file.

SetFileHidden <File>

Sets the hidden attribute on a file.

SetFileReadOnly <File>

Marks a file as read-only.

SetFileSystemAttrib <File>

Sets the system bit on a file.
Files - Permissions

AddFilePermissions <File>, <ACL>

Removes inherited permissions and ensures the defined accounts have the defined access to the file. If the accounts already have permissions, they will be changed to the new access right. Any accounts not specified, will keep their existing access rights. ACL (Access Control List) is as a comma separated ACE (Access Control Entry) list in the format [<Domain>\]<AccountName>:<AccessRight>. Account name can be a user or a group. AccessRight is typically 'Read', 'Read And Execute', 'Modify', 'Write' or 'Full Control' (or abbreviated to R, RE, M, W and FC respectively); for a full list of access rights, click the "Show" icon on the "Scripting" tab in the script editor and select "Extended Attributes". To add multiple access rights to the same user, add the user more than once in the list. Use SetFilePermissions to specify a new ACL instead of replacing permissions. Requires admin privileges.
Example: AddFilePermissions [ProgramFilesDir]\Acme\ReadMe.txt,Acme\CRMUsers:Read

AddFilePermissionsDenied <File>, <ACL>

Removes inherited permissions and denies access to the file. ACL (Access Control List) is as a comma separated ACE (Access Control Entry) list in the format [<Domain>\]<AccountName>:<AccessRight>. Account name can be a user or a group. AccessRight is typically 'Read', 'Read And Execute', 'Modify', 'Write' or 'Full Control' (or abbreviated to R, RE, M, W and FC respectively); for a full list of access rights, click the "Show" icon on the "Scripting" tab in the script editor and select "Extended Attributes". To add multiple access rights to the same user, add the user more than once in the list. Use SetFilePermissions to specify a full ACL list. Requires admin privileges.
Example: AddFilePermissionsDenied [ProgramFilesDir]\Acme\ReadMe.txt,Acme\CRMUsers:Read

AddFilePermissionsInherited <File>

Sets the file inherit permissions from its parent file, but preserves added permissions. Requires admin privileges.
Example: SetFilePermissionsInherited [ProgramFilesDir]\Acme\ReadMe.txt

RemoveFilePermissions <File>, <AccountName>

Removes inherited permissions and removes the specified account name from the ACL (Access Control List) on the file. Account name can be a user or a group in the format [<Domain>\]<AccountName>. When specifying a specific user, be aware that the user can still have access, if the user is a member of a group that still has access. Requires admin privileges.
Example: RemoveFilePermissions [ProgramFilesDir]\Acme\ReadMe.txt,Acme\CRMUsers

SetFileOwner <File>, <AccountName>

Sets the owner of to the specified account name.
Example: SetFileOwner [ProgramFilesDir]\Acme\Readme.Txt,[LocalSystemAccount]

SetFilePermissions <File>, <ACL>

Removes inherited permissions and sets the file permissions explicitly. ACL (Access Control List) is as a comma separated ACE (Access Control Entry) list in the format [<Domain>\]<AccountName>:<AccessRight>. Account name can be a user or a group. AccessRight is typically 'Read', 'Read And Execute', 'Modify', 'Write' or 'Full Control' (or abbreviated to R, RE, M, W and FC respectively); for a full list of access rights, click the "Show" icon on the "Scripting" tab in the script editor and select "Extended Attributes". To add multiple access rights to the same user, add the user more than once in the list. Use AddFilePermissions, AddFilePermissionsDenied and RemoveFilePermissions to modify to an existing ACL instead of creating a new one. Requires admin privileges.
Example: SetFilePermissions [ProgramFilesDir]\Acme\ReadMe.txt,Acme\Domain Users:Read,Acme\Domain Admins:Full Control

SetFilePermissionsInherited <File>

Sets the file inherit permissions from its parent file. Requires admin privileges.
Example: SetFilePermissionsInherited [ProgramFilesDir]\Acme\ReadMe.txt
Files

AppendFile <File>, <Content>

Appends the content line to the file creating it if it does not exist. The difference between AppendFile and WriteFile is that AppendFile will also append a carriage return.
Example: AppendFile \\MyServer\MyAdministrativeShare$\NetworkErrors.log,"[Date],[Time],[UserFullName],[LastError]"

ConvertImageFile <ImageFile>, <OutputFile>
ConvertImageFile <ImageFile>, <OutputFile>, <ScaledPixelSize>

Converts an image file from one format to another. Optional ScaledPixelSize will scale the photo to a this maximum width or height in pixels. If ScaledPixelSize is 96 and the original image is 960x640, the image will be 96x64.

CopyFile <SourceFile>, <DestFile>

Copies a file from source to destination. The file is not copied if source and destination files are identical. Destination file can be the target directory only or the full path including target path and file name. To copy an extensionless file, use full path as destination and add a dot to the end (explicit no extension). Directories are created recursively for destfile if missing.
Example: CopyFile [StartMenuDir]\Programs\Microsoft Office\Microsoft Office Word 2007.lnk, [UserDesktopDir]

CopyFiles <SourcePath>, <DestPath>, <ListOfFilePatterns>

Copies files matching the wildcard pattern(s). Files that are identical in source and destination are not copied. Use SyncDir, SyncDirSecure, CopyDir or CopyDirSecure with includes to copy matching files in subdirectories. ListOfFilePatterns simply means a dynamic number of parameters/patterns; there can be any number of parameters from none to an infinite number of parameters.
Example: CopyFiles [UserDocumentsDir],O:\Backup,*.doc,*.xls

DeleteFile <File>

Deletes a single file, if it exists. To delete files with wildcards, use DeleteFiles or DeleteSubFiles.
Example: DeleteFile [WinDir]\WindowsUpdate.log

DeleteFiles <Path>, <ListOfFilePatterns>

Deletes files matching the wildcard pattern. Use DeleteSubFiles to delete matching files in subdirectories. ListOfFilePatterns simply means a dynamic number of parameters/patterns; there can be any number of parameters from none to an infinite number of parameters.
Example: DeleteFiles [WinDir],*.log

DeleteSubFiles <Path>, <ListOfFilePatterns>

Deletes any file that matches the wildcards specified in the directory or in any sub directory. Useful for deleting undesired files from users' profiles. Will by default use 8 threads to execute, use the SetIOThreads command to change number of threads. ListOfFilePatterns simply means a dynamic number of parameters/patterns; there can be any number of parameters from none to an infinite number of parameters.
Example: DeleteSubFiles [UserProfileDir],*.mp3,*.avi,*.mpg

FileContentReplace <File>, <SearchString>, <ReplaceString>

Replaces any occurrence of the search string by the replace string in a file.

FileContentReplaceOrAppend <File>, <SearchString>, <ReplaceString>

Replaces any occurrence of the search string by the replace string in a file. If the file does not contain the search string, the replace string is appended. If the file does not exist, it will be created and appended.

FileContentReplaceRegEx <File>, <RegExSearchString>, <ReplaceString>

Replaces any occurrence of the search string by the replace string in a file. The search string must be in regular expression format and special characters must be escaped with backslash.

MoveFile <File>, <NewFileName>

Moves a file.

RenameFile <File>, <NewFileName>

Renames a file.

ScaleImageFile <ImageFile>, <ScaledPixelSize>

Will resize an image file to a certain maximum size. ScaledPixelSize will scale the photo to a this maximum width or height in pixels. If ScaledPixelSize is 96 and the original image is 960x640, the image will be 96x64.

SetFileEncoding <Format>

Sets the encoding of all file read and writes, such as UTF-8. Default is ISO-8859-1. Refer to https://docs.microsoft.com/en-us/dotnet/api/system.text.encoding or a full list of encoding formats.

WriteFile <File>, <Content>

Writes a new file with the content creating it, if it does not exist.
Folder Redirection - Folder Reassign

RestoreSystemFolderAssign <RedirFolderName>

Restores last folder redirection made with the SetSystemFolderAssign command and copies all files back. Has no effect, if no folder redirection has been done before.
Example: RestoreSystemFolderAssign Documents

RestoreUserFolderAssign <RedirFolderName>

Restores last folder redirection made with the SetUserFolderAssign command and copies all files back. Has no effect, if no folder redirection has been done before.
Example: RestoreUserFolderAssign Documents

SetSystemFolderAssign <RedirFolderName>, <UNCPath>

Sets a folder redirection for the system-wide common folders (also known as "All Users" or "Public"). Use SetSystemFolderRedirection, if the files are not already in the redirection location. If offline folders are enabled, the UNC path will automatically be included in the offline cache and Offline Folders will be automatically be enabled, if possible. Make sure to test properly and avoid setting folder redirection using Group Policies at the same time as using this command. Valid RedirFolderName values are: AppData, Desktop, Documents, Downloads, Templates, Pictures, Music and Videos.
Example: SetSystemFolderAssign Documents,\\AcmeServer\Docs$\[ComputerName]

SetUserFolderAssign <RedirFolderName>, <UNCPath>

Sets a folder redirection for the current user. Use SetUserFolderRedirection, if the files are not already in the redirection location. In a logon script, the command must be set before the Explorer starts, meaning in prelogon.fsh. If offline folders are enabled, the UNC path will automatically be included in the offline cache and Offline Folders will be automatically be enabled, if possible. Make sure to test properly and avoid setting folder redirection using Group Policies at the same time as using this command. Valid RedirFolderName values are: AppData, Desktop, Documents, Pictures, Music, Videos, Favorites, Downloads, History, Cookies, Cache and Templates.
Example: SetUserFolderAssign Documents,[UserHomeDir]\Profile\Documents
Folder Redirection

RestoreSystemFolderRedirection <RedirFolderName>

Restores last folder redirection made with the SetSystemFolderRedirection command and copies all files back. Has no effect, if no folder redirection has been done before.
Example: RestoreSystemFolderRedirection Documents

RestoreUserFolderRedirection <RedirFolderName>

Restores last folder redirection made with the SetUserFolderRedirection command and copies all files back. Has no effect, if no folder redirection has been done before.
Example: RestoreUserFolderRedirection Documents

SetSystemFolderRedirection <RedirFolderName>, <UNCPath>

Sets a folder redirection for the system-wide common folders (also known as "All Users" or "Public"). Use SetSystemFolderReassign, if the files are already in the redirection location, to avoid the file copying. Existing data will be copied from the old folder, when changed. The function [ComputerName] can be used in the path to create a unique directory for each computer. If offline folders are enabled, the UNC path will automatically be included in the offline cache and Offline Folders will be automatically be enabled, if possible. Make sure to test properly and avoid setting folder redirection using Group Policies at the same time as using this command. Valid RedirFolderName values are: AppData, Desktop, Documents, Downloads, Templates, Pictures, Music and Videos.
Example: SetSystemFolderRedirection Documents,\\AcmeServer\Docs$\[ComputerName]

SetUserFolderRedirection <RedirFolderName>, <UNCPath>

Sets a folder redirection for the current user. Use SetUserFolderReassign, if the files are already in the redirection location, to avoid the file copying. Existing data will be copied from the old folder, when changed. It is adviced to use the [UserHomeDir] function to put the data in the user's home folder, for example [UserHomeDir]\Profile\Documents for "Documents" RedirFolderName. Alternatively, use the [UserName] function to include the user's name in the path on a common share (to avoid sharing folders between users), such as \\AcmeServer\UserData$\[UserName]\Documents for "Documents". However, be aware that using a common share, permissions are not changed and directories should therefore be created for users before hand with correct permissions. Using the [UserHomeDir] function in the path is therefore recommended, using the user's home drive to store the files. In a logon script, the command must be set before the Explorer starts, meaning in prelogon.fsh. If offline folders are enabled, the UNC path will automatically be included in the offline cache and Offline Folders will be automatically be enabled, if possible. Make sure to test properly and avoid setting folder redirection using Group Policies at the same time as using this command. Valid RedirFolderName values are: AppData, Desktop, Documents, Pictures, Music, Videos, Favorites, Downloads, History, Cookies, Cache and Templates.
Example: SetUserFolderRedirection Documents,[UserHomeDir]\Profile\Documents
Fonts

InstallFont <FontFile>

Installs a Windows font. The font is copied to the Windows fonts folder using the same file name and registered from there.
Example: InstallFont \\server\files$\Fonts\MyFont.otf

UninstallFont <FontFile>

Removes a font from the Windows font folder, if it exists. Just the file name without path of the fonts file must be specified.
Example: RemoveFont MyFont.otf
FTP - Directories

CopyFTPDir <SourcePath>, <DestPath>
CopyFTPDir <SourcePath>, <DestPath>, <FTPUserName>, <EncryptedPassword>

Copies source directory tree to the destination directory, copying only files that are new or changed. Source or destination must contain the ftp:// prefix to identify direction. Use the LastFTPWasCancelled condition to detect cancellation. The cancel button can be removed using the DisableFTPCancel command. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: CopyFTPDir [UserDocumentsDir],ftp://10.10.10.10/Backups/[ComputerName]

CopyFTPDirHidden <SourcePath>, <DestPath>
CopyFTPDirHidden <SourcePath>, <DestPath>, <FTPUserName>, <EncryptedPassword>

Copies source directory tree to the destination directory, copying only files that are new or changed. No user interface is shown during the process. Source or destination must contain the ftp:// prefix to identify direction. Use the LastFTPWasCancelled condition to detect cancellation. The cancel button can be removed using the DisableFTPCancel command. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: CopyFTPDirHidden [UserDocumentsDir],ftp://10.10.10.10/Backups/[ComputerName]

DeleteFTPDir <FTPAddress>
DeleteFTPDir <FTPAddress>, <FTPUserName>, <EncryptedPassword>

Deletes a directory tree recursively on an FTP server including all subfiles and subfolders, if it exists. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: DeleteFTPDir ftp://10.10.10.10/Backups

MakeFTPDir <FTPAddress>
MakeFTPDir <FTPAddress>, <FTPUserName>, <EncryptedPassword>

Creates a directory recursively on an FTP server, if it does not exist. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: MakeFTPDir ftp://10.10.10.10/Backups

RenameFTPDir <FTPAddress>, <NewName>
RenameFTPDir <FTPAddress>, <NewName>, <FTPUserName>, <EncryptedPassword>

Renames a directory on an FTP server. New name must be the directory name without path and host. To move a directory, include relative or absolute path without host in the new name. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: RenameFTPDir ftp://10.10.10.10/Backups,Archived
FTP - Files

AppendFTPFile <FTPAddress>, <Content>
AppendFTPFile <FTPAddress>, <Content>, <FTPUserName>, <EncryptedPassword>

Appends the content line to the FTP file creating it if it does not exist. The difference between AppendFTPFile and WriteFTPFile is that AppendFTPFile will also append a carriage return. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: AppendFTPFile ftp://10.10.10.10/MyLogFile.txt,[Var LogAppend]

CopyFTPFile <SourcePath>, <DestPath>
CopyFTPFile <SourcePath>, <DestPath>, <FTPUserName>, <EncryptedPassword>

Uploads or downloads a file to or from an FTP server. Source or destination must contain the ftp:// prefix to identify direction. Destination file will be overwritten, if it exists. Both source and destination must contain a file name. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: CopyFTPFile MyBackup.Zip,ftp://10.10.10.10/Backups/[Date].Zip

CopyFTPFileHidden <SourcePath>, <DestPath>
CopyFTPFileHidden <SourcePath>, <DestPath>, <FTPUserName>, <EncryptedPassword>

Uploads or downloads a file to or from an FTP server without showing a user interface. Source or destination must contain the ftp:// prefix to identify direction. Destination file will be overwritten, if it exists. Both source and destination must contain a file name. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: CopyFTPFileHidden MyBackup.Zip,ftp://10.10.10.10/Backups/[Date].Zip

DeleteFTPFile <FTPAddress>
DeleteFTPFile <FTPAddress>, <FTPUserName>, <EncryptedPassword>

Deletes a file on an FTP server, if it exists. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: DeleteFTPFile ftp://10.10.10.10/Backups/Latest.Zip

DisableFTPCancel

Removes the cancel button for commands CopyFTPFile, CopyFTPDir and SyncFTPDir.

EnableFTPCancel <LogFile>

When enabled, a cancel button is displayed in the user interface for operations for the commands CopyFTPFile, CopyFTPDir and SyncFTPDir. By default the user can cancel. Use the LastFTPWasCancelled condition to determine, if the last operation was cancelled by the user. Use the DisableFTPCancel command to remove the cancellation option.

RenameFTPFile <FTPAddress>, <NewName>
RenameFTPFile <FTPAddress>, <NewName>, <FTPUserName>, <EncryptedPassword>

Renames a file on an FTP server. New name must be the file name without path and host. To move a file, include relative or absolute path without host in the new name. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: RenameFTPFile ftp://10.10.10.10/Backups/Today.Zip,Yesterday.Zip

WriteFTPFile <FTPAddress>, <Content>
WriteFTPFile <FTPAddress>, <Content>, <FTPUserName>, <EncryptedPassword>

Appends the content to the FTP file creating it if it does not exist. The difference between AppendFTPFile and WriteFTPFile is that AppendFTPFile will also append a carriage return. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: WriteFTPFile ftp://10.10.10.10/MyLogFile.txt,[Var LogAppend]
FTP - Settings

DisableFTPBinaryMode

Disables binary mode for all FTP operations.

DisableFTPKeepAlive

Disables keep alive for all FTP operations.

DisableFTPPassiveMode

Disables passive mode for all FTP operations.

EnableFTPBinaryMode

Enables binary mode for all FTP operations (default settings).

EnableFTPKeepAlive

Enables keep alive for all FTP operations (default settings).

EnableFTPPassiveMode

Enables passive mode for all FTP operations (default settings).

RegisterFTPCredentials <Host>, <FTPUserName>, <EncryptedPassword>

Registers credentials for FTP operations. Using RegisterFTPCredentials allows you to skip explicit credentials for all operations to the host. Setting explicit credentials overrules the registration. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.

SetFTPAutoRetries <Number>

Sets the number of times all FTP operations are automatically retried. Default is 2. Specifying 1 will in effect disable retrying operations automatically.

UnregisterFTPCredentials <Host>

Removes credential registration for FTP operations.
FTP - Synchronization

SyncFTPDir <SourcePath>, <DestPath>
SyncFTPDir <SourcePath>, <DestPath>, <FTPUserName>, <EncryptedPassword>

Synchronizes source directory tree to the destination directory making them the same, while only copying changed files. Source or destination must contain the ftp:// prefix to identify direction. On the first run, all files will be copied. From the second run with the same parameters, only new or changes files will be copied. Use the LastFTPWasCancelled condition to detect cancellation. The cancel button can be removed using the DisableFTPCancel command. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: SyncFTPDir [UserDocumentsDir],ftp://10.10.10.10/Backups/[ComputerName]

SyncFTPDirHidden <SourcePath>, <DestPath>
SyncFTPDirHidden <SourcePath>, <DestPath>, <FTPUserName>, <EncryptedPassword>

Synchronizes source directory tree to the destination directory making them the same, while only copying changed files. No user interface is shown during the process. Source or destination must contain the ftp:// prefix to identify direction. On the first run, all files will be copied. From the second run with the same parameters, only new or changes files will be copied. Use the LastFTPWasCancelled condition to detect cancellation. The cancel button can be removed using the DisableFTPCancel command. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: SyncFTPDir [UserDocumentsDir],ftp://10.10.10.10/Backups/[ComputerName]
Graphical User Interfaces - General Settings - Appearance

ResetBackgroundImage

Resets the background image of all graphical user interfaces to the default background.

SetBackgroundImage <ImageFile>

Sets the background image of all graphical user interfaces, overruling the default background. The background image will be stretched to fit and should have a border. Recommended size is minimum 600x500 pixels.

SetBodyColor <Color>

Sets the color of all body texts and menu items on graphical user interfaces. Individual menu item colors can be overruled using the SetMenuItemForeColor command. Color must be a known Windows color such as "Red" or a hash sign and the 6 digit hex RGB colors, as used in the html standard, for example #FF0000 for red.

SetBodyFont <Size>
SetBodyFont <Size>, <Font>

Sets the font of all body texts on graphical user interfaces including splash screens and menus.

SetHeaderColor <Color>

Sets the color of all headers on graphical user interfaces. Color must be a known Windows color such as "Red" or a hash sign and the 6 digit hex RGB colors, as used in the html standard, for example #FF0000 for red.

SetHeaderFont <Size>
SetHeaderFont <Size>, <Font>

Sets the font of all header texts on graphical user interfaces.
Graphical User Interfaces - General Settings - Company Logo

SetCompanyLogo <ImageFile>

Overrules the company logo in graphical user interfaces. Logo file should be png format an preferrable at least 128x128 pixels.
Example: SetCompanyLogo Logo.png

SetDefaultCompanyLogo <ImageFile>

Overrules the company logo in graphical user interfaces and will permanently set the default logo on the executing computer. This command requires local admin rights - the same functionality can be achieved by setting the registry key HKEY_LOCAL_MACHINE\Software\FastTrack Software\DefaultCompanyLogo. Set to a blank value to clear the setting.
Example: SetDefaultCompanyLogo Logo.png

SetUserDefaultCompanyLogo <ImageFile>

Overrules the company logo in graphical user interfaces and will permanently set the default logo, but for the current user only. Using SetDefaultCompanyLogo will set the company logo all users on the executing computer, but requires local admin rights to set a per-machine registry key. The same functionality can be achieved by setting the registry key HKEY_CURRENT_USER\Software\FastTrack Software\DefaultCompanyLogo. SetUserDefaultCompanyLogo takes precedence over SetDefaultCompanyLogo. Set to a blank value to clear the setting.
Example: SetUserDefaultCompanyLogo Logo.png
Graphical User Interfaces - General Settings - Company Name

DisableCompanyName

Disables showing company name in graphical user interfaces. To disable showing company name by default, set the machine registry key HKEY_LOCAL_MACHINE\Software\FastTrack Software\ShowCompanyName or the user registry key HKET_CURRENT_USER\Software\FastTrack Software\ShowCompanyName to the value of 'False'.

EnableCompanyName

Enables showing company name in graphical user interfaces. Showing is enabled by default, use the command to get showing enabled again after using DisableCompanyName.

SetCompanyName <Name>

Overrules the company name in graphical user interfaces. Company name is by default the name of the licensed company, but can be overruled. The command has no effect on trial and free editions.
Example: SetCompanyName Acme Corporation America

SetDefaultCompanyName <Name>

Overrules the company name in graphical user interfaces and will permanently set the default name on the executing computer. Company name is by default the name of the licensed company, but can be overruled. This command requires local admin rights - the same functionality can be achieved by setting the registry key HKEY_LOCAL_MACHINE\Software\FastTrack Software\DefaultCompanyName. The command has no effect on trial and free editions. Set to a blank value to clear the setting.
Example: SetDefaultCompanyName Acme Corporation America

SetUserDefaultCompanyName <Name>

Overrules the company name in graphical user interfaces and will permanently set the default name, but for the current user only. Using SetDefaultCompanyName will set the company name for all users on the executing computer, but requires local admin rights to set a per-machine registry key. The same functionality can be achieved by setting the registry key HKEY_CURRENT_USER\Software\FastTrack Software\DefaultCompanyName. SetUserDefaultCompanyName takes precedence over SetDefaultCompanyName. The command has no effect on trial and free editions. Set to a blank value to clear the setting.
Example: SetUserDefaultCompanyName Acme Corporation America
Graphical User Interfaces - General Settings - Custom Icons

AddCustomIcon <Name>, <ImageFile>

Adds a custom icon image for the current script to use in menus, message boxes, progress screen, etc. The name is the logical name that the icon is referenced by. The image must preferably by in png format.
Example: AddCustomIcon AcmeLogo,O:\Acme.png
Graphical User Interfaces - General Settings - Position

RestoreScreenPos <PercentX>, <PercentY>

Restores positions of graphical user interfaces to their default locations.

SetScreenPos <PercentX>, <PercentY>

Sets the position of graphical user interfaces in percent of the screen resolution except for message boxes. For instance a PercentX of 50 and a PercentY of 50 will show all subsequent user interfaces at the middle of the screen. To restore default positions, use the RestoreScreenPos command. If multiple user interfaces are used in the same script, SetScreenPos must be called multiple times to not make them appear on top of each other.
Example: SetScreenPos 50,100
Graphical User Interfaces - General Settings - Scaling

SetDefaultScaling <ScalePercent>

Overrules the scaling of all graphical user interfaces and will permanently set the default scaling on the executing computer. Percent must be between 100 and 300 percent. Default is 100 percent. This command requires local admin rights - the same functionality can be achieved by setting the registry key HKEY_LOCAL_MACHINE\Software\FastTrack Software\DefaultScaling.
Example: SetDefaultScaling 150

SetScaling <ScalePercent>

Set general scaling of all graphical user interfaces. Percent must be between 100 and 300 percent. Default is 100 percent.
Example: SetScaling 150

SetUserDefaultScaling <ScalePercent>

Overrules the scaling of all graphical user interfaces and will permanently set the default scaling, but for the current user only. Using SetDefaultScaling will set the scaling for all users on the executing computer, but requires local admin rights to set a per-machine registry key. The same functionality can be achieved by setting the registry key HKEY_CURRENT_USER\Software\FastTrack Software\DefaultScaling. SetUserDefaultScaling takes precedence over SetDefaultScaling. Percent must be between 100 and 300 percent. Default is 100 percent.
Example: SetUserDefaultScaling 150
Graphical User Interfaces - General Settings - Skin

SetDefaultSkin <Name>

Overrules the general graphical user interfaces default skin on the executing computer. Possible skins are Classic, Black, Grey and Modern. This command requires local admin rights - the same functionality can be achieved by setting the registry key HKEY_LOCAL_MACHINE\Software\FastTrack Software\DefaultCompanyLogo. Set to a blank value to clear the setting.
Example: SetDefaultSkin Classic

SetSkin <Name>

Sets the general graphical user interfaces skin. Possible skins are Classic, Black, Grey and Modern. Default is Modern.
Example: SetSkin Classic

SetUserDefaultSkin <Name>

Permanently overrules the graphical user interfaces skin for the current user. Possible skins are Classic, Black, Grey and Modern. Using SetDefaultSkin will set the skin for all users on the executing computer, but requires local admin rights to set a per-machine registry key. The same functionality can be achieved by setting the registry key HKEY_CURRENT_USER\Software\FastTrack Software\DefaultSkin. SetUserDefaultSkin takes precedence over SetDefaultSkin.
Example: SetUserDefaultSkin Classic
Graphical User Interfaces - General Settings - Timeouts

SetAskTimeout <Duration>

Sets a number of seconds, where the default button is automatically pressed for the Ask condition, if the user does not react. 0 is default and means no timeout.

SetMessageTimeout <Duration>

Sets a number of seconds, where the OK button is automatically pressed for the commands ShowMessage, ShowErrorMessage and ShowWarningMessage, if the user does not react. 0 is default and means no timeout.
Graphical User Interfaces - General Settings - Topmost

DisableTopMost

Disables that all graphical user interfaces are on top of all other windows. Disabled is default, but DisableTopMost must be used to switching back from EnableTopMost.

EnableTopMost

Enables all graphical user interfaces to be on top of all other windows.
Graphical User Interfaces - General Settings - User Interaction

DisableStealthMode

Disables Stealth Mode - see EnableStealthMode for information.

DisableUserInteraction

Suppresses all user interaction, ensuring that scripts do not pause and ask the user for action. The difference between this and stealth mode is that splash and progress screens are still shown. From command-line this mode can be enabled using the /dm (disable messages) switch.

EnableStealthMode

Suppresses all user interfaces, ensuring that scripts do not pause and ask the user for action. From command-line this mode can be enabled using the /q or /quiet switch.

EnableUserInteraction

Re-enables user interaction.
Graphical User Interfaces - General Settings - Visual Effect

RemoveWindowEffect

Removes the hide and show effect for all windows. The visual effect is always disabled in Remote Desktop Services sessions.

SetExpandingWindowEffect
SetExpandingWindowEffect <Duration>

Sets the show and hide effect for all windows to be an exapand and collapse effect. Duration is in milliseconds - default is 200 milliseconds (1/5 of a second). The visual effect is disabled in Remote Desktop Services sessions.

SetFadingWindowEffect
SetFadingWindowEffect <Duration>

Sets the show and hide effect for all windows to be a fading effect (default). Duration is in milliseconds - default is 200 milliseconds (1/5 of a second). The visual effect is disabled in Remote Desktop Services sessions.

SetRollingWindowEffect
SetRollingWindowEffect <Duration>

Sets the show and hide effect for all windows to be a rolling effect. Duration is in milliseconds - default is 200 milliseconds (1/5 of a second). The visual effect is disabled in Remote Desktop Services sessions.

SetSlidingWindowEffect
SetSlidingWindowEffect <Duration>

Sets the show and hide effect for all windows to be a sliding effect. Duration is in milliseconds - default is 200 milliseconds (1/5 of a second). The visual effect is disabled in Remote Desktop Services sessions.
Graphical User Interfaces - General Settings - Wait Text

SetWaitCaption <Text>

Overrules the "Please wait ..." text for graphical user interfaces, such as Splash, SmallSplash, Progress and SyncDir.
Graphical User Interfaces - General Settings - Window Size

RestoreWindowSizes

Restores resizable windows to their default sizes.

SetNextWindowScale <PercentX>, <PercentY>

Sets the default size in percent of the screen resolution the next displayed resizable window such as the Menu, ListMenu, DoubleListMenu, ShowWebPage, ShowRemoteDesktop or Console window. Use the SetWindowScale command to set the size for all resizable windows, the RestoreWindowSizes command to restore window sizes to original sizes and the SetNextWindowSize command to set a fixed pixel size instead of a percentage.

SetNextWindowSize <Width>, <Height>

Sets the default size in pixels for the next displayed resizable window such as the Menu, ListMenu, DoubleListMenu, ShowWebPage, ShowRemoteDesktop or Console window. Use the SetWindowSize command to set the size for all resizable windows, the RestoreWindowSizes command to restore window sizes to original sizes and the SetNextWindowScale command to set a flexible size in percent of the screen resolution instead of a fixed pixel size. If the height or width is larger than the available screen size, the width or height is automatically scaled to fit. Entering -1 as the width and/or height will maximize to the highest possible size.

SetWindowScale <PercentX>, <PercentY>

Sets the default size in percent of the screen resolution for all resizable windows such as the Menu, ListMenu, DoubleListMenu, ShowWebPage, ShowRemoteDesktop or Console window. Use the SetNextWindowScale command to set the size for the next displayed resizable window only, the RestoreWindowSizes command to restore window sizes to original sizes and the SetWindowSize command to set a fixed pixel size instead of a percentage.

SetWindowSize <Width>, <Height>

Sets the default size in pixels for all resizable windows such as the Menu, ListMenu, DoubleListMenu, ShowWebPage, ShowRemoteDesktop or Console window. Use the SetNextWindowSize command to set the size for the next displayed resizable window only, the RestoreWindowSizes command to restore window sizes to original sizes and the SetWindowScale command to set a flexible size in percent of the screen resolution instead of a fixed pixel size. If the height or width is larger than the available screen size, the width or height is automatically scaled to fit. Entering -1 as the width and/or height will maximize to the highest possible size.
Graphical User Interfaces - Menus - Appearance

SetMenuItemBackColor <Color>
SetMenuItemBackColor <Color>, <ListOfItems>

Overrules the default background color for individual menu items (Menu, ListMenu, DoubleListMenu, etc). Color must be a known Windows color such as "Red" or a hash sign and the 6 digit hex RGB colors, as used in the html standard, for example #FF0000 for red.
Example: SetMenuItemBackColor Red,Disk Space

SetMenuItemForeColor <Color>
SetMenuItemForeColor <Color>, <ListOfItems>

Overrules the default foreground color for individual menu items (Menu, ListMenu, DoubleListMenu, etc). The default color can be set using the SetBodyColor command. Color must be a known Windows color such as "Red" or a hash sign and the 6 digit hex RGB colors, as used in the html standard, for example #FF0000 for red.
Example: SetMenuItemForeColor Red,Disk Space
Graphical User Interfaces - Menus - Settings

DisableMenuSorting

Disables sorting of items in all graphical menus.

EnableMenuSorting

Enables sorting of items in all graphical menus. Sorted is disabled by default.

SetDoubleListLeftWidth <Value>

Set the pixel width of the left side in the DoubleListMenu.

SetMenuDefault <DefaultValue>

Set the default selection value for all menus (Menu, ListMenu, DoubleListMenu, etc).

SetMenuDefaultChecked

Sets all items in the collection CheckListMenu to checked by default.

SetMenuDefaultUnchecked <DefaultValue>

Sets all items in the collection CheckListMenu to unchecked by default (default).

SetMenuHeaderIcon <IconName>

Overrules the default header icon in list menus, doublelist menus and the MultiInput command. IconName refers to an internal icon name of icons listed in the "Icon Explorer" in the script editor. Further icons can added with the AddCustomIcon command. You also point directly to an image file preferably by in png format.
Graphical User Interfaces - Menus

DoubleList <HeaderText>, <LeftColumnHeaderText>, <RightColumnHeaderText>, <ListOfValues>

Displays a list in two columns of items like the DoubleListMenu function, but without requiring the user to select an item. The following settings commands have effect on the window: SetScreenPos, SetBodyFont, SetBodyColor, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetWindowSize, SetWindowScale, SetNextWindowSize, SetNextWindowScale, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. For every two items in the list of values, the first value is the left side and the second is the right side. The left side is returned as the selected choice. If the selected choice must be different than the displayed text, split the value with |, where the variable name is before the split and the display text after the split. The window icon can be changed using the SetMenuHeaderIcon command. ListOfValues simply means a dynamic number of parameters/values; there can be any number of parameters from none to an infinite number of parameters.
Example: List Synced files,[LastSyncChangedFiles]

List <Header>, <ListOfItems>

Displays a list of items like the ListMenu function, but without requiring the user to select an item. Useful for displaying collections. The following settings commands have effect on the window: SetScreenPos, SetBodyFont, SetBodyColor, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetWindowSize, SetWindowScale, SetNextWindowSize, SetNextWindowScale, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. The window icon can be changed using the SetMenuHeaderIcon command. ListOfItems simply means a dynamic number of parameters/items; there can be any number of parameters from none to an infinite number of parameters.
Example: List Synced files,[LastSyncChangedFiles]
Graphical User Interfaces - Message Boxes

ShowErrorMessage <Message>
ShowErrorMessage <Message>, <Caption>
ShowErrorMessage <Message>, <Caption>, <ButtonText>

Displays an error message to the user. Preferably use quotes around texts to avoid misinterpretation of commas. Use the SetMessageTimeout command to set a timeout, where the OK button is automatically pressed, if the user does not react. The following settings commands have effect on the window: SetBodyFont, SetBodyColor, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. ShowErrorMessage is that same as ShowMessage, except that the icon 'Stop' is selected by default.
Example: ShowErrorMessage The installation has failed - please contact Help Desk.,Installation failed

ShowMessage <Message>
ShowMessage <Message>, <Caption>
ShowMessage <Message>, <Caption>, <IconName>
ShowMessage <Message>, <Caption>, <IconName>, <ButtonText>

Displays a message to the user. Use the SetMessageTimeout command to set a timeout, where the OK button is automatically pressed, if the user does not react. The following settings commands have effect on the window: SetBodyFont, SetBodyColor, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. Preferably use quotes around texts to avoid misinterpretation of commas. IconName refers to an internal icon name of icons listed in the "Icon Explorer" in the script editor. Further icons can added with the AddCustomIcon command. You also point directly to an image file preferably by in png format.
Example: ShowMessage The installation has completed

ShowMessageWin <Message>
ShowMessageWin <Message>, <Caption>

Displays a message to the user in regular Windows style. Preferably use quotes around texts to avoid misinterpretation of commas.
Example: ShowMessageWin Installation complete.[Return][Return]Press OK to continue

ShowWarningMessage <Message>
ShowWarningMessage <Message>, <Caption>
ShowWarningMessage <Message>, <Caption>, <ButtonText>

Displays an warning message to the user. Use the SetMessageTimeout command to set a timeout, where the OK button is automatically pressed, if the user does not react. The following settings commands have effect on the window: SetBodyFont, SetBodyColor, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. Preferably use quotes around texts to avoid misinterpretation of commas. ShowErrorMessage is that same as ShowMessage, except that the icon 'Warning' is selected by default.
Example: ShowWarningMessage The installation has failed - please contact Help Desk.,Installation failed
Graphical User Interfaces - Progress Screens

CloseApplication <ProcessName>, <ApplicationName>
CloseApplication <ProcessName>, <ApplicationName>, <Seconds>
CloseApplication <ProcessName>, <ApplicationName>, <Seconds>, <Message>
CloseApplication <ProcessName>, <ApplicationName>, <Seconds>, <Message>, <HeaderText>
CloseApplication <ProcessName>, <ApplicationName>, <Seconds>, <Message>, <HeaderText>, <IconName>

If the process is running, it displays a window asking the user to close the application within a certain timeframe, forcing it closed, if there is no response. Useful for installations to make sure the application is closed. In the context of installations, you should issue the BlockExecution command afterwards to make sure the application is not started during the installation. The following settings commands have effect on the window: SetScreenPos, SetBodyFont, SetBodyColor, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. If you do not specify a message, a standard closing message is shown. If you do not specify seconds, 2 minutes is assumed. You can use [Return] function to make the message appear in multiple lines. IconName refers to an internal icon name of icons listed in the "Icon Explorer" in the script editor. Further icons can added with the AddCustomIcon command. You also point directly to an image file preferably by in png format.
Example: CloseApplication WinWord.exe,Microsoft Word

Progress <Percent>
Progress <Percent>, <BodyText>
Progress <Percent>, <BodyText>, <Caption>
Progress <Percent>, <BodyText>, <Caption>, <IconName>

Shows a progress screen at the center of the screen. The following settings commands have effect on the window: SetScreenPos, SetBodyFont, SetBodyColor, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. Calling progress multiple times during a script execution will update the shown screen. It is expected that Progress is called a number of times during execution, each time increasing the percent and optionally update the caption and body text. Percent must be between 0 and 100 and first time Progress is used, percent should normally be 0. For lengthy operations, consider using the ProgressTo command to create a gradual increase in percent. Remember quotes around the body and caption text, if it contains commas. Use the RemoveProgress command to hide the Progress screen. IconName refers to an internal icon name of icons listed in the "Icon Explorer" in the script editor. Use the SetWaitCaption to change the "Please wait ..." header. Further icons can added with the AddCustomIcon command. You also point directly to an image file preferably by in png format.
Example: Progress 0,The installation can take anywhere from 30 minutes to two hours.[Return][Return]Estimated time remaining: 1 hour.,Installing Windows 7 Service Pack 1

ProgressTo <Percent>, <Seconds>

Sets a progress timer for a window created with the Progress command to create a gradual progress on lengthy operations. The percent is gradually changed from the current percent to the new percent within the specified number of seconds. For example if the current Progress window percent is 0 and ProgressTo is fed with 100 percent and 300 seconds, the value in the Progress window is changed gradually from 0 to 100 percent within 5 minutes. If no Progress window is visible, the operation is cancelled. If a new Progress command is issued, the new percent is enforced.
Example: ProgressTo 100,300

RemoveProgress

Removes the Progress screen, if it is visible.

WaitForAcceptance
WaitForAcceptance <Seconds>
WaitForAcceptance <Seconds>, <Message>
WaitForAcceptance <Seconds>, <Message>, <HeaderText>
WaitForAcceptance <Seconds>, <Message>, <HeaderText>, <IconName>
WaitForAcceptance <Seconds>, <Message>, <HeaderText>, <IconName>, <ButtonText>

Displays a window with a progress screen. Useful for forced reboots. The CountDown function is the same, except that it allows cancellation. The following settings commands have effect on the window: SetScreenPos, SetBodyFont, SetBodyColor, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. If you do not specify a message, a standard reboot message is assumed and you should issue the RebootForced command afterwards. If you do not specify seconds, 2 minutes is assumed. You can use [Return] function to make the message appear in multiple lines. IconName refers to an internal icon name of icons listed in the "Icon Explorer" in the script editor. Further icons can added with the AddCustomIcon command. You also point directly to an image file preferably by in png format.
Example: WaitForAcceptance 120,A forced system restart is needed.[Return][Return]Save open documents within 2 minutes
Graphical User Interfaces - Splash Screens - Settings

DisableSplashFlash

Disables flashing of text on splash screens (default behavior).

EnableSplashFlash
EnableSplashFlash <Interval>

Enables flashing of text on splash screens. Interval is the interval between flashed in milliseconds.
Graphical User Interfaces - Splash Screens

DisableSplashAutoHide

Disables autohiding of splash screens, when other GUI elements would show on top of it. This is default bahavior.

EnableSplashAutoHide

Enables autohiding of splash screens, when other GUI elements would show on top of it. This is default bahavior.

RemoveSmallSplash

Removes the SmallSplash, if it is visible.

RemoveSplash

Removes the Splash if it is visible.

SmallSplash <Text>
SmallSplash <Text>, <IconName>

Displays a small splash window at the bottom of the screen. Use the RemoveSmallSplash command to hide the splash screen again. Remember to quote the text, if it contains comma. The following settings commands have effect on the splash screen: SetScreenPos, SetBodyFont, SetBodyColor, SetBackgroundImage, ResetBackgroundImage, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. Use the SetWaitCaption to change the "Please wait ..." header. IconName refers to an internal icon name of icons listed in the "Icon Explorer" in the script editor. Further icons can added with the AddCustomIcon command. You also point directly to an image file preferably by in png format.
Example: SmallSplash Installing Microsoft Office...please wait.,Process

Splash <TextLine1>, <TextLine2>
Splash <TextLine1>, <TextLine2>, <ImageFile>

Displays a splash window at the center of the screen. Use the RemoveSplash command to hide the splash screen again. Remember to quote textlines, if they contain comma. The following settings commands have effect on the splash screen: SetScreenPos, SetBodyFont, SetBodyColor, SetBackgroundImage, ResetBackgroundImage, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. The optional imagefile is used as the icon. To change the background image, use the SetBackgroundImage command. Use the SetWaitCaption to change the "Please wait ..." header. Using FastTrack Logon, put your image file in fshbin folder and refer to the filename without the path, to use the graphics file from the client location.
Example: Splash Welcome to ACME Corporation,[UserFullName]
Graphical User Interfaces - Textual Input - MultiInput Field Configuration

CreateMultiInputCheckBox <ListOfVariables>

Defines that one or more input fields for the MultiInput command item associated with the variable must be checkboxes. If a variable is used with MultiInput that is defined by CreateInputCheckBox, the field will be a checkbox instead of a text field.

CreateMultiInputDropList <VariableName>, <ListOfValues>

Defines that the input field for the MultiInput command item associated with the variable is a drop down list. If a variable is used with MultiInput that is defined by CreateMultiInputDropList, the field will be a dropdown list of values instead of an input field.

CreateMultiInputLabel <ListOfVariables>

Defines that one or more input fields for the MultiInput command item associated with the variable must be labels (information). Note that the values used must be set before using the MultiInput command to prefill the fields with values. If a variable is used with MultiInput that is defined by CreateMultiInputLabel, the field will be a read-only informational label instead of a text field.

CreateMultiInputMemoField <ListOfVariables>

Defines that one or more input fields for the MultiInput command item associated with the variable must be memo fields (multi-line text fields).

CreateMultiInputPassword <ListOfVariables>

Defines that one or more input fields for the MultiInput command item associated with the variable must be password text fields. If a variable is used with MultiInput that is defined by CreateMultiInputPassword, the field will be a text field without showing the typed text instead of an normal input field.

CreateMultiInputTextField <ListOfVariables>

Defines that one or more input fields for the MultiInput command item associated with the variable must be text boxes (default).

SetMultiInputBackColor <Color>
SetMultiInputBackColor <Color>, <ListOfVariables>

Defines the default background color for input fields. Specifying one or more variable names will set the background color for those input fields only. Color must be a known Windows color such as "Red" or a hash sign and the 6 digit hex RGB colors, as used in the html standard, for example #FF0000 for red.

SetMultiInputForeColor <Color>
SetMultiInputForeColor <Color>, <ListOfVariables>

Defines the default foreground color for input fields. Specifying one or more variable names will set the foreground color for those input fields only. Color must be a known Windows color such as "Red" or a hash sign and the 6 digit hex RGB colors, as used in the html standard, for example #FF0000 for red.

SetMultiInputMandatory <ListOfVariables>

Defines that one or more input fields for the MultiInput command item associated with the variable are mandatory (default).

SetMultiInputOptional <ListOfVariables>

Defines that one or more input fields for the MultiInput command item associated with the variable are optional.
Graphical User Interfaces - Textual Input

MultiInput <HeaderText>, <ListOfFields>

Shows a list of input fields and returns every item in the list as a variable. The following settings commands have effect on the window: SetScreenPos, SetBodyFont, SetBodyColor, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. The width of the window can be set with the SetWindowSize command. The window icon can be changed using the SetMenuHeaderIcon command. Check boxes, drop lists and password fields are possible by using the CreateMultiInputCheckBox, CreateMultiInputDropList and CreateMultiInputPassword commands. Fields are mandatory unless set otherwise by the SetMultiInputOptional command. Use the MultiInputCancelled condition to test, if the user pressed the cancel button. If the variable name must be different than the displayed text, split a field with | where the variable name is before the split and the display text after the split. ListOfFields simply means a dynamic number of parameters/fields; there can be any number of parameters from none to an infinite number of parameters. Fields can have default values simply by setting variable values before using MultiInput.
Example: MultiInput New User,UserName|User name (Initials),First name,Last name,Password

MultiInputForced <HeaderText>, <ListOfFields>

Shows a list of input fields and returns every item in the list as a variable. The following settings commands have effect on the window: SetScreenPos, SetBodyFont, SetBodyColor, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. The width of the window can be set with the SetWindowSize command. The window icon can be changed using the SetMenuHeaderIcon command. Check boxes, drop lists and password fields are possible by using the CreateMultiInputCheckBox, CreateMultiInputDropList and CreateMultiInputPassword commands. Fields are mandatory unless set otherwise by the SetMultiInputOptional command. If the variable name must be different than the displayed text, split a field with | where the variable name is before the split and the display text after the split. ListOfFields simply means a dynamic number of parameters/fields; there can be any number of parameters from none to an infinite number of parameters. Fields can have default values simply by setting variable values before using MultiInputForced.
Example: MultiInputForced New User,UserName|User name (Initials),First name,Last name,Password

SetMultiInputCaption <Text>

Sets a caption text above the fields. Used to give the user information about the application.
Graphical User Interfaces - Web Page Viewing

ShowWebPage <Url>, <HeaderText>

Shows an embedded browser inside a window with a header text on top and a window caption. When the user clicks 'OK', the script continuesThe following settings commands have effect on the window: SetScreenPos, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetWindowSize, SetWindowScale, SetNextWindowSize, SetNextWindowScale, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands.
Example: If UserOnce ShowWelcome Then ShowWebPage http://intra.acme.com/Welcome,Welcome to Acme
Ini Files

WriteIni <IniFile>, <Section>, <Key>, <value>

Sets the value in an ini file.
Example: WriteIni \\AcmeServer\AdminShare$\Inventory.ini,[ComputerName],Disk,[DiskSize]
Installations - Internal FastTrack Registration

RegisterInstallation <ApplicationName>, <Version>, <Build>

Registers an installation for later query. RegisterInstallation requires admin rights and is expected to be issued after completing a setup program. Build refers to the current revision of your script, so that new usersettings can be applied when the build is changed, even if the application version is the same. Through the logon script, user settings can be applied to users logging on to machines with registered installations by using the UserSettingsOnce, UserSettingsOnceAVersion or UserSettingsOnceABuild conditions. If there is a file named "PostInstall.fsh" in the FastTrack directory, it is executed when the script issuing RegisterInstallation is finishes. Functions CurrentInstallName and CurrentInstallVersion are available in the PostInstall script.
Example: RegisterInstallation Microsoft Office,2010,1

UnregisterInstallation <ApplicationName>

Unregisters an installation, if it is already registered. If there is a file named "PostUninstall.fsh" in the FastTrack directory, it is executed. Functions CurrentInstallName and CurrentInstallVersion are available in the PostUninstall script.
Example: UnregisterInstallation Microsoft Office
Installations - Software On Demand

AddMSIOnDemand <ProgramName>, <Version>

Adds an item to the Software On Demand user selection menu.

AddProgramOnDemand <ProgramName>, <Version>

Adds an item to the Software On Demand user selection menu.

AddProgramScriptOnDemand <ProgramName>, <Version>, <ScriptFile>

Adds an item to the Software On Demand user selection menu.

InstallMSIOnDemand <ProgramName>, <Version>, <MSIPackage>
InstallMSIOnDemand <ProgramName>, <Version>, <MSIPackage>, <Parameters>

Installs an MSI package unattendedly without a user interface, if the package is not already installed and if the user has selected the application in the Software On Demand Menu; otherwise, nothing happens. Concurrency and logging rules apply. If another installation is currently running, the command will wait 5 minutes for the other installation to finish, because Windows Installer does not support multiple installations at the same time. To determine success, use resume on error mode (for example using "ResumeOnError 1" as the previous line) and use the LastLineFailed condition to check if the installation was successful. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If there is a file named "PostInstall.fsh" in the FastTrack engine directory, it is executed. Functions CurrentInstallName and CurrentInstallVersion are available in this script. Parameters can either be a transforms file or extra MSIExec parameters such as "TARGETDIR=C:\Extract".
Example: InstallOnDemandMSI Acrobat Reader,10.0,AcroRead.msi

InstallProgramOnDemand <ProgramName>, <Version>, <File>
InstallProgramOnDemand <ProgramName>, <Version>, <File>, <Arguments>

If the specified version of the program is not installed, it is installed and if the user has selected the application in the Software On Demand Menu. Use the InstallMSI command instead for Windows Installer MSI based files. Concurrency and logging rules apply. Arguments must be passed to make the installation run unattended. Specify user as <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If the user specified is under User Account Control (UAC), these restrictions apply.

InstallProgramScriptOnDemand <ProgramName>, <Version>, <ScriptFile>

If the specified version of the program is not installed, it is installed using a FastTrack installation script. Concurrency and logging rules apply. Specify user as <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If the user specified is under User Account Control (UAC), these restrictions apply.
Installations

InstallProgram <ProgramName>, <Version>, <File>
InstallProgram <ProgramName>, <Version>, <File>, <Arguments>
InstallProgram <ProgramName>, <Version>, <File>, <UserName>, <EncryptedPassword>
InstallProgram <ProgramName>, <Version>, <File>, <Arguments>, <UserName>, <EncryptedPassword>

If the specified version of the program is not installed, it is installed. Use the InstallMSI command instead for Windows Installer MSI based files. Concurrency and logging rules apply. Arguments must be passed to make the installation run unattended. Specify user as <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If the user specified is under User Account Control (UAC), these restrictions apply.

InstallProgramScript <ProgramName>, <Version>, <ScriptFile>
InstallProgramScript <ProgramName>, <Version>, <ScriptFile>, <UserName>, <EncryptedPassword>

If the specified version of the program is not installed, it is installed using a FastTrack installation script. Concurrency and logging rules apply. Specify user as <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If the user specified is under User Account Control (UAC), these restrictions apply.

UninstallProgram <ProgramName>
UninstallProgram <ProgramName>, <Arguments>
UninstallProgram <ProgramName>, <Arguments>, <MinVersion>

If the specified program is installed, it is uninstalled. If MinVersion is specified, the program is uninstalled, if the version is LESS than this version. For example specifing "10.1" as version, anything less than this version gets uninstalled. If the program is an MSI file, the uninstall happens unattended. If the program installer is not in MSI format, the uninstallation can only be unattended, if the program does not ask for confirmation. The program is the name shown in the Windows installed programs list. Program names can be found in the installed programs list in the control panel or on your inventory website, if you use inventory. You can specify the left-most part, but the full name must be preferred. Some programs like Adobe Reader postfixes the version number in the application name, in which case, this can easily be factored in by using "Adobe Reader" as program name. However using for example "Microsoft Office" instead of the full program name to detect an office installation is not a good idea, because you can get a positive unintentional hit on "Microsoft Office Outlook Connector" for example. As a general rule of thumb, use the longest possible left-most part. Arguments can be used in situations where further parameters for the uninstaller must be used. For example adding "/UILevel=Silent /KillProcessIfNeeded /DontRestart" to AVG uninstaller will make the uninstallation completely unattended. If there is a file named "PostUninstall.fsh" in the FastTrack engine directory, it is executed. Functions CurrentInstallName and CurrentInstallVersion are available in this script.
Example: UninstallProgram TeamViewer

UninstallProgramScript <ProgramName>, <ScriptFile>
UninstallProgramScript <ProgramName>, <ScriptFile>, <UserName>, <EncryptedPassword>

If the specified program is installed, it is uninstalled using a FastTrack script. Specify user as <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If the user specified is under User Account Control (UAC), these restrictions apply.
Local Users and Groups - Groups

AddComputerToLocalGroup <ComputerName>, <LocalGroupName>
AddComputerToLocalGroup <ComputerName>, <LocalGroupName>, <RemoteComputerName>

Adds a domain computer to a local group, if not already member. If domain is different than the current users' domain, specify group as <Domain>\<DomainGroupName>.
Example: AddComputerToLocalGroup AcmeServer,Administrators

AddGroupToLocalGroup <DomainGroupName>, <LocalGroupName>
AddGroupToLocalGroup <DomainGroupName>, <LocalGroupName>, <RemoteComputerName>

Adds a domain group to a local group, if not already member. If domain is different than the current users' domain, specify group as <Domain>\<DomainGroupName>.
Example: AddGroupToLocalGroup [DomainAdminsGroup],Administrators

AddLocalUserToLocalGroup <LocalUserName>, <LocalGroupName>
AddLocalUserToLocalGroup <LocalUserName>, <LocalGroupName>, <RemoteComputerName>

Adds a local user to a local group, if not already member.
Example: AddLocalUserToLocalGroup AcmeUser,AcmeGroup

AddUserToLocalGroup <DomainUserName>, <LocalGroupName>
AddUserToLocalGroup <DomainUserName>, <LocalGroupName>, <RemoteComputerName>

Adds an Active Directory user to a local group, if not already member. If domain is different than the current users' domain, specify user as <Domain>\<UserName>.
Example: AddUserToLocalGroup AcmeADUser,Administrators

CreateLocalGroup <LocalGroupName>
CreateLocalGroup <LocalGroupName>, <RemoteComputerName>

Creates a local group.
Example: CreateLocalGroup AcmeGroup

DeleteLocalGroup <LocalGroupName>
DeleteLocalGroup <LocalGroupName>, <RemoteComputerName>

Deletes a local group, if it exists.
Example: DeleteLocalGroup AcmeGroup

RemoveComputerFromLocalGroup <ComputerName>, <LocalGroupName>
RemoveComputerFromLocalGroup <ComputerName>, <LocalGroupName>, <RemoteComputerName>

Removes a domain computer from a local group, if already member. If domain is different than the current users' domain, specify group as <Domain>\<DomainGroupName>.
Example: RemoveComputerFromLocalGroup AcmeServer,Administrators

RemoveGroupFromLocalGroup <DomainGroupName>, <LocalGroupName>
RemoveGroupFromLocalGroup <DomainGroupName>, <LocalGroupName>, <RemoteComputerName>

Removes a domain group from a local group, if already member. If domain is different than the current users' domain, specify group as <Domain>\<DomainGroupName>.
Example: RemoveGroupFromLocalGroup [DomainAdminsGroup],Administrators

RemoveLocalUserFromLocalGroup <LocalUserName>, <LocalGroupName>
RemoveLocalUserFromLocalGroup <LocalUserName>, <LocalGroupName>, <RemoteComputerName>

Removes a local user from a local group, if already member.
Example: RemoveLocalUserFromLocalGroup AcmeUser,AcmeGroup

RemoveUserFromLocalGroup <DomainUserName>, <LocalGroupName>
RemoveUserFromLocalGroup <DomainUserName>, <LocalGroupName>, <RemoteComputerName>

Removes a Active Directory user from a local group, if already member. If domain is different than the current users' domain, specify user as <Domain>\<UserName>.
Example: RemoveUserFromLocalGroup AcmeADUser,Administrators

RenameLocalGroup <LocalGroupName>, <NewLocalGroupName>
RenameLocalGroup <LocalGroupName>, <NewLocalGroupName>, <RemoteComputerName>

Renames a local group.
Example: RenameLocalGroup AcmeGroup,AcmeNewGroup

SetLocalGroupDescription <LocalGroupName>, <Description>
SetLocalGroupDescription <LocalGroupName>, <Description>, <RemoteComputerName>

Changes the description of a local group.
Example: SetLocalGroupDescription AcmeGroup,Group for ACME test users
Local Users and Groups - Users

AllowLocalUserPasswordChange <LocalUserName>
AllowLocalUserPasswordChange <LocalUserName>, <RemoteComputerName>

Enables the ability to change password for a local user.
Example: AllowLocalUserPasswordChange AcmeUser

CreateLocalUser <LocalUserName>, <EncryptedPassword>
CreateLocalUser <LocalUserName>, <EncryptedPassword>, <FullName>
CreateLocalUser <LocalUserName>, <EncryptedPassword>, <FullName>, <RemoteComputerName>

Adds a local user account. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. Use CreateUser to create an Active Directory user.
Example: CreateLocalUser AcmeUser, Akut3sRS6e3kJHztyeqg9w==, Test acme user

CreateLocalUserPlain <LocalUserName>, <PlainTextPassword>
CreateLocalUserPlain <LocalUserName>, <PlainTextPassword>, <FullName>
CreateLocalUserPlain <LocalUserName>, <PlainTextPassword>, <FullName>, <RemoteComputerName>

Adds a local user account. Password is entered as plain text. CreateLocalUser is recommended, unless the password is retrieved from user input. Use CreateUserPlain to create an Active Directory user.
Example: CreateLocalUserPlain AcmeUser, AcmePassword, Test acme user

DeleteLocalUser <LocalUserName>
DeleteLocalUser <LocalUserName>, <RemoteComputerName>

Deletes a local user account, if it exists.
Example: DeleteLocalUser AcmeUser

DisableLocalUser <LocalUserName>
DisableLocalUser <LocalUserName>, <RemoteComputerName>

Disables a local user, if it is currently enabled.
Example: DisableLocalUser AcmeUser

DisableLocalUserMustChangePassword <LocalUserName>
DisableLocalUserMustChangePassword <LocalUserName>, <RemoteComputerName>

Sets the user to not be forced to change password at next logon.
Example: DisableLocalUserMustChangePassword AcmeUser

DisableLocalUserPasswordExpiry <LocalUserName>
DisableLocalUserPasswordExpiry <LocalUserName>, <RemoteComputerName>

Disables expiration of password for a local user.
Example: DisableLocalUserPasswordExpiry AcmeUser

DisallowLocalUserPasswordChange <LocalUserName>
DisallowLocalUserPasswordChange <LocalUserName>, <RemoteComputerName>

Disables the ability to change password for a local user.
Example: DisallowLocalUserPasswordChange AcmeUser

EnableLocalUser <LocalUserName>
EnableLocalUser <LocalUserName>, <RemoteComputerName>

Enables a local user, if it is currently disabled.
Example: EnableLocalUser AcmeUser

EnableLocalUserMustChangePassword <LocalUserName>
EnableLocalUserMustChangePassword <LocalUserName>, <RemoteComputerName>

Sets the user to must change password at next logon.
Example: EnableLocalUserMustChangePassword AcmeUser

EnableLocalUserPasswordExpiry <LocalUserName>
EnableLocalUserPasswordExpiry <LocalUserName>, <RemoteComputerName>

Enables expiration of password for a local user.
Example: EnableLocalUserPasswordExpiry AcmeUser

RenameLocalUser <LocalUserName>, <NewLocalUserName>
RenameLocalUser <LocalUserName>, <NewLocalUserName>, <RemoteComputerName>

Renames a local user.
Example: RenameLocalUser AcmeUser, AcmeRenamedUser

SetLocalUserDescription <LocalUserName>, <Description>
SetLocalUserDescription <LocalUserName>, <Description>, <RemoteComputerName>

Changes the description of a local user.
Example: SetLocalUserDescription AcmeUser, Acme test user for demonstration purposes

SetLocalUserFullName <LocalUserName>, <Description>
SetLocalUserFullName <LocalUserName>, <Description>, <RemoteComputerName>

Changes the full name of a local user.
Example: SetLocalUserFullName AcmeUser, Acme test user

SetLocalUserHomeDir <LocalUserName>, <Path>
SetLocalUserHomeDir <LocalUserName>, <Path>, <RemoteComputerName>

Changes the home path of a local user. Enter blank path to clear the home path.

SetLocalUserHomeDrive <LocalUserName>, <Drive>
SetLocalUserHomeDrive <LocalUserName>, <Drive>, <RemoteComputerName>

Changes the home drive of a local user (e.g. H:). Enter blank path to clear the home drive.

SetLocalUserLogonScript <LocalUserName>, <File>
SetLocalUserLogonScript <LocalUserName>, <File>, <RemoteComputerName>

Changes the logon script path of a local user. Enter blank path to clear the logon script.

SetLocalUserPassword <LocalUserName>, <EncryptedPassword>
SetLocalUserPassword <LocalUserName>, <EncryptedPassword>, <RemoteComputerName>

Changes the password of a local user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: SetLocalUserPassword AcmeUser, Akut3sRS6e3kJHztyeqg9w==

SetLocalUserPasswordPlain <LocalUserName>, <PlainTextPassword>
SetLocalUserPasswordPlain <LocalUserName>, <PlainTextPassword>, <RemoteComputerName>

Changes the password of a local user. Password is entered as plain text. SetLocalUserPassword is recommended, unless the password is retrieved from user input.
Example: SetLocalUserPasswordPlain AcmeUser, AcmePassword

SetLocalUserProfilePath <LocalUserName>, <Path>
SetLocalUserProfilePath <LocalUserName>, <Path>, <RemoteComputerName>

Changes the profile path of a local user. Enter blank path to clear the profile path.

UnlockLocalUser <LocalUserName>
UnlockLocalUser <LocalUserName>, <RemoteComputerName>

Unlocks a local user, if it is currently locked.
Example: UnlockLocalUser AcmeUser
Mail

SendMail <SmtpServer>, <Port>, <SenderEmail>, <SenderDisplayName>, <ReceiverEmail>, <Subject>, <Body>
SendMail <SmtpServer>, <Port>, <SenderEmail>, <SenderDisplayName>, <ReceiverEmail>, <Subject>, <Body>, <UserName>, <EncryptedPassword>
SendMail <SmtpServer>, <Port>, <SenderEmail>, <SenderDisplayName>, <ReceiverEmail>, <Subject>, <Body>, <UserName>, <EncryptedPassword>, <ListOfAttachmentFiles>

Sends smtp email as html. ReceiverEMail can contain multiple email addresses by splitting with a | (pipe character). Use the FileContent function to get the body content from a file. Remember to quote body and subject if they contain commas. If the smtp server requires credentials, the Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: If Not Installed Microsoft Office Then SendMail mail.acme.com,25,mail-robot@acme.com,[UserFullName],helpdesk@acme.com,Installation Request,[UserFullName] needs installation of Microsoft Office on computer [ComputerName]

SendMailPlain <SmtpServer>, <Port>, <SenderEmail>, <SenderDisplayName>, <ReceiverEmail>, <Subject>, <Body>
SendMailPlain <SmtpServer>, <Port>, <SenderEmail>, <SenderDisplayName>, <ReceiverEmail>, <Subject>, <Body>, <UserName>, <EncryptedPassword>
SendMailPlain <SmtpServer>, <Port>, <SenderEmail>, <SenderDisplayName>, <ReceiverEmail>, <Subject>, <Body>, <UserName>, <EncryptedPassword>, <ListOfAttachmentFiles>

Sends smtp email as plain text. ReceiverEMail can contain multiple email addresses by splitting with a | (pipe character). Use the FileContent function to get the body content from a file. Remember to quote body and subject if they contain commas. If the smtp server requires credentials, the Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: If Not Installed Microsoft Office Then SendMailPlain mail.acme.com,25,mail-robot@acme.com,[UserFullName],helpdesk@acme.com,Installation Request,[UserFullName] needs installation of Microsoft Office on computer [ComputerName]

SendMailSSL <SmtpServer>, <Port>, <SenderEmail>, <SenderDisplayName>, <ReceiverEmail>, <Subject>, <Body>
SendMailSSL <SmtpServer>, <Port>, <SenderEmail>, <SenderDisplayName>, <ReceiverEmail>, <Subject>, <Body>, <UserName>, <EncryptedPassword>
SendMailSSL <SmtpServer>, <Port>, <SenderEmail>, <SenderDisplayName>, <ReceiverEmail>, <Subject>, <Body>, <UserName>, <EncryptedPassword>, <ListOfAttachmentFiles>

Sends smtp email as html through SSL connection. ReceiverEMail can contain multiple email addresses by splitting with a | (pipe character). Use the FileContent function to get the body content from a file. Remember to quote body and subject if they contain commas. If the smtp server requires credentials, the Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: If Not Installed Microsoft Office Then SendMail smtp.live.com,587,mail-robot@acme.com,[UserFullName],helpdesk@acme.com,Installation Request,[UserFullName] needs installation of Microsoft Office on computer [ComputerName]

SendMailSSLPlain <SmtpServer>, <Port>, <SenderEmail>, <SenderDisplayName>, <ReceiverEmail>, <Subject>, <Body>
SendMailSSLPlain <SmtpServer>, <Port>, <SenderEmail>, <SenderDisplayName>, <ReceiverEmail>, <Subject>, <Body>, <UserName>, <EncryptedPassword>
SendMailSSLPlain <SmtpServer>, <Port>, <SenderEmail>, <SenderDisplayName>, <ReceiverEmail>, <Subject>, <Body>, <UserName>, <EncryptedPassword>, <ListOfAttachmentFiles>

Sends smtp email as plain text through SSL connection. ReceiverEMail can contain multiple email addresses by splitting with a | (pipe character). Use the FileContent function to get the body content from a file. Remember to quote body and subject if they contain commas. If the smtp server requires credentials, the Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: If Not Installed Microsoft Office Then SendMailSSLPlain smtp.live.com,587,mail-robot@acme.com,[UserFullName],helpdesk@acme.com,Installation Request,[UserFullName] needs installation of Microsoft Office on computer [ComputerName]
Microsoft Office

DisableOfficeCloudPreference

Disables the cloud storage as default save location in Office.

EnableOfficeCloudPreference

Enables the cloud storage as default save location in Office.

SetExcelSavePath
SetExcelSavePath <Path>

Sets the default location of Microsoft Word saving. If not path is passed, the path is set to the default location, which is user's documents folder.

SetOfficeSavePath
SetOfficeSavePath <Path>

Sets the default location of Microsoft Word, Excel and PowerPoint saving in one command. If not path is passed, the path is set to the default location, which is user's documents folder.

SetOfficeUserInfo
SetOfficeUserInfo <CompanyName>

Sets the registry keys for user initials, user name and company name to the logged on user name, full name of the logged on user and the company named that FastTrack is licensed to.

SetPowerPointSavePath
SetPowerPointSavePath <Path>

Sets the default location of Microsoft PowerPoint saving. If not path is passed, the path is set to the default location, which is user's documents folder.

SetWordSavePath
SetWordSavePath <Path>

Sets the default location of Microsoft Word saving. If not path is passed, the path is set to the default location, which is user's documents folder.
Microsoft Outlook - Profiles

AddExchangeMailbox <MailServer>
AddExchangeMailbox <MailServer>, <MailboxName>

Adds an additional Exchange mailbox to Outlook with a default Exchange profile once for the current user. For advanced configuration, use the InstallOutlookProfile command. If you use both the InstallSignature and InstallOutlookSignature commands, you must use the InstallOutlookProfile command before using the InstallSignature command, as an Outlook profile is a prerequisite for installing a signature. If Microsoft Outlook is not installed, the command has no effect.

AddExchangeMailboxForced <MailServer>
AddExchangeMailboxForced <MailServer>, <MailboxName>

Adds an additional Exchange mailbox to Outlook profile for the current user. For advanced configuration, use the InstallOutlookProfileForced command. If you use both the InstallSignature and InstallOutlookProfileForced commands, you must use the InstallOutlookProfileForced command before using the InstallSignature command, as an Outlook profile is a prerequisite for installing a signature. If Microsoft Outlook is not installed, the command has no effect.

InstallExchangeProfile <MailServer>
InstallExchangeProfile <MailServer>, <MailboxName>

Configures Outlook with a new default Exchange profile once for the current user. For advanced configuration, use the InstallOutlookProfile command. If you use both the InstallSignature and InstallOutlookSignature commands, you must use the InstallOutlookProfile command before using the InstallSignature command, as an Outlook profile is a prerequisite for installing a signature. If Microsoft Outlook is not installed, the command has no effect.

InstallExchangeProfileForced <MailServer>
InstallExchangeProfileForced <MailServer>, <MailboxName>

Forces creation of a new Exchange Outlook profile for the current user. For advanced configuration, use the InstallOutlookProfileForced command. If you use both the InstallSignature and InstallOutlookProfileForced commands, you must use the InstallOutlookProfileForced command before using the InstallSignature command, as an Outlook profile is a prerequisite for installing a signature. If Microsoft Outlook is not installed, the command has no effect.

InstallOutlookProfile <FileName>

Imports a prf file (Microsoft Outlook profile file) once for Outlook configuration for the current user. Prf file must be in unicode format. If the file changes, the import will automatically run again. If you use both the InstallSignature and InstallOutlookProfile commands, you must use the InstallOutlookProfile command before using the InstallSignature, as an Outlook profile is a prerequisite for installing a signature. If Microsoft Outlook is not installed, the command has no effect. You can use any FastTrack function inside the prf file on the right side of equal signs. For example, if you define a variable named "RealUserName" before using this command, you can use "MailboxName=[Var RealUserName]" inside the prf file.

InstallOutlookProfileForced <FileName>

Forces a new import of a prf file (Microsoft Outlook profile file) for Outlook configuration for the current user. Prf file must be in unicode format. If you use both the InstallSignature and InstallOutlookProfileForced commands, you must use the InstallOutlookProfileForced command before using the InstallSignature, as an Outlook profile is a prerequisite for installing a signature. If Microsoft Outlook is not installed, the command has no effect. You can use any FastTrack function inside the prf file on the right side of equal signs. For example, if you define a variable named "RealUserName" before using this command, you can use "MailboxName=[Var RealUserName]" inside the prf file.
Microsoft Outlook - Signatures

ClearMeetingSignature
ClearMeetingSignature <MailboxName>

Clears the signature to be used automatically, when organizing a meeting.

DeleteAllSignatures

Deletes all signatures. Useful to clean existing signatures before using the signature installation commands.

DeleteSignature <SignatureName>

Deletes a Microsoft Outlook Signature for the current user, if it exists. If Microsoft Outlook is not installed, the command has no effect. .
Example: DeleteSignature Acme

DisableSignaturePrompt

Disables asking the user to confirm or edit Active Directory values before installing an Outlook signature when using the InstallSignature or InstallDefaultSignature commands. The command must be used before using the InstallSignature or InstallDefaultSignature command.

EnableSignaturePrompt
EnableSignaturePrompt <Days>

Enables asking the user to confirm or edit Active Directory values before installing an Outlook signature when using the InstallSignature or InstallDefaultSignature commands. Days means days between asking, no day meaning every time. If the prompt is not shown, the last entered data is used for signatures. The command must be used before using the InstallSignature or InstallDefaultSignature command. The MultiInput command is used to prompt for values. This means that modification of the MultiInput command will take effect. For example, if you insert a line before executing the signature install command saying "SetMultiInputOptional UserEMailAddress", the email address field is no longer mandatory to fill in. Refer to the Engine Browser tree under "Graphical User Interfaces -> Textual Input -> MultiInput Field Configuration" for more information.

EnableSignaturePromptOnce

Enables asking the user to confirm or edit Active Directory values before installing an Outlook signature when using the InstallSignature or InstallDefaultSignature commands. The command must be used before using the InstallSignature or InstallDefaultSignature command. The MultiInput command is used to prompt for values. This means that modification of the MultiInput command will take effect. For example, if you insert a line before executing the signature install command saying "SetMultiInputOptional UserEMailAddress", the email address field is no longer mandatory to fill in. Refer to the Engine Browser tree under "Graphical User Interfaces -> Textual Input -> MultiInput Field Configuration" for more information.

InstallDefaultNewSignature <SignatureFile>
InstallDefaultNewSignature <SignatureFile>, <SignatureName>
InstallDefaultNewSignature <SignatureFile>, <SignatureName>, <MailboxName>

Installs a Microsoft Outlook Signature file for the current user and sets it as the default signature for new emails (but not replies). If you use both the InstallDefaultSignature and InstallOutlookProfile commands, you must use the InstallOutlookProfile command before using the InstallDefaultSignature, as an Outlook profile is a prerequisite for installing a signature. This is the same as using the commands InstallSignature, SetReplyEmailSignature and SetNewEmailSignature in turn. If Microsoft Outlook is not installed, the command has no effect. The installation is instant and Outlook does not have to be closed to install it. The signature file can be generated in the script editor using the "Signature Builder" tool, or you can create it with another editor. All functions in the signature file will be replaced at runtime. If the name is omitted, the name of the file without extension will be used.
Example: InstallDefaultNewSignature Acme.rtf

InstallDefaultNewSignatureOnce <Version>, <SignatureFile>
InstallDefaultNewSignatureOnce <Version>, <SignatureFile>, <SignatureName>
InstallDefaultNewSignatureOnce <Version>, <SignatureFile>, <SignatureName>, <MailboxName>

Installs a Microsoft Outlook Signature file and sets it as the default signature for new emails (but not replies) for the current user one time after Outlook accounts are successfully set up. Changing the version will install one time again. If you use both the InstallDefaultSignature and InstallOutlookProfile commands, you must use the InstallOutlookProfile command before using the InstallDefaultSignature, as an Outlook profile is a prerequisite for installing a signature. This is the same as using the commands InstallSignature, SetReplyEmailSignature and SetNewEmailSignature in turn. If Microsoft Outlook is not installed, the command has no effect. The installation is instant and Outlook does not have to be closed to install it. The signature file can be generated in the script editor using the "Signature Builder" tool, or you can create it with another editor. All functions in the signature file will be replaced at runtime. If the name is omitted, the name of the file without extension will be used.
Example: InstallDefaultSignatureOnce 1.0,Acme.rtf

InstallDefaultReplySignature <SignatureFile>
InstallDefaultReplySignature <SignatureFile>, <SignatureName>
InstallDefaultReplySignature <SignatureFile>, <SignatureName>, <MailboxName>

Installs a Microsoft Outlook Signature file for the current user and sets it as the default signature for replies (but not for new emails). If you use both the InstallDefaultSignature and InstallOutlookProfile commands, you must use the InstallOutlookProfile command before using the InstallDefaultSignature, as an Outlook profile is a prerequisite for installing a signature. This is the same as using the commands InstallSignature, SetReplyEmailSignature and SetNewEmailSignature in turn. If Microsoft Outlook is not installed, the command has no effect. The installation is instant and Outlook does not have to be closed to install it. The signature file can be generated in the script editor using the "Signature Builder" tool, or you can create it with another editor. All functions in the signature file will be replaced at runtime. If the name is omitted, the name of the file without extension will be used.
Example: InstallDefaultReplySignature Acme.rtf

InstallDefaultReplySignatureOnce <Version>, <SignatureFile>
InstallDefaultReplySignatureOnce <Version>, <SignatureFile>, <SignatureName>
InstallDefaultReplySignatureOnce <Version>, <SignatureFile>, <SignatureName>, <MailboxName>

Installs a Microsoft Outlook Signature file and sets it as the default signature for emails replies (but not new emails) for the current user one time after Outlook accounts are successfully set up. Changing the version will install one time again. If you use both the InstallDefaultSignature and InstallOutlookProfile commands, you must use the InstallOutlookProfile command before using the InstallDefaultSignature, as an Outlook profile is a prerequisite for installing a signature. This is the same as using the commands InstallSignature, SetReplyEmailSignature and SetNewEmailSignature in turn. If Microsoft Outlook is not installed, the command has no effect. The installation is instant and Outlook does not have to be closed to install it. The signature file can be generated in the script editor using the "Signature Builder" tool, or you can create it with another editor. All functions in the signature file will be replaced at runtime. If the name is omitted, the name of the file without extension will be used.
Example: InstallDefaultSignatureOnce 1.0,Acme.rtf

InstallDefaultSignature <SignatureFile>
InstallDefaultSignature <SignatureFile>, <SignatureName>
InstallDefaultSignature <SignatureFile>, <SignatureName>, <MailboxName>

Installs a Microsoft Outlook Signature file for the current user and sets it as the default signature for new emails and replies. If you use both the InstallDefaultSignature and InstallOutlookProfile commands, you must use the InstallOutlookProfile command before using the InstallDefaultSignature, as an Outlook profile is a prerequisite for installing a signature. This is the same as using the commands InstallSignature, SetReplyEmailSignature and SetNewEmailSignature in turn. If Microsoft Outlook is not installed, the command has no effect. The installation is instant and Outlook does not have to be closed to install it. The signature file can be generated in the script editor using the "Signature Builder" tool, or you can create it with another editor. All functions in the signature file will be replaced at runtime. If the name is omitted, the name of the file without extension will be used.
Example: InstallDefaultSignature Acme.rtf

InstallDefaultSignatureOnce <Version>, <SignatureFile>
InstallDefaultSignatureOnce <Version>, <SignatureFile>, <SignatureName>
InstallDefaultSignatureOnce <Version>, <SignatureFile>, <SignatureName>, <MailboxName>

Installs a Microsoft Outlook Signature file and sets it as the default signature for new emails and replies for the current user one time after Outlook accounts are successfully set up. Changing the version will install one time again. If you use both the InstallDefaultSignature and InstallOutlookProfile commands, you must use the InstallOutlookProfile command before using the InstallDefaultSignature, as an Outlook profile is a prerequisite for installing a signature. This is the same as using the commands InstallSignature, SetReplyEmailSignature and SetNewEmailSignature in turn. If Microsoft Outlook is not installed, the command has no effect. The installation is instant and Outlook does not have to be closed to install it. The signature file can be generated in the script editor using the "Signature Builder" tool, or you can create it with another editor. All functions in the signature file will be replaced at runtime. If the name is omitted, the name of the file without extension will be used.
Example: InstallDefaultSignatureOnce 1.0,Acme.rtf

InstallSignature <SignatureFile>
InstallSignature <SignatureFile>, <SignatureName>

Installs a Microsoft Outlook Signature file for the current user. If you use both the InstallSignature and InstallOutlookProfile (or InstallExchangeProfile) commands, you must use the InstallOutlookProfile command before using the InstallSignature, as an Outlook profile is a prerequisite for installing a signature. If Microsoft Outlook is not installed or it has no accounts set up, the command has no effect. The installation is instant and Outlook does not have to be closed to install it. The signature file can be generated in the script editor using the "Signature Builder" tool, or you can create it with another editor. All functions in the signature file will be replaced at runtime. If the name is omitted, the name of the file without extension will be used.
Example: InstallSignature Acme.rtf

InstallSignatureOnce <Version>, <SignatureFile>
InstallSignatureOnce <Version>, <SignatureFile>, <SignatureName>

Installs a Microsoft Outlook Signature file for the current user one time after Outlook accounts are successfully set up. Changing the version will install one time again. If you use both the InstallSignature and InstallOutlookProfile (or InstallExchangeProfile) commands, you must use the InstallOutlookProfile command before using the InstallSignature, as an Outlook profile is a prerequisite for installing a signature. If Microsoft Outlook is not installed or it has no accounts set up, the command has no effect. The installation is instant and Outlook does not have to be closed to install it. The signature file can be generated in the script editor using the "Signature Builder" tool, or you can create it with another editor. All functions in the signature file will be replaced at runtime. If the name is omitted, the name of the file without extension will be used.
Example: InstallSignatureOnce 1.0,Acme.rtf

LockSignatures

Disables the Outlook edit buttons in the signature designer for the current user.

LockStationery

Disables the Outlook stationery settings (custom themes, fonts, etc) for the current user.

SetMeetingSignature <SignatureName>
SetMeetingSignature <SignatureName>, <MailboxName>

Sets a signature to be used automatically, when organizing a meeting. Note that this command will install an Outlook addin.
Example: SetMeetingSignature Acme

SetNewEmailSignature <SignatureName>
SetNewEmailSignature <SignatureName>, <MailboxName>

Sets the default email signature for new emails. If Microsoft Outlook is not installed, the command has no effect.
Example: SetNewEmailSignature Acme

SetReplyEmailSignature <SignatureName>
SetReplyEmailSignature <SignatureName>, <MailboxName>

Sets the default email signature for email replies. If Microsoft Outlook is not installed, the command has no effect.
Example: SetReplyEmailSignature Acme

SetSignatureValues <SignatureFile>
SetSignatureValues <SignatureFile>, <HeaderText>

Does the same as using EnableSignaturePrompt to enable prompting the user to confirm or edit Active Directory values before installing an Outlook signature - except the operation is split in two. The advantage of that is that data can be verified in a script before installing the signature. A variable named the same as the Active Directory command will be returned. For example, if "UserFullName" is used, a variable by that name is created. You must use this command before using InstallSignature or InstallDefaultSignature commands. The MultiInput command is used to prompt for values. This means that modification of the MultiInput command will take effect. For example, if you insert a line before executing the signature install command saying "SetMultiInputOptional UserEMailAddress", the email address field is no longer mandatory to fill in. Refer to the Engine Browser tree under "Graphical User Interfaces -> Textual Input -> MultiInput Field Configuration" for more information.

UninstallOutlookAddIn

Removes the FastTrack Outlook Add-In.

UnlockSignatures

Enables the Outlook edit buttons in the signature designer for the current user.

UnlockStationery

Enables the Outlook stationery settings for the current user.
Microsoft Outlook - Storage Files

BackupPSTFiles <DestPath>

Synchronizes all the users' Outlook PST files (Personal Storage Table) to the backup destination, while only copying bit-level changes on large files. PST files that are removed will not be removed automatically in the destination folder. If Outlook is open, a graceful shutdown screen will be shown. If the user does not react within 30 seconds, Outlook is forcibly closed. PST files are saved by their file name only without a directory structure in the destination. However, if the same PST file name is used in multiple directories, a tree is created in the destination folder instead of flattening directories. BackupPSTFiles is essentially a specialized version of SyncDir. All rules and settings that applies to SyncDir, also applies to BackupPSTFiles.
Microsoft Outlook - vCards

DisableNewEmailVCard
DisableNewEmailVCard <EmailAddress>

Clears vcard attaching for new emails.

DisableReplyEmailVCard
DisableReplyEmailVCard <EmailAddress>

Clears vcard attaching for replying to emails.

DisableSignatureVCard <SignatureName>

Clears vcard attaching for signatures.

EnableNewEmailVCard
EnableNewEmailVCard <EmailAddress>

Enables attaching a vcard file to new emails (not related to the signature). Note that this command will install an Outlook addin.

EnableReplyEmailVCard
EnableReplyEmailVCard <EmailAddress>

Enables attaching a vcard file to when replying to emails (not related to the signature). Note that this command will install an Outlook addin.

EnableSignatureNewEmailVCard <SignatureName>
EnableSignatureNewEmailVCard <SignatureName>, <EmailAddress>

Enables attaching a vcard file to new emails (not related to the signature). Note that this command will install an Outlook addin.

EnableSignatureVCard <SignatureName>

Enables attaching a vcard file as part of the signature.

GenerateVCardFile <VCardFile>

Generates a vcard (.vcf) file based on Active Directory data. If a signature has been installed with pop-up window to correct data, these data will be used instead, when possible.
MultiMedia

Beep

Plays the system beep sound.

PlaySound <SoundFile>

Plays a sound file asynchronously.
Network - Adapters

DisableAdapter <ConnectionName>

Disables a network adapter in the computer. Requires Windows Vista or newer. THe executing user must be administrator and not under User Account Control (UAC). Use the ElevateUser command first to elevate the current user, if needed.

EnableAdapter <ConnectionName>

Enables a network adapter in the computer. Requires Windows Vista or newer. THe executing user must be administrator and not under User Account Control (UAC). Use the ElevateUser command first to elevate the current user, if needed.

SetAdapterAutoDNS
SetAdapterAutoDNS <ConnectionName>

Sets automatic DNS detection of the fastest active network adapter in the computer. To set properties of a specific adapter, specify ConnectionName as the name in the Control Panel, for instance "Local Area Connection". If the connection name is dynamic, you can create a loop with the "NetworkAdapters" collection and in the loop for example check ip addresses or manufacturer. Use the SetAllAdaptersAutoDNS command to set automatic detection for all adapters in the computer.

SetAdapterDHCP
SetAdapterDHCP <ConnectionName>

Enables DHCP of the fastest active network adapter in the computer. To set properties of a specific adapter, specify ConnectionName as the name in the Control Panel, for instance "Local Area Connection". If the connection name is dynamic, you can create a loop with the "NetworkAdapters" collection and in the loop for example check ip addresses or manufacturer. Use the SetAllAdaptersDHCP command to enabled DHCP for all adapters in the computer.

SetAdapterDNS <ListOfDNSServers>
SetAdapterDNS <ListOfDNSServers>, <ConnectionName>

Sets the DNS information of the fastest active network adapter in the computer. To set properties of a specific adapter, specify ConnectionName as the name in the Control Panel, for instance "Local Area Connection". If the connection name is dynamic, you can create a loop with the "NetworkAdapters" collection and in the loop for example check ip addresses or manufacturer. Use the SetAllAdaptersDNS command to set DNS of all adapters in the computer. ListOfDNSServers simply means a dynamic number of parameters/DNSServers; there can be any number of parameters from none to an infinite number of parameters.
Example: SetAdapterDNS 192.168.1.3,192.168.1.4

SetAdapterIP <ListOfIPAddresses>, <SubnetMask>, <DefaultGateway>
SetAdapterIP <ListOfIPAddresses>, <SubnetMask>, <DefaultGateway>, <ConnectionName>

Sets one or more static IP address of the fastest active network adapter in the computer. DNS information must be set with SetAdapterDNS. To set properties of a specific adapter, specify ConnectionName as the name in the Control Panel, for instance "Local Area Connection". If the connection name is dynamic, you can create a loop with the "NetworkAdapters" collection and in the loop for example check ip addresses or manufacturer.
Example: SetAdapterIP 192.168.1.3,255.255.255.0,192.168.1.1

SetAllAdaptersAutoDNS

Set automatic DNS detection of all network adapters in the computer.

SetAllAdaptersDHCP
SetAllAdaptersDHCP <ConnectionName>

Enables DHCP of all IP enabled network adapters in the computer.

SetAllAdaptersDNS <ListOfDNSServers>

Sets the DNS information on all network adapters in the computer. ListOfDNSServers simply means a dynamic number of parameters/DNSServers; there can be any number of parameters from none to an infinite number of parameters.
Example: SetAllAdaptersDNS 192.168.1.3,192.168.1.4
Network

FlushDNSCache

Flushes local DNS cache.

JoinDomain <DomainName>
JoinDomain <DomainName>, <UserName>, <EncryptedPassword>
JoinDomain <DomainName>, <UserName>, <EncryptedPassword>, <RemoteComputerName>

Joins a computer to a domain. The local computer is assumed unless RemoteComputerName is specified. A reboot is required after the domain is joined; use RebootForced to perform a forced reboot. Note that renaming a machine and joining a domain can be done with only one reboot on operating systems never than Windows XP, by first using RenameLocalComputer and then JoinDomain. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: JoinDomain Acme,AcmeAdmin,<EncryptedPassword>

JoinDomainAndOU <DomainName>, <OrganizationalUnit>
JoinDomainAndOU <DomainName>, <OrganizationalUnit>, <UserName>, <EncryptedPassword>
JoinDomainAndOU <DomainName>, <OrganizationalUnit>, <UserName>, <EncryptedPassword>, <RemoteComputerName>

Joins the computer to a domain and puts it in a specific organizational unit. The local computer is assumed unless RemoteComputerName is specified. A reboot is required after the domain is joined; use RebootForced to perform a forced reboot. The name of the OU must be the full path in quotes, for example "OU=Sales,DC=Acme,DC=com" inside quotes. Note that renaming a machine and joining a domain can be done with only one reboot on operating systems never than Windows XP, by first using RenameLocalComputer and then JoinDomainAndOU. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: JoinDomainAndOU Acme,"OU=Sales,DC=Acme,DC=com",AcmeAdmin,<EncryptedPassword>

ReleaseIP

Release IP addresses of all network adapters.

RenewIP

Renews IP addresses of all network adapters.

UnjoinDomain
UnjoinDomain <UserName>, <EncryptedPassword>
UnjoinDomain <UserName>, <EncryptedPassword>, <RemoteComputerName>

Unjoins the domain, if member. A reboot is required after unjoining; use RebootForced to perform a forced reboot. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Offline Folders

AddOfflineFolder <UNCPath>

Adds an UNC path to the list of offline folders.

DisableOfflineFolders

Disables offline folders feature. Make sure the current user has permission to change the state and the group policies does not block the change.

EnableOfflineFolders

Enables offline folders feature. Make sure the current user has permission to change the state and the group policies does not block the change.

OfflineSyncFolder <UNCPath>

Synchronizes the UNC path offline folder.

RemoveOfflineFolder <UNCPath>

Removes an UNC path from the list of offline folders.
OneDrive For Business

ConnectOneDrive <DriveLetter>:, <TenantName>
ConnectOneDrive <DriveLetter>:, <TenantName>, <DisplayName>

Connects a OneDrive for Business folder (personal SharePoint folder) at sharepoint.com as a non-persistent drive. The tenant name is your tenant name from Azure AD. If your url for SharePoint is for example https://acme-my.sharepoint.com, then tenant name is acme. The reason you need to supply the tenant name is to prevent users from mapping onedrives from other companies. The Office 365 logon page will automatically appear at logon to authenticate. The user can use the remember me option to be prompted once only. OneDrive personal is not supported. Instead of tenant name, you can specify a full url to a custom login page for OneDrive for business. The login page must end on the personal OneDrive business to work. When you only specify tenant name, the url is implicitly http://<tenantname>.onedrive.com. The command has no effect when executed as part of a RemoteApp logon script, because it's not possible to authenticate without user interacation.
Example: ConnectOneDrive J:,acme

ConnectPersistentOneDrive <DriveLetter>:, <TenantName>
ConnectPersistentOneDrive <DriveLetter>:, <TenantName>, <DisplayName>

Connects a OneDrive for Business folder (personal SharePoint folder) at sharepoint.com as a persistent drive. The tenant name is your tenant name from Azure AD. If your url for SharePoint is for example https://acme-my.sharepoint.com, then tenant name is acme. The reason you need to supply the tenant name is to prevent users from mapping onedrives from other companies. The Office 365 logon page will automatically appear at logon to authenticate. The user can use the remember me option to be prompted once only. OneDrive personal is not supported. The command has no effect when executed as part of a RemoteApp logon script, because it's not possible to authenticate without user interacation.
Example: ConnectPersistentOneDrive J:,acme
Operating System

DisableAutoLogon

Disables automatic logon to the computer.

DisableLogoff

Temporarily removes the logoff option in Windows. This command requires local admin rights and UAC elevation (see www.fasttrackscript.com/uac for more information on UAC). Use the EnableLogoff command to enable the menus again. If you forget to do it or the script fails, the restoration of the menus will automatically happen, when the current (or any other) instance FSH.Exe terminates.

DisableShutdown

Temporarily removes shutdown, restart, hibernation and sleep options in Windows. Useful for installations to prevent restart during an installation. This command requires local admin rights and UAC elevation (see www.fasttrackscript.com/uac for more information on UAC). Use the EnableShutdown command to enable the menus again. If you forget to do it or the script fails, the restoration of the menus will automatically happen, when the current (or any other) instance FSH.Exe terminates.

EnableAutoLogon <UserName>, <Password>

Enables automatic logon to the computer. If the user is a domain user, always prefix with domain in the username in the format <DomainName>\<UserName>. Note that auto logon is a security risk. The password must NOT be encrypted, because it will be unencrypted in the registry and any user on the machine can read the password in the registry. This is by design from Microsoft.
Example: EnableAutoLogon Administrator,MyAdminPassword

EnableLogoff

Enables the logoff option in Windows. Used to restore the options from the DisableLogoff command.

EnableShutdown

Enables shutdown, restart, hibernation and sleep options. Used to restore the options from the DisableShutdown command.

Logoff

Logs off the current user, not forcing the logoff. The logged on user can cancel the logoff.

LogoffForced

Logs off the current user, forcing the logoff, effectively disabling the logged on user to save open files.

Reboot

Reboots the system, not forcing the reboot. The logged on user can cancel the reboot.

RebootForced

Reboots the system, forcing the reboot, effectively disabling the logged on user to save open files.

RefreshEnvironment

Tells Windows that settings in the environment has changed and must be refreshed. If you for instance change the wallpaper registry key and want Windows to reflect the change in the current session, you can do this with RefreshEnvironment.

RefreshPolicy

Forces a refresh of group polices for the local computer and current user.

ShutDown

Shuts down the system, not forcing the shutdown. The logged on user can cancel the shutdown.

ShutDownForced

Shuts down the system, forcing the shutdown, effectively disabling the logged on user to save open files.
Printers - IP Printers

ConnectIPPrinter <HostOrIPAddress>, <DisplayName>, <DriverName>
ConnectIPPrinter <HostOrIPAddress>, <DisplayName>, <DriverName>, <Port>
ConnectIPPrinter <HostOrIPAddress>, <DisplayName>, <DriverName>, <Port>, <InfFile>
ConnectIPPrinter <HostOrIPAddress>, <DisplayName>, <DriverName>, <Port>, <InfFile>, <InfFile32Bit>

Connects an IP based printer, if it is not already connected. Default port is 9100. The driver name must be spelled correctly. If the driver is not already installed, point to an inf file containing the driver. Observe that it is needed to add the ClassGUID from the inf file under group policy to allow the installation of the driver under " Computer Configuration -> Policies -> Administrative Templates -> System -> Driver Installation -> Allow non-administrators to install drivers for these device setup classes". If your environment is mixed between 32 and 64 bit and the drivers are different, use the last parameter to point to 32-bit driver to be used for 32-bit machines only.
Example: ConnectIPPrinter 192.168.1.84,Reception Printer,HP LaserJet 200 color MFP M276 PCL 6

ConnectIPPrinterAsDefault <HostOrIPAddress>, <DisplayName>, <DriverName>
ConnectIPPrinterAsDefault <HostOrIPAddress>, <DisplayName>, <DriverName>, <Port>
ConnectIPPrinterAsDefault <HostOrIPAddress>, <DisplayName>, <DriverName>, <Port>, <InfFile>
ConnectIPPrinterAsDefault <HostOrIPAddress>, <DisplayName>, <DriverName>, <Port>, <InfFile>, <InfFile32Bit>

Connects an IP based printer, if it is not already connected and sets it as default printer. Default port is 9100. The driver name must be spelled correctly. If the driver is not already installed, point to an inf file containing the driver. Observe that it is needed to add the ClassGUID from the inf file under group policy to allow the installation of the driver under " Computer Configuration -> Policies -> Administrative Templates -> System -> Driver Installation -> Allow non-administrators to install drivers for these device setup classes".
Example: ConnectIPPrinterAsDefault 192.168.1.84,HP Printer,HP LaserJet 200 color MFP M276 PCL 6

DisconnectIPPrinter <HostOrIPAddress>

Disconnects a network printer.
Example: DisconnectIPPrinter 192.168.1.84

InstallPrinterDriver <DriverName>, <InfFile>

The driver name must be spelled correctly. The typical port is 9100. If the driver is not already installed, point to an inf file containing the driver. Observe that it is needed to add the ClassGUID from the inf file under group policy to allow the installation of the driver under " Computer Configuration -> Policies -> Administrative Templates -> System -> Driver Installation -> Allow non-administrators to install drivers for these device setup classes".
Example: InstallPrinterDriver HP LaserJet 200 color MFP M276 PCL 6,\\AcmeServer\Drivers$\hpcm276u.inf
Printers - Locations

ClearPrinterLocations

Removes all printer locations set by the SetPrinterLocation command.

ConnectPrinterLocation
ConnectPrinterLocation <LocationName>

Connects printers for a printer menu item location. If no location is specificed, the last location chosen by the PrinterLocationMenu or PrinterLocationListMenu command is used. The command has no effect when executed as part of a RemoteApp logon script, because it's not possible to ask for location.

SetPrinterLocation <LocationName>, <ListOfPrinters>

Sets a print menu option for one location. First printer will be the default printer. Must be a list of printers as UNC paths. To include IP printers, add all parameters in quote as they would be used with the ConnectIPPrinter command, for example SetPrinterLocation Reception "192.168.1.84,Reception Printer,HP Driver", "192.168.1.88,Reception Color Printer,HP Driver",.
Example: SetPrinterLocation Reception,\\AcmePrintServer\AcmePrt25,\\AcmePrintServer\AcmePrt22,\\AcmePrintServer\AcmePrt21
Printers

ConnectPrinter <UNCPath>

Connects a network printer, if it is not already connected. Notice that you should set a Group Policy setting for disabling printer driver warnings. In your Group Policies, locate "Point and Print Restrictions" under "Computer Configuration -> Policies -> Administrative Templates -> Printers" and set to "Disabled".
Example: ConnectPrinter \\AcmePrintServer\AcmePrt25

ConnectPrinterAsDefault <UNCPath>

Connects a network printer, if it is not already connected. The printer is set as the default printer. Notice that you should set a Group Policy setting for disabling printer driver warnings. In your Group Policies, locate "Point and Print Restrictions" under "Computer Configuration -> Policies -> Administrative Templates -> Printers" and set to "Disabled".
Example: ConnectPrinter \\AcmePrintServer\AcmePrt25

DisablePrintRestrictions

Disables restrictions on installing printer drivers. Requires local admin rights and UAC elevation.

DisconnectAllPrinters

Disconnects all network printers. Network printers are defined as either server printer mapped through UNC or IP printers connected using the ConnectIPPrinter command. Other IP printers mapped by the end user (such as an IP printer at the home address) are not disconnected.

DisconnectNonConnectedPrinters

Will disconnect any network printer that has not been connected with the current script. Very useful for disconnecting all printers the user has no need for, for instance when changing location. Unlike a share connection, connecting a printer is slow, making a disconnect and connect very slow. Use ConnectPrinter for each printer and use DisconnectNonConnectedPrinters to disconnect the rest of the network printers. Observe that the disconnection will not happen until the script exits. This is to avoid accidentally disconnecting all printers, if DisconnectNonConnectedPrinters is fired before ConnectPrinter, which would in effect disconnect all printers and make a slow reconnection of all printers.

DisconnectPrinter <UNCPath>

Disconnects a network printer.
Example: DisconnectPrinter \\AcmePrintServer\AcmePrt25

EnablePrintRestrictions

Enables restrictions on installing printer drivers to default. Requires local admin rights and UAC elevation.

SetDefaultPrinterMode <DefaultPrinterMode>

Behavior for setting default printer. Mode can be "Always", "Once", "Never" or "NetworkOnly". Always is default and means that when setting a default printer using either command ConnectPrinterAsDefault, SetPrinterDefault or ConnectPrinterLocation, it will always happen. Never means that default printer is never changed and once means only first time, so the user can change the default printer afterwards without it being changed next time the script runs. NetworkOnly means that the default printer is only changed, if the current default printer is not a local printer.
Example: SetDefaultPrinterMode NetworkOnly

SetPrinterDefault <Name>

Sets the default printer. For a local printer, use the name displayed in the control panel. For a network printer, use the unc path.
Example: SetPrinterDefault \\AcmePrintServer\AcmePrt25
Processes - User Processes

HideUserProcess <ProcessName>

Hides all windows with the specified partial caption for the current user.
Example: HideUserProcess Notepad

KillUserProcess <ProcessName>

Kills the specified process if it is running. Processes running under other accounts are ignored, which is useful for Remote Desktop Services user scripts.
Example: KillUserProcess Setup.Exe

ShowUserProcess <Caption>

Shows all windows with the specified partial caption for the current user. Useful for unhiding processes hidden by using the HideUserProcess command.
Example: ShowUserProcess Notepad

WaitForUserProcess <ProcessName>

Waits for the specified process to start and stop. Processes running under other accounts are ignored, which is useful for Remote Desktop Services user scripts.
Example: WaitForUserProcess Setup.Exe

WaitForUserProcessComplete <ProcessName>

Waits for the specified process to complete. Processes running under other accounts are ignored, which is useful for Remote Desktop Services user scripts.
Example: WaitForUserProcessComplete Setup.Exe

WaitForUserProcessStart <ProcessName>

Waits for the specified process to start. Processes running under other accounts are ignored, which is useful for Remote Desktop Services user scripts.
Example: WaitForUserProcessStart Setup.Exe
Processes - Windows

HideWindow <Caption>

Hides all windows with the specified partial caption for the current user.
Example: HideWindow Notepad

KillWindow <Caption>

Kills all windows with the specified partial caption for the current user.
Example: KillWindow Notepad

ShowWindow <Caption>

Shows all windows with the specified partial caption for the current user. Usefule for unhiding processes hidden by using the HideWindow command.
Example: ShowWindow Notepad

WaitForWindow <Caption>

Waits for the specified window to open and close for the current user. The caption can be partial.
Example: WaitForWindow Untitled - Notepad

WaitForWindowClose <Caption>

Waits for the specified window to close for the current user. The caption can be partial.
Example: WaitForWindowClose Notepad

WaitForWindowOpen <Caption>

Waits for the specified window to open for the current user. The caption can be partial.
Example: WaitForWindowOpen Notepad
Processes

HideProcess <ProcessName>

Hides all windows with the specified partial caption for all logged on users.
Example: HideProcess Notepad

KillProcess <ProcessName>

Kills the specified process if it is running.
Example: KillProcess Setup.Exe

ShowProcess <Caption>

Shows all windows with the specified partial caption for all logged on users. Useful for unhiding processes hidden by using the HideProcess command.
Example: ShowProcess Notepad

WaitForProcess <ProcessName>
WaitForProcess <ProcessName>, <RemoteComputerName>

Waits for the specified process to start and stop.
Example: WaitForProcess Setup.Exe

WaitForProcessComplete <ProcessName>
WaitForProcessComplete <ProcessName>, <RemoteComputerName>

Waits for the specified process to complete.
Example: WaitForProcessComplete Setup.Exe

WaitForProcessStart <ProcessName>
WaitForProcessStart <ProcessName>, <RemoteComputerName>

Waits for the specified process to start.
Example: WaitForProcessStart Setup.Exe
Registry - 32 Bit

CreateRegistryKeyx86 <RegistryKey>

Creates a registry key with nothing in it, if it does not exist. Any missing keys in the path are created recursively. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Key is created in the redirected registry for 32-bit applications on a 64-bit operating system. Works the same as CreateRegistryKey on a 32-bit operating system and for non-redirected keys.
Example: CreateRegistryKeyx86 HKCU\Software\Acme

DeleteRegistryKeyx86 <RegistryKey>

Deletes a registry key including anything below it if it exists. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Key is deleted in the redirected registry for 32-bit applications on a 64-bit operating system. Works the same as DeleteRegistryKey on a 32-bit operating system and for non-redirected keys.
Example: DeleteRegistryKeyx86 HKCU\Software\Acme

DeleteRegistryValuex86 <RegistryKey>, <Value>

Deletes a registry value if it exists. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Value is deleted in the redirected registry for 32-bit applications on a 64-bit operating system. Works the same as DeleteRegistryValue on a 32-bit operating system and for non-redirected keys.
Example: DeleteRegistryValuex86 HKCU\Software\Acme,DefaultSavePath

WriteRegistryBinaryValuex86 <RegistryKey>, <Value>, <Data>

Writes data to a binary registry value in hex format. RegistryKey is registry key itself appended by backslash and the name of the value. Value is written to the redirected registry for 32-bit applications on a 64-bit operating system. Works the same as WriteRegistry on a 32-bit operating system and for non-redirected keys. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Any missing keys will be created recursively. Value must be a comma separated list of hex values (e.g. 6C,4A,40,23).

WriteRegistryBinaryx86 <RegistryKey>, <Data>

Writes data to a binary registry value in hex format. RegistryKey is registry key itself appended by backslash and the name of the value. Value is written to the redirected registry for 32-bit applications on a 64-bit operating system. Works the same as WriteRegistry on a 32-bit operating system and for non-redirected keys. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Any missing keys will be created recursively. Value must be a comma separated list of hex values (e.g. 6C,4A,40,23).

WriteRegistryValuex86 <RegistryKey>, <Value>, <Data>
WriteRegistryValuex86 <RegistryKey>, <Value>, <Data>, <RegType>

Writes data to a registry value. Value is written to the redirected registry for 32-bit applications on a 64-bit operating system. Works the same as WriteRegistry on a 32-bit operating system and for non-redirected keys. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Any missing keys will be created recursively. If type is omitted, a string is assumed. RegType can be "REG_SZ" (default), "REG_DWORD" (numeric), "REG_QWORD" (64-bit numeric), "REG_EXPAND_SZ", "REG_MULTI_SZ" (lines separated by carriage return for example using the [Return] function) or "REG_BINARY" (will be converted to text - use WriteRegistryValueBinaryx86 to write as a list of hex values).
Example: WriteRegistryValuex86 HKCU\Software\Acme,DefaultSavePath,[UserDocumentsDir]

WriteRegistryx86 <RegistryKey>, <Data>
WriteRegistryx86 <RegistryKey>, <Data>, <RegType>

Writes data to a registry value. RegistryKey is registry key itself appended by backslash and the name of the value. Value is written to the redirected registry for 32-bit applications on a 64-bit operating system. Works the same as WriteRegistry on a 32-bit operating system and for non-redirected keys. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Any missing keys will be created recursively. If type is omitted, a string is assumed. RegType can be "REG_SZ" (default), "REG_DWORD" (numeric), "REG_QWORD" (64-bit numeric), "REG_EXPAND_SZ", "REG_MULTI_SZ" (lines separated by carriage return for example using the [Return] function) or "REG_BINARY" (will be converted to text - use WriteRegistryValueBinaryx86 to write as a list of hex values).
Example: WriteRegistryx86 HKCU\Software\Acme\DefaultSavePath,[UserDocumentsDir]
Registry - Permissions

AddRegistryPermissions <RegistryPath>, <ACL>

Removes inherited permissions and ensures the defined accounts have the defined access to the registry key including all subkeys and subvalues. If the accounts already have permissions, they will be changed to the new access right. Any accounts not specified, will keep their existing access rights. ACL (Access Control List) is as a comma separated ACE (Access Control Entry) list in the format [<Domain>\]<AccountName>:<AccessRight>. Account name can be a user or a group. AccessRight is typically 'Read' or 'Full Control' (or abbreviated to R and FC respectively); for a full list of access rights, click the "Show" icon on the "Scripting" tab in the script editor and select "Extended Attributes". Registry roots keys HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. To add multiple access rights to the same user, add the user more than once in the list. Use SetRegistryPermissions to specify a new ACL instead of replacing permissions. Requires admin privileges.
Example: AddRegistryPermissions HKLM\Software\Acme,Acme\CRMUsers:Read

AddRegistryPermissionsDenied <RegistryPath>, <ACL>

Removes inherited permissions and denies access to the registry key including all subkeys and subvalues. ACL (Access Control List) is as a comma separated ACE (Access Control Entry) list in the format [<Domain>\]<AccountName>:<AccessRight>. Account name can be a user or a group. AccessRight is typically 'Read' or 'Full Control' (or abbreviated to R and FC respectively); for a full list of access rights, click the "Show" icon on the "Scripting" tab in the script editor and select "Extended Attributes". Registry roots keys HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. To add multiple access rights to the same user, add the user more than once in the list. Use SetDirPermissions to specify a full ACL list. Requires admin privileges.
Example: AddRegistryPermissionsDenied HKLM\Software\Acme,Acme\CRMUsers:Read

AddRegistryPermissionsInherited <RegistryPath>

Sets the registry and all subkey and subvalues to inherit permissions from its parent, but preserves added permissions. Registry roots keys HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Requires admin privileges.
Example: SetRegistryPermissionsInherited HKLM\Software\Acme

RemoveRegistryPermissions <RegistryPath>, <AccountName>

Removes inherited permissions and removes the specified account name from the ACL (Access Control List) on the registry key including all subkeys and subvalues. Account name can be a user or a group in the format [<Domain>\]<AccountName>. When specifying a specific user, be aware that the user can still have access, if the user is a member of a group that still has access. Registry roots keys HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Requires admin privileges.
Example: RemoveRegistryPermissions HKLM\Software\Acme,Acme\CRMUsers

SetRegistryOwner <RegistryPath>, <AccountName>

Sets the owner of to the specified account name including all subkeys and subvalues.
Example: SetRegistryOwner HKLM\Software\Acme,[LocalSystemAccount]

SetRegistryPermissions <RegistryPath>, <ACL>

Removes inherited permissions and sets the registry permissions including all subkeys and subvalues. ACL (Access Control List) is as a comma separated ACE (Access Control Entry) list in the format [<Domain>\]<AccountName>:<AccessRight>. Account name can be a user or a group. AccessRight is typically 'Read' or 'Full Control' (or abbreviated to R and FC respectively); for a full list of access rights, click the "Show" icon on the "Scripting" tab in the script editor and select "Extended Attributes". Registry roots keys HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. To add multiple access rights to the same user, add the user more than once in the list. Use AddRegistryPermissions, AddRegistryPermissionsDenied and RemoveRegistryPermissions to modify to an existing ACL instead of creating a new one. Requires admin privileges.
Example: SetRegistryPermissions HKLM\Software\Acme,Acme\Domain Users:Read,Acme\Domain Admins:Full Control

SetRegistryPermissionsInherited <RegistryPath>

Sets the registry and all subkey and subvalues to inherit permissions from its parent. Registry roots keys HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Requires admin privileges.
Example: SetRegistryPermissionsInherited HKLM\Software\Acme
Registry

CreateRegistryKey <RegistryKey>

Creates a registry key with nothing in it, if it does not exist. Any missing keys in the path are created recursively. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR.
Example: CreateRegistryKey HKCU\Software\Acme

DeleteRegistryKey <RegistryKey>

Deletes a registry key including anything below it if it exists. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR.
Example: DeleteRegistryKey HKCU\Software\Acme

DeleteRegistryValue <RegistryKey>, <Value>

Deletes a registry value if it exists. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR.
Example: DeleteRegistryValue HKCU\Software\Acme,DefaultSavePath

ImportRegFile <RegFile>

Imports a Windows Registry file (.reg) into the registry. This command is only usable using the system account or similar, as User Account Control (UAC) will stop and ask for confirmation to import for users under User Account Control. Reg files can generated by exporting settings with regedit.exe.
Example: ImportRegFile Settings.Reg

WriteRegistry <RegistryKey>, <Data>
WriteRegistry <RegistryKey>, <Data>, <RegType>

Writes data to a registry value. RegistryKey is registry key itself appended by backslash and the name of the value. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Any missing keys will be created recursively. If type is omitted, a string is assumed. RegType can be "REG_SZ" (default), "REG_DWORD" (numeric), "REG_QWORD" (64-bit numeric), "REG_EXPAND_SZ", "REG_MULTI_SZ" (lines separated by carriage return for example using the [Return] function) or "REG_BINARY" (will be converted to text - use WriteRegistryBinary to write as a list of hex values).
Example: WriteRegistry HKCU\Control Panel\Desktop\WallPaper,[WinDir]\Acme.png

WriteRegistryBinary <RegistryKey>, <Data>

Writesdata to a binary registry value in hex format. RegistryKey is registry key itself appended by backslash and the name of the value. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Any missing keys will be created recursively. Value must be a comma separated list of hex values (e.g. 6C,4A,40,23).

WriteRegistryBinaryValue <RegistryKey>, <Value>, <Data>

Writesdata to a binary registry value in hex format. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Any missing keys will be created recursively. Value must be a comma separated list of hex values (e.g. 6C,4A,40,23).

WriteRegistryValue <RegistryKey>, <Value>, <Data>
WriteRegistryValue <RegistryKey>, <Value>, <Data>, <RegType>

Writes data to a registry value. HKey_Local_Machine, HKey_Current_User and HKey_Classes_Root can be abbreviated to HKLM, HKCU and HKCR. Any missing keys will be created recursively. If type is omitted, a string is assumed. RegType can be "REG_SZ" (default), "REG_DWORD" (numeric), "REG_QWORD" (64-bit numeric), "REG_EXPAND_SZ", "REG_MULTI_SZ" (lines separated by carriage return for example using the [Return] function) or "REG_BINARY" (will be converted to text - use WriteRegistryBinary to write as a list of hex values).
Example: WriteRegistry HKCU\Control Panel\Desktop,WallPaper,[WinDir]\Acme.png
Remote Desktop Services - Client

ShowFullRemoteDesktop <Server>
ShowFullRemoteDesktop <Server>, <UserName>, <EncryptedPassword>

Shows a full screen remote desktop. When the user stops the session, the script continues. Use <Domain>\<UserName> to specify domain for the connecting user. To specify a another port than the default 3389, use <Server>:<Port> instead of just <Server>. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: ShowFullRemoteDesktop AcmeServer

ShowRemoteDesktop <Server>
ShowRemoteDesktop <Server>, <HeaderText>
ShowRemoteDesktop <Server>, <UserName>, <EncryptedPassword>
ShowRemoteDesktop <Server>, <HeaderText>, <UserName>, <EncryptedPassword>

Shows an embedded remote desktop inside a window with a header text on top and a window caption. The following settings commands have effect on the window: SetScreenPos, SetHeaderFont, SetHeaderColor, SetBackgroundImage, ResetBackgroundImage, SetWindowSize, SetWindowScale, SetNextWindowSize, SetNextWindowScale, SetScaling, EnableTopMost/DisableTopMost and the visual effects commands. When the user clicks 'Close', the script continues. Use <Domain>\<UserName> to specify domain for the connecting user. To specify a another port than the default 3389, use <Server>:<Port> instead of just <Server>. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: ShowRemoteDesktop AcmeServer
Remote Desktop Services - Server

DisconnectSession

Disconnects a session. Useful for Remote Desktop Services disconnection from the server-side.
SCCM

DeleteTaskVar <Key>

Deletes a SCCM Task Sequence variable. As a general rule of thumb, variables starting with underscore are read-only and cannot be deleted.
Example: DeleteTaskVar MyLastStatus

LogTaskActionError <LogLine>

Logs an error event line to the SCCM Task Sequence log for the current action (the currently executing FSH script).
Example: LogTaskActionError Unable to install Cisco VPN - installation unsuccessful

LogTaskActionInfo <LogLine>

Logs a informational line to the SCCM Task Sequence log for the current action (the currently executing FSH script).
Example: LogTaskActionInfo Starting Cisco VPN installation

LogTaskActionWarning <LogLine>

Logs a warning event line to the SCCM Task Sequence log for the current action (the currently executing FSH script).
Example: If [FreeDiskSpace]<10 Then LogTaskActionWarning Low disk space, continuting installation

SetTaskActionLogFile <LogName>

Sets the file name of the SCCM log file used for commands LogTaskActionInfo, LogTaskActionWarning and LogTaskActionError. Default is FSH.log.
Example: SetTaskActionLogFile CiscoVPNDeploy

SetTaskVar <Key>=<Value>

Sets or overwrites an SCCM Task Sequence variable. As a general rule of thumb, variables starting with underscore are read-only. Observe that setting a value to an empty string effectively deletes the variable. This behavior is a limitation in SCCM that is by-design.
Example: SetTaskVar Type=[ComputerType]
Screen

SetOptimalScreenRes
SetOptimalScreenRes <ScreenIndex>

Sets the screen to the maximum resolution, if not already set to this resolution. If the resolution cannot be changed, no error occurs. This is to ensure that it is safe to attempt an automated change for instance in a logon script, if the resolution is considered too low. If ScreenIndex is omitted, all screens will have the resolution changed to the optimal resolution. To loop through all screens, use a construct like 'For ScreenIndex = 1 to [NoMonitors]'.

SetScreenRes <Width>, <Height>
SetScreenRes <Width>, <Height>, <Depth>
SetScreenRes <Width>, <Height>, <Depth>, <RefreshRate>
SetScreenRes <Width>, <Height>, <Depth>, <RefreshRate>, <ScreenIndex>

Changes screen resolution, with optional Depth, refresh rate and screen index. If the resolution cannot be changed, no error occurs. This is to ensure that it is safe to attempt an automated change for instance in a logon script, if the resolution is considered too low. If ScreenIndex is omitted, the primary screen will be used. Observe that your primary screen is not necessarily the first screen. You can get the screen index of the primary screen with the PrimaryScreenIndex function. To loop through all screens, use a construct like 'For ScreenIndex = 1 to [NoMonitors]'.
Example: If [ScreenWidth]<1366 Then SetScreenRes 1366,768,32
Script Control - Logging

DisableLogging

Disables logging of execution.

EnableErrorLogging <LogFile>
EnableErrorLogging <LogFile>, <MaxFileSize>

Enables a generic error log file. This can also be done by putting content into the ErrorHandler.fsh file in the execution directory. Max file size is in kilobytes.

DisableErrorLogging

Disables logging of execution.

DisableInstallLogging

Disables logging of installations and uninstallations of programs to a log file (default).

DisableSimpleLogging

Simple logging will only log the actual error to log files used with commands Log or EnableErrorLogging instead of creating a rich csv file. Default is rich logging.

EnableInstallLogging <LogFile>
EnableInstallLogging <LogFile>, <MaxFileSize>

Enables logging of installations and uninstallations of programs to the specified file. The log is compatible with the App Factory client management log viewer and should be located on a network using UNC. Logging happens when commands InstallMSI, InstallMSIBasic, UninstallMSI, UninstallMSIBasic, InstallProgram, InstallProgramScript and UninstallProgram successfully completes.

EnableSimpleLogging

Simple logging will only log the actual error to log files used with commands Log or EnableErrorLogging instead of creating a rich csv file. Default is rich logging.

Log <Text>

Logs the text to the log file. The log file is set using the SetLogFile command. The log will have a predefined format that includes the event to log, but also date, time, logged on user, computername and operating system.

SetLogFile <LogFile>
SetLogFile <LogFile>, <MaxFileSize>

Sets the log file for the Log command. Max file size is in kilobytes. The log will have a predefined format that includes the event to log, but also date, time, logged on user, computername and operating system.

EnableLogging
EnableLogging <LogFile>

Enables generic logging of all execution, logging all commands executed. Useful to trace scripts on other computers. If no log file is specified, a file named FastTrack.log is created in the executing user's profile. This setting can also be set by using the /L parameter to FSH.Exe. The logfile can also be set by using the /LF parameter to FSH.Exe.
Script Control

DisableDebugMode

Exits from debug mode.

DisableScriptTermination

Disables the option to right-click in the system tray and terminate the current script. The process can still be terminated through the task manager. The tray icon can be removed by using the command-line switch /N or using the DisableTrayIcon command.

DisableTrayIcon

Disables the tray icon. The tray icon can also be removed by using the command-line switch /N.

DoEvents

Forces Windows to run its pending events.

EnableDebugMode

Changes to debug mode.

Exit
Exit <ExitCode>

Stops FastTrack execution.

ExitOnError
ExitOnError <ExitCode>

Stops and exits the current script execution without showing an error, if a run-time error occurs, optionally setting the return code. The error handler will still be included. ExitOnError will overrule using the /IE command-line switch.

Goto <Label>

Goto label. A label is a line that starts with colon, useful with menus.
Example: If Not [Var MenuChoice]=[Blank] Then Goto [Var MenuChoice]

Halt <ErrorMessage>

Stops FastTrack execution with error, useful for installations when detecting errors. The difference between Stop and Halt is that Stop will continue, if resume mode is on. Halt will stop and force execution stop after showing an error.
Example: Halt "Installation of Microsoft Office 2010 was unsuccessful. Please contact HelpDesk."

Include <ScriptFile>

Includes another script into the current script sharing all variables. Use RunScript or LaunchScript to start a script out of process, not sharing variables.
Example: If UserSettingsOnce Microsoft Office Then Include Settings\OfficeSettings.fsh

Restart

Flushes all variables and restarts the current script.

RestoreErrorMode

Restores the entry error mode. If the /IE command-line switch was used, the script is resumed when run-time errors occur. If not, the script stops on error.

ResumeOnError
ResumeOnError <NoLines>

Continues the current script execution, if run-time errors occur. If number of lines is for example 5, the next 5 executing script lines will continue execution regardless of general settings. The error handler will still be included for each execution error. The LastError function will contain a string in case an error occurs and the LastLineFailed condition can be used to check for errors. ResumeOnError is an inline equivalent of using the /IE command-line switch.

Return
Return <ReturnValue>

Stops execution of a custom function or custom command. Custom functions can return a value or a list of values.

SetErrorExitCode <ExitCode>

Sets the exit code in case of errors. If no error occurs, 0 is returned by default and 1 in case of errors. Exit code for non-errors can be set with the Exit command.

SetErrorHandlerScript <ScriptFile>

By default a script named ErrorHandler.fsh in the same directory as the executing FSH.Exe is included, in case of errors. This SetErrorHandlerScript command overrules the location of the error handler script, to allow it to be located in a different location during execution.

Sleep <Seconds>

Sleeps script for the specified number of seconds.
Example: Sleep [Random 30]

SleepUntil <Time>

Sleeps the script until a specific time. If the time is already passed on the executing day, a sleep is done until the time the day after.
Example: SleepUntil 14:00

Stop <ErrorMessage>

Stops FastTrack execution with an error. The difference between Stop and Halt is that Stop will continue, if resume mode is on. Halt will stop and force execution stop after showing an error.
Example: Stop "Installation of Microsoft Office 2010 was unsuccessful. Please contact HelpDesk."

StopOnError

Stops the current script execution and shows an error message, if a run-time error occurs (default behavior unless the /IE command-line switch is used). The error handler will still be included. StopOnError will overrule using the /IE command-line switch.

StopResumeOnError

Stops the current script execution and shows an error message, if a run-time error occurs. Execution continues.
Security

BlockDevices
BlockDevices <DeviceType>

Blocks all removable devices. No device type means all removable devices. Device type can be DVD (e.g. CD, DVD, Bluray), Floppy, Storage (e.g. Flash drives, external hard drives), Tape or Media (e.g. smartphones, media players). Required local admin rights.
Example: BlockDevices Removables

SetDevicesReadOnly <DeviceType>

Sets removable devices read-only. Device type can be DVD (e.g. CD, DVD, Bluray), Floppy, Storage (e.g. Flash drives, external hard drives), Tape or Media (e.g. smartphones, media players). Required local admin rights.
Example: SetDevicesReadOnly Removables

UnblockDevices
UnblockDevices <DeviceType>

Unblocks removable devices. No device type means all removable devices. Device type can be DVD (e.g. CD, DVD, Bluray), Floppy, Storage (e.g. Flash drives, external hard drives), Tape or Media (e.g. smartphones, media players). Required local admin rights.
Example: UnblockDevices Removables
Services

RestartService <Name>
RestartService <Name>, <RemoteComputerName>
RestartService <Name>, <UserName>, <EncryptedPassword>
RestartService <Name>, <RemoteComputerName>, <UserName>, <EncryptedPassword>

Restarts a service. Use <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: RestartService MSSQL$SQLEXPRESS

StartService <Name>
StartService <Name>, <RemoteComputerName>
StartService <Name>, <UserName>, <EncryptedPassword>
StartService <Name>, <RemoteComputerName>, <UserName>, <EncryptedPassword>

Starts a service if possible, does nothing if it is already stopped or stop is pending. Use <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: StartService MSSQL$SQLEXPRESS

StopService <Name>
StopService <Name>, <RemoteComputerName>
StopService <Name>, <UserName>, <EncryptedPassword>
StopService <Name>, <RemoteComputerName>, <UserName>, <EncryptedPassword>

Stops a service if possible, does nothing if it is already stopped or stop is pending. Use <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: StopService MSSQL$SQLEXPRESS
SharePoint

ConnectPersistentSharePoint <DriveLetter>:, <URL>
ConnectPersistentSharePoint <DriveLetter>:, <URL>, <DisplayName>

Connects a documents folder at sharepoint.com as a persistent drive. Use the url as it appears in a browser, for example https://acme.sharepoint.com/Acme/Shared Documents/Forms/AllItems.aspx. The Office 365 logon page will automatically appear at logon to authenticate. The user can use the remember me option to be prompted once only. The command has no effect when executed as part of a RemoteApp logon script, because it's not possible to authenticate without user interacation.
Example: ConnectPersistentSharePoint J:,https://acme.sharepoint.com/Acme/Shared Documents/Forms/AllItems.aspx

ConnectSharePoint <DriveLetter>:, <URL>
ConnectSharePoint <DriveLetter>:, <URL>, <DisplayName>

Connects a documents folder at sharepoint.com as a non-persistent drive. Use the url as it appears in a browser, for example https://acme.sharepoint.com/Acme/Shared Documents/Forms/AllItems.aspx. The Office 365 logon page will automatically appear at logon to authenticate. The user can use the remember me option to be prompted once only. The command has no effect when executed as part of a RemoteApp logon script, because it's not possible to authenticate without user interacation.
Example: ConnectSharePoint J:,https://acme.sharepoint.com/Acme/Shared Documents/Forms/AllItems.aspx
Shares - Permissions

AddSharePermissions <Path>, <ACL>

Adds permissions to the share. If the accounts already have permissions, they will be changed to the new access right. Any accounts not specified, will keep their existing access rights. ACL (Access Control List) is as a comma separated ACE (Access Control Entry) list in the format [<Domain>\]<AccountName>:<AccessRight>. Account name can be a user or a group. AccessRight can be 'Read', 'Change', or 'Full Control' (or abbreviated to R, C and FC respectively).Use SetSharePermissions to specify a new ACL instead of replacing permissions. Requires admin privileges.
Example: AddSharePermissions \\[ComputerName]\WinShared$,Acme\CRMUsers:Read

AddSharePermissionsDenied <UncPath>, <ACL>

Denies access to the share. ACL (Access Control List) is as a comma separated ACE (Access Control Entry) list in the format [<Domain>\]<AccountName>:<AccessRight>. Account name can be a user or a group. AccessRight can be 'Read', 'Change', or 'Full Control' (or abbreviated to R, C and FC respectively).Use SetSharePermissions to specify a full ACL list. Requires admin privileges.
Example: AddSharePermissionsDenied \\[ComputerName]\WinShared$,Acme\CRMUsers:Read

RemoveSharePermissions <Path>, <AccountName>

Removes permissions for the specified account name from the ACL (Access Control List) on the share. Account name can be a user or a group in the format [<Domain>\]<AccountName>. When specifying a specific user, be aware that the user can still have access, if the user is a member of a group that still has access. Requires admin privileges.
Example: RemoveSharePermissions \\[ComputerName]\WinShared$,Acme\CRMUsers

SetSharePermissions <UncPath>, <ACL>

Sets share permissions. ACL (Access Control List) is as a comma separated ACE (Access Control Entry) list in the format [<Domain>\]<AccountName>:<AccessRight>. Account name can be a user or a group. AccessRight can be 'Read', 'Change', or 'Full Control' (or abbreviated to R, C and FC respectively).Use AddSharePermissions, AddSharePermissionsDenied and RemoveSharePermissions to modify to an existing ACL instead of creating a new one. Requires admin privileges.
Example: SetSharePermissions \\[ComputerName]\WinShared$,Acme\Domain Users:Read,Acme\Domain Admins:Full Control
Shares

AuthenticateShare <UNCPath>, <UserName>, <EncryptedPassword>

Creates credentials cache for a UNC path without connecting the share. After authentication, the share can be used through its UNC path without credentials.

ConnectPersistentShare <DriveLetter>:, <UNCPath>
ConnectPersistentShare <DriveLetter>:, <UNCPath>, <DisplayName>
ConnectPersistentShare <DriveLetter>:, <UNCPath>, <UserName>, <EncryptedPassword>
ConnectPersistentShare <DriveLetter>:, <UNCPath>, <DisplayName>, <UserName>, <EncryptedPassword>

Connects a persistent network share. If no user is specified, the current user's credentials will be used. Specify user as <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. Optional Display Name will be displayed in the Explorer instead of the unc path. Generally non-persistent connections are recommended to avoid dead connections, but in special cases like with offline folders, a persistent connection can be necessary. Use the ConnectPersistentShare command in this case. If you experience that with UAC enabled, drives seem to be mapped for administrators, but disappear, you are most likely experiencing the access token issue described in Microsoft Knowledge Base article 937624. Please refer to http://www.fasttrackscript.com/uac or http://support.microsoft.com/kb/937624 for more information on this issue.
Example: ConnectShare J:,\\AcmeServer\CommonShare

ConnectPersistentUserHomeDrive
ConnectPersistentUserHomeDrive <DisplayName>

Connects the home drive persistently for the current user to the drive and path set up for the current user in the Active Directory. If drive an path are not set, nothing happens. Optional Display Name will be displayed in the Explorer instead of the unc path.

ConnectShare <DriveLetter>:, <UNCPath>
ConnectShare <DriveLetter>:, <UNCPath>, <DisplayName>
ConnectShare <DriveLetter>:, <UNCPath>, <UserName>, <EncryptedPassword>
ConnectShare <DriveLetter>:, <UNCPath>, <DisplayName>, <UserName>, <EncryptedPassword>

Connects a non-persistent network share. If the EnablePersistentShares is used, the command acts as ConnectPersistentShare using persistent connections. If no user is specified, the current user's credentials will be used. Specify user as <Domain>\<UserName> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. Optional Display Name will be displayed in the Explorer instead of the unc path. Generally non-persistent connections are recommended to avoid dead connections, but in special cases like with offline folders, a persistent connection can be necessary. Use the ConnectPersistentShare command in this case. If you experience that with UAC enabled, drives seem to be mapped for administrators, but disappear, you are most likely experiencing the access token issue described in Microsoft Knowledge Base article 937624. Please refer to http://www.fasttrackscript.com/uac or http://support.microsoft.com/kb/937624 for more information on this issue.
Example: ConnectShare J:,\\AcmeServer\CommonShare

ConnectUserHomeDrive
ConnectUserHomeDrive <DisplayName>

Connects the home drive non-persistently for the current user to the drive and path set up for the current user in the Active Directory. If the EnablePersistentShares is used, the command acts as ConnectPersistentUserHomeDrive using persistent connections. If drive an path are not set, nothing happens. Optional Display Name will be displayed in the Explorer instead of the unc path.

CreateShare <Path>, <UNCPath>
CreateShare <Path>, <UNCPath>, <Description>

Creates a share with the specified name.
Example: CreateShare [WinDir],\\[ComputerName]\WinShared$

DisablePersistentShares

Makes all connections using the ConnectShare command non-persistent (default).

DisconnectAllShares

Disconnects all connected network drives.

DisconnectShare <DriveLetter>:

Disconnects a network share, if already connected.
Example: DisconnectShare M:

EnablePersistentShares

Makes all connections using the ConnectShare command persistent, in effect making it the same as the ConnectPersistentShare command.

RemoveShare <UNCPath>

Removes a share, if it exists.
Example: CreateShare \\[ComputerName]\WinShared$
Shortcuts

CreateDesktopShortCut <Name>, <File>
CreateDesktopShortCut <Name>, <File>, <ExeArguments>
CreateDesktopShortCut <Name>, <File>, <ExeArguments>, <IconPath>
CreateDesktopShortCut <Name>, <File>, <ExeArguments>, <IconPath>, <IconIndex>

Creates a common desktop shortcut for all users. For web site shortcuts instead of a file shortcut, use full prefix such as http://www.google.com as the file. Requires admin rights. Use functions like [WinDir] or [ProgramFilesDir] as the file path for using standard folders - see www.fasttrackscript.com/paths for a complete list. Icon path can be an .ico file or an executable or dll file. Index refers to the icon index of an executable or dll file. The dll can for example be shell32.dll and the icon index is then the index number of an icon embedded in the dll.
Example: CreateDesktopShortCut Notepad,[WinDir]\Notepad.exe, MyTextfile.txt, SHELL32.dll, 16

CreateShortCut <Path>, <Name>, <File>
CreateShortCut <Path>, <Name>, <File>, <ExeArguments>
CreateShortCut <Path>, <Name>, <File>, <ExeArguments>, <IconPath>
CreateShortCut <Path>, <Name>, <File>, <ExeArguments>, <IconPath>, <IconIndex>

Creates a shortcut. For web site shortcuts instead of a file shortcut, use full prefix such as http://www.google.com as the file. Use functions like [UserProgramsDir] and [UserDesktopDir] as the path for placing icons in the start menu, desktop, etc - see www.fasttrackscript.com/paths for a complete list. To specify a custom icon but no arguments, specify empty arguments. Icon path can be an .ico file or an executable or dll file. Index refers to the icon index of an executable or dll file. The dll can for example be shell32.dll and the icon index is then the index number of an icon embedded in the dll.
Example: CreateShortcut [UserProgramsDir],Notepad,[WinDir]\Notepad.exe, MyTextfile.txt, SHELL32.dll, 16

CreateUserDesktopShortCut <Name>, <File>
CreateUserDesktopShortCut <Name>, <File>, <ExeArguments>
CreateUserDesktopShortCut <Name>, <File>, <ExeArguments>, <IconPath>
CreateUserDesktopShortCut <Name>, <File>, <ExeArguments>, <IconPath>, <IconIndex>

Creates a desktop shortcut for the current user. For web site shortcuts instead of a file shortcut, use full prefix such as http://www.google.com as the file. Use functions like [WinDir] or [ProgramFilesDir] as the file path for using standard folders - see www.fasttrackscript.com/paths for a complete list. Icon path can be an .ico file or an executable or dll file. Index refers to the icon index of an executable or dll file. The dll can for example be shell32.dll and the icon index is then the index number of an icon embedded in the dll.
Example: CreateUserDesktopShortCut Notepad,[WinDir]\Notepad.exe, MyTextfile.txt, SHELL32.dll, 16

CreateUserFavorite <Url>, <Name>
CreateUserFavorite <Url>, <Name>, <SubFolder>

Creates a browser favorite for the current user.
Example: CreateFavorite www.google.com,Google

DeleteDesktopShortCut <Name>

Deletes a common desktop shortcut for all users. Requires admin rights.
Example: DeleteDesktopShortCut Notepad

DeleteShortCut <Path>, <Name>

Deletes a browser favorite for the current user.
Example: DeleteUserFavorite [UserProgramsDir],Notepad

DeleteUserDesktopShortCut <Name>

Deletes a desktop shortcut for the current user.
Example: DeleteUserDesktopShortCut Notepad

DeleteUserFavorite <Name>
DeleteUserFavorite <Name>, <SubFolder>

Deletes a browser favorite for the current user.
Example: DeleteUserFavorite Notepad

SetShortcutTarget <File>, <TargetPath>

Sets the target path of a shortcut.

SetShortcutWorkingDir <File>, <WorkingDirPath>

Sets the working directory of a shortcut.
SQL Server

ExecSQL <SQLStatement>, <Server>
ExecSQL <SQLStatement>, <Server>, <DefaultDatabase>
ExecSQL <SQLStatement>, <Server>, <UserName>, <EncryptedPassword>
ExecSQL <SQLStatement>, <Server>, <DefaultDatabase>, <UserName>, <EncryptedPassword>

Executes an SQL statement against a SQL Server database. Your SQL statement must be quoted, as it will most likely contain commas. Also remember that when you construct your SQL statements, values must be in apostrophes (') according to the T-SQL language; for example "Insert Into Logons (UserName,LogonTime) Values ('[UserName]','[DateTime]')". Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: ExecSQL "Insert Into Logons (UserName,LogonTime) Values ('[UserName]','[DateTime]')",AcmeServer\SQL,LogonAudit
Startup Items

RemoveStartupItem <LogicalName>

Removes an item that starts when any user logs on to the computer; requires administrative privileges.

RemoveUserStartupItem <LogicalName>

Removes an item that starts when current user logs on to the computer.

SetStartupItem <LogicalName>, <File>
SetStartupItem <LogicalName>, <File>, <Parameters>

Sets an executable to start when any user logs on to the computer; requires administrative privileges.
Example: If Portable Then SetStartupItem SmartDock,[UserAppDataDir]\FastTrack\SmartDock.exe

SetUserStartupItem <LogicalName>, <File>
SetUserStartupItem <LogicalName>, <File>, <Parameters>

Sets an executable to start when the current user logs on to the computer.
Example: If Portable Then SetUserStartupItem SmartDock,[UserAppDataDir]\FastTrack\SmartDock.exe
Stopwatch

ResetStopwatch

Stops and resets the stopwatch.

RestartStopwatch

Resets and starts the stopwatch.

StartStopwatch

Starts/resumes the stopwatch, if not running.

StopStopwatch

Stops/suspends the stopwatch, if running.
Strings

DisableCaseSensitivity

Disables case-sensive comparisons on conditions, which is also the default setting.

EnableCaseSensitivity

Enable case-sensive comparisons on conditions. By default comparisons are not case sensitive.
TeamViewer

LaunchTeamViewer <PartnerID>
LaunchTeamViewer <PartnerID>, <EncryptedPassword>

Launches a TeamViewer session without waiting for it to finish. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: LaunchTeamViewer AcmeServer

RunTeamViewer <PartnerID>
RunTeamViewer <PartnerID>, <EncryptedPassword>

Runs a TeamViewer session and waits for TeamViewer to be closed. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function.
Example: RunTeamViewer AcmeServer
Tray Launcher

InstallTrayExe <Name>, <TrayCaption>, <MenuCaption>, <ExeFile>
InstallTrayExe <Name>, <TrayCaption>, <MenuCaption>, <ExeFile>, <Arguments>
InstallTrayExe <Name>, <TrayCaption>, <MenuCaption>, <ExeFile>, <Arguments>, <IconPath>

Installs a windows startup item to launch an executable file for all users logging on. Requires administrator rights.

InstallTrayScript <Name>, <TrayCaption>, <MenuCaption>, <ScriptFile>
InstallTrayScript <Name>, <TrayCaption>, <MenuCaption>, <ScriptFile>, <IconPath>

Installs a windows startup item to launch a script file for all users logging on. Requires administrator rights.

InstallUserTrayExe <Name>, <TrayCaption>, <MenuCaption>, <ExeFile>
InstallUserTrayExe <Name>, <TrayCaption>, <MenuCaption>, <ExeFile>, <Arguments>
InstallUserTrayExe <Name>, <TrayCaption>, <MenuCaption>, <ExeFile>, <Arguments>, <IconPath>

Installs a windows startup item to launch an executable file for the current user.

InstallUserTrayScript <Name>, <TrayCaption>, <MenuCaption>, <ScriptFile>
InstallUserTrayScript <Name>, <TrayCaption>, <MenuCaption>, <ScriptFile>, <IconPath>

Installs a windows startup item to launch a script file for the current user.

RunTrayExe <TrayCaption>, <MenuCaption>, <ExeFile>
RunTrayExe <TrayCaption>, <MenuCaption>, <ExeFile>, <Arguments>
RunTrayExe <TrayCaption>, <MenuCaption>, <ExeFile>, <Arguments>, <IconPath>

Creates a tray icon to launch an executable file.

RunTrayScript <TrayCaption>, <MenuCaption>, <ScriptFile>
RunTrayScript <TrayCaption>, <MenuCaption>, <ScriptFile>, <IconPath>

Creates a tray icon to launch a script file.

UninstallAllTrayItems

Uninstalls all FastTrack tray items for the all users. Requires administrator rights.

UninstallAllUserTrayItems

Uninstalls all FastTrack tray items for the current user.

UninstallTrayItem <Name>

Uninstalls a FastTrack tray item for the all users. Requires administrator rights.

UninstallUserTrayItem <Name>

Uninstalls a FastTrack tray item for the current user.
User Change

ChangeUser <UserName>, <EncryptedPassword>

Used for an in-line change of the executing user, which voids to need to split into two scripts, where one would be for the executing user and one for the new user. As Windows cannot change the owner of a process at run-time, what happens is that the executing script starts another engine instance as the new user and then resumes the script from the current position. This means that variables and other state information are lost. Password must be encrypted in the editor using Tools->Encrypt Password or using the EncryptPassword function.

ChangeUserName

Changes the username of the current script. This does not change the executing user like ChangeUser does - it only changes the username used for the current script. For example, conditions like UserIsMemberOf condition or UserFullName function will use this user name instead of the logged in user's name.

ElevateUser

Used for User Account Control (UAC), where a local administrator is executing a script with its standard user token and the execution must be continued in an elevated state. With UAC the administrator has two user tokens and Windows cannot change the owner token of a process at run-time and therefore the executing script starts another engine instance with the elevated token and resumes the script from the current position. If the executing user is under User Account Control, this will effectively halt the script temporarily to show the UAC pop-up screen to ask for permission to continue. If the user is already elevated, or UAC is not enabled, and is local administrator, the command is ignored. Observe that in case elevation is done, variables and other state information are lost, because the script is resumed in a new process. For this reason, this command would typically be used at the very start of a script. Username cannot be specified because a target user would not have a session, where permission can be asked to elevate.

ImpersonateUser <UserName>, <EncryptedPassword>

Impersonates a user, changing the security context of the executing script. Specify user as <Domain>\<UserName> for a domain user. If no domain is specified, a local user is assumed. Password must be encrypted in the editor using Tools->Encrypt Password or using the EncryptPassword function.

LogonUser <UserName>, <EncryptedPassword>

Establishes a windows credential cache, which can be used to establish remote credentials for a non domain user. Specify user as <Domain>\<UserName> for a domain user. If no domain is specified, a local user is assumed. Password must be encrypted in the editor using Tools->Encrypt Password or using the EncryptPassword function.

RevertUser

Revert back to the original user after using the ImpersonateUser command.
Variables

AppendVar <Key>, <AppendValue>

Appends a variable with the value, creating the variable it if it does not exist.

ClearVariables

Clears all internal variables.

DecVar <VariableName>

Subtracts 1 from a variable. Variable must be a number.
Example: DecVar Counter

IncVar <VariableName>

Adds 1 to a variable. Variable must be a number.
Example: IncVar Counter

Set <Key>=<Value>

Sets or overwrites an internal variable.
Example: Set DiskModel=[WMIQuery SELECT Model FROM Win32_DiskDrive]

SetVar <Key>, <Value>

Sets or overwrites an internal variable.
Example: SetVar DiskModel,[WMIQuery SELECT Model FROM Win32_DiskDrive]
Web

DownloadFile <Url>, <LocalFile>
DownloadFile <Url>, <LocalFile>, <UserName>, <EncryptedPassword>

Downloads a file from the web to a local file. If optional password is used, it must be encrypted in the editor using Tools->Encrypt Password. The file download will be attempted three times, unless the file does not exist on the web server.
Example: DownloadFile http://www.intra.acme.com/CurrentReport.zip,[TempDir]\Report.zip

DownloadFileHidden <Url>, <LocalFile>
DownloadFileHidden <Url>, <LocalFile>, <UserName>, <EncryptedPassword>

Downloads a file from the web to a local file in the background. If optional password is used, it must be encrypted in the editor using Tools->Encrypt Password. The file download will be attempted three times, unless the file does not exist on the web server.
Example: DownloadFileHidden http://www.intra.acme.com/CurrentReport.zip,[TempDir]\Report.zip

SendHttpData <Url>
SendHttpData <Url>, <FormData>
SendHttpData <Url>, <UserName>, <EncryptedPassword>
SendHttpData <Url>, <FormData>, <UserName>, <EncryptedPassword>

Makes a http request, usable for reporting to a web server. Use the function HttpRequest if the returned data is needed. FormData is optional POST (form) data for the request in url format like param1=value1&param2=value2. If optional password is used, it must be encrypted in the editor using Tools->Encrypt Password.
Example: SendHttpData http://reporting.acme.com/clientreport.aspx?machinename=[ComputerName]&time=[Time]&date=[date]
Windows Installer - Concurrency

SetMaxConcurrentInstalls <NoConcurrentInstalls>, <StateFile>

Sets a maximum number of concurrent installs for commands InstallMSI, InstallMSIBasic, InstallProgram and InstallProgramScript to preserve bandwidth on large installs. Setting a value of 0 disables the feature. A central file must be supplied using UNC. This is a state file that is used to determine, how many computers are installing at the same time. Using the third parameter, will set the maximum for a specific application. Not using it means generally not more than the supplied number. If the maximum is reached, the commands have no effect and must be used again. All of the mentioned commands can be called in repeatedly, as for example InstallMSI has no effect, if the product is already installed and vice versa for uninstalls.
Windows Installer - Prerequisites

SetInstallMinimumFreeDisk <FreeDiskGB>

Sets a minimum free disk space for commands InstallMSI, InstallMSIBasic, InstallProgram and InstallProgramScript to start installs. No action is takes, if free disk is less than the free disk threshold. Setting a value of 0 disables the feature. All of the mentioned commands can be called in repeatedly, as for example InstallMSI has no effect, if the product is already installed and vice versa for uninstalls.
Windows Installer

InstallMSI <MSIPackage>
InstallMSI <MSIPackage>, <Parameters>
InstallMSI <MSIPackage>, <UserName>, <EncryptedPassword>
InstallMSI <MSIPackage>, <Parameters>, <UserName>, <EncryptedPassword>

Installs an MSI package unattendedly without a user interface, if the package is not already installed; otherwise, nothing happens. Concurrency and logging rules apply. If another installation is currently running, the command will wait 5 minutes for the other installation to finish, because Windows Installer does not support multiple installations at the same time. To determine success, use resume on error mode (for example using "ResumeOnError 1" as the previous line) and use the LastLineFailed condition to check if the installation was successful. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If there is a file named "PostInstall.fsh" in the FastTrack engine directory, it is executed. Functions CurrentInstallName and CurrentInstallVersion are available in this script. Parameters can either be a transforms file or extra MSIExec parameters such as "TARGETDIR=C:\Extract".
Example: If Not ProgramInstalled Adobe Reader Then InstallMSI AcroRead.msi

InstallMSIBasic <MSIPackage>
InstallMSIBasic <MSIPackage>, <Parameters>
InstallMSIBasic <MSIPackage>, <UserName>, <EncryptedPassword>
InstallMSIBasic <MSIPackage>, <Parameters>, <UserName>, <EncryptedPassword>

Installs an MSI package unattendedly with a basic user interface, if the package is not already installed; otherwise, nothing happens. Concurrency and logging rules apply. If another installation is currently running, the command will wait 5 minutes for the other installation to finish, because Windows Installer does not support multiple installations at the same time. To determine success, use resume on error mode (for example using "ResumeOnError 1" as the previous line) and use the LastLineFailed condition to check if the installation was successful. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If there is a file named "PostInstall.fsh" in the FastTrack engine directory, it is executed. Functions CurrentInstallName and CurrentInstallVersion are available in this script. Parameters can either be a transforms file or extra MSIExec parameters such as "TARGETDIR=C:\Extract".
Example: If Not ProgramInstalled Adobe Reader Then InstallMSIBasic AcroRead.msi

InstallMSP <MSPPackage>
InstallMSP <MSPPackage>, <Parameters>
InstallMSP <MSPPackage>, <UserName>, <EncryptedPassword>
InstallMSP <MSPPackage>, <Parameters>, <UserName>, <EncryptedPassword>

Installs an MSP package unattendedly without a user interface. Concurrency rules apply, but installations are not logged (as these are only patches). If another installation is currently running, the command will wait 5 minutes for the other installation to finish, because Windows Installer does not support multiple installations at the same time. To determine success, use resume on error mode (for example using "ResumeOnError 1" as the previous line) and use the LastLineFailed condition to check if the installation was successful. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. Parameters can either be a transforms file or extra MSIExec parameters such as "TARGETDIR=C:\Extract".
Example: InstallMSI AcroReadPatch.msp

UninstallMSI <MSIPackage>
UninstallMSI <MSIPackage>, <Parameters>
UninstallMSI <MSIPackage>, <UserName>, <EncryptedPassword>
UninstallMSI <MSIPackage>, <Parameters>, <UserName>, <EncryptedPassword>

Uninstalls an MSI package unattendedly without a user interface, if the package is installed; otherwise, nothing happens. The "MSIPackage" parameter can be a full name of an MSI based installation as shown in the Windows programs list (you can specify the left-most part like "DAClientInstall", but the full name should be preferred) - or an MSI file or a program GUID (e.g. {D929B3B5-56C6-46CC-B3A3-A1A784CBB8E4} for Sophos Antivirus). If another installation is currently running, the command will wait 5 minutes for the other installation to finish, because Windows Installer does not support multiple installations at the same time. To determine success, use resume on error mode (for example using "ResumeOnError 1" as the previous line) and use the LastLineFailed condition to check if the installation was successful. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If there is a file named "PostUninstall.fsh" in the FastTrack engine directory, it is executed. Functions CurrentInstallName and CurrentInstallVersion are available in this script.
Example: If ProgramInstalled Adobe Reader Then UninstallMSI AcroRead.msi

UninstallMSIBasic <MSIPackage>
UninstallMSIBasic <MSIPackage>, <Parameters>
UninstallMSIBasic <MSIPackage>, <UserName>, <EncryptedPassword>
UninstallMSIBasic <MSIPackage>, <Parameters>, <UserName>, <EncryptedPassword>

Uninstalls an MSI package unattendedly with a basic user interface, if the package is installed; otherwise, nothing happens. The "MSIPackage" parameter can be a full name of an MSI based installation as shown in the Windows programs list (you can specify the left-most part like "DAClientInstall", but the full name should be preferred) - or an MSI file or a program GUID (e.g. {D929B3B5-56C6-46CC-B3A3-A1A784CBB8E4} for Sophos Antivirus). If another installation is currently running, the command will wait 5 minutes for the other installation to finish, because Windows Installer does not support multiple installations at the same time. To determine success, use resume on error mode (for example using "ResumeOnError 1" as the previous line) and use the LastLineFailed condition to check if the installation was successful. Password must be encrypted in the editor using Tools->Encrypt Password or by using the EncryptPassword function. If there is a file named "PostUninstall.fsh" in the FastTrack engine directory, it is executed. Functions CurrentInstallName and CurrentInstallVersion are available in this script.
Example: If ProgramInstalled Adobe Reader Then UninstallMSIBasic AcroRead.msi
XML

DeleteXMLAttribute <File>, <XmlPath>, <Attribute>

Writes the attribute into the xml file at the specified x-path location, creating the file and all subelements it they do not exist. Path must be separated by /. Remember that there can be only one root element in XML files.
Example: DeleteXMLAttribute PrinterList.xml,Settings/Printers/Houston/Printer334,Server

DeleteXMLNode <File>, <XmlPath>

Deletes the xml node at the specified x-path, if it exists. Path must be separated by /. Remember that there can be only one root element in XML files.
Example: DeleteXMLNode PrinterList.xml,Settings/Printers/Houston/Printer334

WriteXMLAttribute <File>, <XmlPath>, <Attribute>, <Value>

Writes the attribute into the xml file at the specified x-path location, creating the file and all subelements it they do not exist. Path must be separated by /. Remember that there can be only one root element in XML files.
Example: WriteXMLAttribute PrinterList.xml,Settings/Printers/Houston/Printer334,Server,ACMESERVER01

WriteXMLValue <File>, <XmlPath>, <Value>

Writes the value into the xml file at the specified x-path, creating the file and all subelements it they do not exist. Path must be separated by /. Remember that there can be only one root element in XML files.
Example: WriteXMLValue PrinterList.xml,Settings/Printers/Houston/Printer334,PRS01
Zip

UnZip <ZipFile>, <Path>
UnZip <ZipFile>, <Path>, <EncryptedPassword>

Unzips a file to a directory. If optional password is used, it must be encrypted in the editor using Tools->Encrypt Password.
Example: If FileExists [UserHomeDir]\DocumentsBackup.zip Then UnZip [UserHomeDir]\DocumentsBackup.zip,[UserDocumentsDir]\Restore

Zip <Source>, <ZipFile>
Zip <Source>, <ZipFile>, <EncryptedPassword>

Zips a file or a directory including subdirectories/subfiles to a zip file. If optional password is used, it must be encrypted in the editor using Tools->Encrypt Password.
Example: Zip [UserDocumentsDir],[UserHomeDir]\DocumentsBackup.zip


Rating: 5 out of 5

"Use this as a replacement for VBScript and PowerShell"

"It's easy to include attractive GUI elements in FastTrack scripts, beyond the basic dialog boxes and text input that VBScript offers ... Another powerful feature is the ability to distribute scripts as Windows Installer (.msi) or standard .exe files. Although interesting in its own right, this ability results in a much more intriguing capability: to repackage -- or wrap -- software installers as .msi files without using snapshots. If you've ever created an .msi installer file from before-and-after system snapshots, for use with a software distribution system such as Group Policy or SCCM, then you know how hit-and-miss the results can be."

Read full review


Rating: 8 out of 10

"Faster than the rest"

"We found the FastTrack syntax to be more transparent and easier to learn than Microsoft's PowerShell – the editor in particular provided good support in this regard. the Script Editor offers a large number of options from the command set through to simple output of graphical elements, which cannot be achieved at all with PowerShell or other solutions or only with a significantly greater level of effort."

"Anyone wanting to tackle the many hurdles in everyday admin and especially anyone for whom logon scripts and client automation is a priority will benefit from the variety of functions offered by FastTrack."

Review in English      Review in German