Commands Reference
Select version:


Refer to the Getting Started Guide for information on how to use commands.
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

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. 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. If domain is different than the domain of the executing user, specify computer as <Domain>\<ComputerName>.
Example: SetComputerDescription AcmePC0010,Shop demo computer
Active Directory Groups

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

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

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

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

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

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

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

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. 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 OU

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. If domain is different than the domain of the executing user, specify group as <Domain>\<OUName> and <Domain>\<ContainerOrOUName>.
Example: CreateOU Acme Sales America

DeleteOU <OUName>

Deletes an Active Directory organizational unit, if it exists. If domain is different than the domain of the executing user, specify OU as <Domain>\<OUName>.
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.

MoveComputer <ComputerName>, <ContainerOrOUName>

Moves a computer to a specific OU or container. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<ComputerName> and <Domain>\<ContainerOrOUName>.
Example: MoveComputer AcmePC0010,Acme Sales America

MoveGroup <GroupName>, <ContainerOrOUName>

Moves a group to a specific OU or container. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<GroupName> and <Domain>\<ContainerOrOUName>.
Example: MoveUser Acme Sales Staff,Acme Sales America

MoveOU <OUName>, <ContainerOrOUName>

Moves an organizational unit to a specific OU or container. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<OUName> and <Domain>\<ContainerOrOUName>.
Example: MoveOU Acme Sales America,Acme Sales Global

MoveUser <UserName>, <ContainerOrOUName>

Moves user to a specific OU or container. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName> and <Domain>\<ContainerOrOUName>.
Example: MoveUser AcmeUser,Acme Sales America

RenameOU <OUName>, <NewOUName>

Renames an Active Directory organizational unit. If domain is different than the current users' domain, specify name as <Domain>\<OUName>.
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. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<OUName>.
Example: SetOUCustomProperty Acme Sales America,managedBy,"[UserDistinguishedName AcmeSysAdm]"

SetOUDescription <OUName>, <Description>

Sets the description field of an Active Directory organizational unit. If domain is different than the domain of the executing user, specify OU as <Domain>\<OUName>.
Example: SetOUDescription Acme Sales America,All sales staff in the US
Active Directory Users

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

CreateUser <UserName>, <EncryptedPassword>
CreateUser <UserName>, <EncryptedPassword>, <ContainerOrOUName>

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>. Password must be encrypted in the editor using Tools->Encrypt Password or using the EncryptPassword function or using the EncryptPassword function.
Example: CreateUser AcmeUser, Akut3sRS6e3kJHztyeqg9w==

CreateUserPlain <UserName>, <PlainTextPassword>
CreateUserPlain <UserName>, <PlainTextPassword>, <ContainerOrOUName>

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>. Password is entered as plain text. CreateLocalUser is recommended, unless the password is retrieved from user input. Use CreateLocalUserPlain to create a local user.
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

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

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

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

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. Domain is by default the domain of the logged on user, to specify another domain, use <Domain>\<UserName>.
Example: RenameUser AcmeUser, AcmeRenamedUser

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

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. 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 (when using SetUserName and display name is not set, it is by default set to FirstName and LastName combined). 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

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]

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:

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

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

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

Changes the first name and last 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: SetUserName AcmeUser,Steve,Hansson

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

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

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

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

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
Browsers

DisableProxyServer

Clears proxy server for the current user. Will also be disabled for running browsers and processes.

EnableProxyServer

Enables the current proxy server for the current user. Will also be enabled for running browsers and processes.

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 only 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

SetProxyServer <Server>, <Port>

Sets and enables proxy server for the current user. The setting will also take effect on running browsers.
Example: SetProxyServer acmeproxy.acme.com,8080
Clipboard

SetClipboard <Value>

Puts text on the clipboard.
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 has dots in the name must be quoted. Refer to http://fasttrackscript.com/COM for more details on using COM with FastTrack Scripting Host.
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 has dots in the name must be quoted. Refer to http://www.fasttrackscript.com/COM for more details on using COM with FastTrack Scripting Host.
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 has dots in the name must be quoted. Refer to http://fasttrackscript.com/COM for more details on using COM with FastTrack Scripting Host.
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.
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

SetTimeFromServer
SetTimeFromServer <ServerName>

Synchronizes client time to the remote time. If no servername is specified, the logon server is used.
Desktop

EmptyRecycleBin
EmptyRecycleBin <Drive:>

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

RestoreDesktop

Restores windows from ShowDesktop.

SetWallPaper <File>

Sets the wallpaper for the current user. The wallpaper is only changed, if the specified file type is supported by the operating system.
Example: SetWallPaper [WinDir]\Acme.jpg

ShowDesktop

Minimizes all windows and shows the desktop.
Directories

CopyDir <SourcePath>, <DestPath>

Copies source directory tree to the destination directory, using a one-way sync. Any extra files and directories in destination will not be deleted, use SyncDir for this functionality. 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.
Example: CopyDir [UserDocumentsDir],[UserHomeDir]\DocumentsBackup

CopyDirHidden <SourcePath>, <DestPath>

Copies source directory tree to the destination directory without showing any user GUI during the process. Any extra files and directories in destination will not be deleted, use SyncDirHidden for this functionality. 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.
Example: CopyDirHidden [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 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

RenameDir <Path>, <NewPath>

Rename or move 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:
Directory 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

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,[SystemAccount]

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
Directory Sync

SetIOThreads <NumberOfThreads>

Sets the number of threads that SyncDir, CopyDir, 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 and CopyDir 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

SyncDir <SourcePath>, <DestPath>

Synchronizes source directory tree to the destination directory making them the same, while only copying changes. 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: SyncDir [UserDocumentsDir],[UserHomeDir]\DocumentsBackup

SyncDirHidden <SourcePath>, <DestPath>

Synchronizes source directory tree to the destination directory making them the same, while only copying changes. No user GUI 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.
Example: SyncDirHidden [UserDocumentsDir],[UserHomeDir]\DocumentsBackup

SyncExcludeClear

Clears all exclude patterns for SyncDir and CopyDir.

SyncExcludeDir <DirectoryName>

Adds a directory to exclude from SyncDir and CopyDir. 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 and CopyDir. 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 and CopyDir. 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 and CopyDir. 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

SyncIncludeClear

Clears all include patterns for SyncDir and CopyDir.

SyncIncludeFile <FileName>

Adds a file to include to SyncDir and CopyDir. 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 and CopyDir. 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
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>, <MachineName>

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

LogErrorEvent <Source>, <EventText>
LogErrorEvent <Source>, <EventText>, <LogName>
LogErrorEvent <Source>, <EventText>, <LogName>, <MachineName>

Logs an error event to the event log, which requires local admin rights. Source is the Source row in the event viewer, which is used to categorize events in a log. If log 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>, <MachineName>

Logs an information event to the event log, which requires local admin rights. Source is the Source row in the event viewer, which is used to categorize events in a log. If log 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>, <MachineName>

Logs a warning event to the event log, which requires local admin rights. Source is the Source row in the event viewer, which is used to categorize events in a log. If log 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

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.

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.

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.

Exit

Stops FastTrack execution.

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.
Example: Halt "Installation of Microsoft Office 2010 was unsuccessful. Please contact HelpDesk."

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.

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

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 using the EncryptPassword function or 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

LogonUser <Username>, <EncryptedPassword>

Establishes a windows credential cache, 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.

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

Continues the current script execution, if run-time errors occur. 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.

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 using the EncryptPassword function or 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 using the EncryptPassword function or 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>

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

StopOnError

Stops the current script execution, 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.
FastTrack Engine

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

Will copy the executing engine and license file to "[ProgramFiles]\FastTrack Software\FastTrack Scripting Host" 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

Will remove the engine and license file from "[ProgramFiles]\FastTrack Software\FastTrack Scripting Host" and unassociate .fsh files. If the executing engine is this exact instance, uninstall will fail. 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.

SelfUserUnassociate

Performs a user un-association of the .fsh extension. Same as passing /UserUnassociate to fsh.exe.
File 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
File 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 [ProgramFilesFile]\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 [ProgramFilesFile]\Acme\ReadMe.txt,Acme\CRMUsers:Read

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 [ProgramFilesFile]\Acme\ReadMe.txt,Acme\CRMUsers

SetFileOwner <File>, <AccountName>

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

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 [ProgramFilesFile]\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 [ProgramFilesFile]\Acme\ReadMe.txt
Files

AppendFile <File>, <Content>

Appends the content line to the file creating it if it does not exist.
Example: AppendFile \\MyServer\MyAdministrativeShare$\NetworkErrors.log,"[Date],[Time],[UserFullName],[LastError]"

CopyFile <SourceFile>, <DestFile>

Copies a file. The file is not copied if source and destination files are identical. Directories are created recursively for destfile if missing.
Example: CopyFile [StartMenuDir]\Programs\Microsoft Office\Microsoft Office Word 2007.lnk, [UserDesktopDir]\Word 2007.lnk

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

Copies files matching the wildcard pattern(s). Files that are identical in source and destination files are not copied. Use SyncDir or CopyDir 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>, <FilePattern>
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>, <FilePattern>
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 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.

RenameFile <File>, <NewFileName>

Renames or moves a file.

WriteFile <File>, <Content>

Writes the content to the file creating it if it does not exist. If the file exists, it will be overwritten.
Graphical User Interface Settings

AddCustomIcon <Name>, <File>

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 and the size must be 64x64 pixels or less.
Example: AddCustomIcon AcmeLogo,O:\Acme.png

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'.

DisableMenuSorting

Disables sorting of all graphical menus.

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.

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.

EnableMenuSorting

Enables sorting of all graphical menus.

EnableTopMost

Enables all graphical user interfaces to be on top of all other windows.

RestoreScreenPos <PercentX>, <PercentY>

Restores positions of graphical user interfacesto their default locations.

SetBodyColor <Color>

Sets the color of all body texts on graphical user interfaces. Color must be a hash sign and the 6 digit hex RGB colors, as used in the html standard, for example #FF0000 for red.

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.
Example: SetDefaultCompanyName Acme Corporation America

SetHeaderColor <Color>

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

SetMenuDefault <DefaultValue>

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

SetMenuHeaderIcon <IconName>

Overrules the default header icon in list and doublelist menus. 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 and the size must be 64x64 pixels or less.

SetScreenPos <PercentX>, <PercentY>

Sets the position of graphical user interfaces in percent of the screen resolution. Exceptions are message boxes and the ShowWebPage command. 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

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 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.
Example: SetUserDefaultCompanyName Acme Corporation America
Graphical User Interfaces

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. 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 with 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 window icon can be changed with 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]

MultiInput <HeaderText>, <ListOfFields>

Shows a list of input fields and returns every item in the list as a variable. Every variable is mandatory, unless the user cancels, in which case all variables will be empty. 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. User cannot cancel and must fill in every field. 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

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 window position can be overruled with the SetScreenPos command. 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. Further icons can added with the AddCustomIcon command. You also point directly to an image file preferably by in png format and the size must be 64x64 pixels or less.
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.

RemoveSmallSplash

Removes the SmallSplash, if it is visible.

RemoveSplash

Removes the Splash if it is visible.

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. 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

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>.
Example: ShowFullRemoteDesktop AcmeServer

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

Displays a message to the user. 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 and the size must be 64x64 pixels or less.
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

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

Shows an embedded remote desktop inside a window with a header text on top and a window caption. 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>.
Example: ShowRemoteDesktop AcmeServer

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

Displays an warning message to the user. 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

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 continues.
Example: If UserOnce ShowWelcome Then ShowWebPage http://intra.acme.com/Welcome,Welcome to Acme

SmallSplash <Message>
SmallSplash <Message>, <IconName>

Displays a small splash window at the bottom of the screen. The window position can be overruled with the SetScreenPos command. Remember to quote the message, if it contains comma. 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 and the size must be 64x64 pixels or less.
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. The window position can be overruled with the SetScreenPos command. Use the RemoveSplash command to hide the splash screen again. Remember to quote textlines, if they contain comma. The optional imagefile must be either a skin file or an icon file. If the image is 500x150 pixels or larger, it will be used as the background/skin and the icon is removed (non-skinned size is 537x165 pixels). The skin file is expected to contain an icon or similar graphics to fill in the left side of the splash screen. If the image is 128x128 pixels or less, it will be used as the icon. Png format is generally best, because it supports 24 bit colors and transparency. 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]
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

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
Local 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 <UserName>, <GroupName>
AddLocalUserToLocalGroup <UserName>, <GroupName>, <RemoteComputerName>

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

AddUserToLocalGroup <UserName>, <GroupName>
AddUserToLocalGroup <UserName>, <GroupName>, <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 <GroupName>
CreateLocalGroup <GroupName>, <RemoteComputerName>

Creates a local group.
Example: CreateLocalGroup AcmeGroup

DeleteLocalGroup <GroupName>
DeleteLocalGroup <GroupName>, <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 <UserName>, <GroupName>
RemoveLocalUserFromLocalGroup <UserName>, <GroupName>, <RemoteComputerName>

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

RemoveUserFromLocalGroup <UserName>, <GroupName>
RemoveUserFromLocalGroup <UserName>, <GroupName>, <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 <GroupName>, <NewGroupName>
RenameLocalGroup <GroupName>, <NewGroupName>, <RemoteComputerName>

Renames a local group.
Example: RenameLocalGroup AcmeGroup,AcmeNewGroup

SetLocalGroupDescription <GroupName>, <Description>
SetLocalGroupDescription <GroupName>, <Description>, <RemoteComputerName>

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

AllowLocalUserPasswordChange <UserName>
AllowLocalUserPasswordChange <UserName>, <RemoteComputerName>

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

CreateLocalUser <UserName>, <EncryptedPassword>
CreateLocalUser <UserName>, <EncryptedPassword>, <FullName>
CreateLocalUser <UserName>, <EncryptedPassword>, <FullName>, <RemoteComputerName>

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

CreateLocalUserPlain <UserName>, <PlainTextPassword>
CreateLocalUserPlain <UserName>, <PlainTextPassword>, <FullName>
CreateLocalUserPlain <UserName>, <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 <UserName>
DeleteLocalUser <UserName>, <RemoteComputerName>

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

DisableLocalUser <UserName>
DisableLocalUser <UserName>, <RemoteComputerName>

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

DisableLocalUserMustChangePassword <UserName>
DisableLocalUserMustChangePassword <UserName>, <RemoteComputerName>

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

DisableLocalUserPasswordExpiry <UserName>
DisableLocalUserPasswordExpiry <UserName>, <RemoteComputerName>

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

DisallowLocalUserPasswordChange <UserName>
DisallowLocalUserPasswordChange <UserName>, <RemoteComputerName>

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

EnableLocalUser <UserName>
EnableLocalUser <UserName>, <RemoteComputerName>

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

EnableLocalUserMustChangePassword <UserName>
EnableLocalUserMustChangePassword <UserName>, <RemoteComputerName>

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

EnableLocalUserPasswordExpiry <UserName>
EnableLocalUserPasswordExpiry <UserName>, <RemoteComputerName>

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

RenameLocalUser <UserName>, <NewName>
RenameLocalUser <UserName>, <NewName>, <RemoteComputerName>

Renames a local user.
Example: RenameLocalUser AcmeUser, AcmeRenamedUser

SetLocalUserDescription <UserName>, <Description>
SetLocalUserDescription <UserName>, <Description>, <RemoteComputerName>

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

SetLocalUserFullName <UserName>, <Description>
SetLocalUserFullName <UserName>, <Description>, <RemoteComputerName>

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

SetLocalUserHomeDir <UserName>, <Path>
SetLocalUserHomeDir <UserName>, <Path>, <RemoteComputerName>

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

SetLocalUserHomeDrive <UserName>, <Drive>
SetLocalUserHomeDrive <UserName>, <Drive>, <RemoteComputerName>

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

SetLocalUserLogonScript <UserName>, <File>
SetLocalUserLogonScript <UserName>, <File>, <RemoteComputerName>

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

SetLocalUserPassword <UserName>, <EncryptedPassword>
SetLocalUserPassword <UserName>, <EncryptedPassword>, <RemoteComputerName>

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

SetLocalUserPasswordPlain <UserName>, <PlainTextPassword>
SetLocalUserPasswordPlain <UserName>, <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 <UserName>, <Path>
SetLocalUserProfilePath <UserName>, <Path>, <RemoteComputerName>

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

UnlockLocalUser <UserName>
UnlockLocalUser <UserName>, <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>

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 using the EncryptPassword function or 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>

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 using the EncryptPassword function or 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>

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 using the EncryptPassword function or 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>

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 using the EncryptPassword function or 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]
MultiMedia

Beep

Plays the system beep sound.

PlaySound <SoundFile>

Plays a sound file asynchronously.
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.
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.
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.

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

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.
Online Services

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/InventoryDoc for more information on inventory.
Example: If OnceAWeek Then UploadHardwareInventory

UploadError <Category>, <Event>

Uploads an event of type 'Error' to your personal inventory web on http://www.fasttrackscript.com/Inventory. The information sent is compressed and encrypted and the data sent is about twice the size of your category and event text length combined. Be careful not to issue too many commands of this type, for example for trivial events like a regular logon, as the event upload will consume your upload bandwidth. The command is ideal for uploading status on server jobs or a logon script backup to track when the backup was performed.
Example: UploadEvent Backup status,Backup successful

UploadEvent <Category>, <Event>

Uploads an event of type 'Information' to your personal inventory web on http://www.fasttrackscript.com/Inventory. The information sent is compressed and encrypted and the data sent is about twice the size of your category and event text length combined. Be careful not to issue too many commands of this type, for example for trivial events like a regular logon, as the event upload will consume your upload bandwidth. The command is ideal for uploading status on server jobs or a logon script backup to track when the backup was performed.
Example: UploadEvent Backup status,Backup successful

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/InventoryDoc for more information on inventory.
Example: If OnceAWeek Then UploadInventory

UploadWarning <Category>, <Event>

Uploads an event of type 'Warning' to your personal inventory web on http://www.fasttrackscript.com/Inventory. The information sent is compressed and encrypted and the data sent is about twice the size of your category and event text length combined. Be careful not to issue too many commands of this type, for example for trivial events like a regular logon, as the event upload will consume your upload bandwidth. The command is ideal for uploading status on server jobs or a logon script backup to track when the backup was performed.
Example: UploadEvent Backup status,Backup successful
Operating System

DisableAutoLogon

Disables automatic logon to the computer.

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

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.

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

ConnectPrinter <UNCPath>

Connects a network printer, if it is not already connected.
Example: ConnectPrinter \\AcmePrintServer\AcmePrt25

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.

DisconnectPrinter <UNCPath>

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

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

KillProcess <ProcessName>

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

KillUserProcess <ProcessName>

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

KillWindow <Caption>

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

WaitForProcess <ProcessName>
WaitForProcess <ProcessName>, <ComputerName>

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

WaitForProcessComplete <ProcessName>
WaitForProcessComplete <ProcessName>, <ComputerName>

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

WaitForProcessStart <ProcessName>
WaitForProcessStart <ProcessName>, <ComputerName>

Waits for the specified process to start.
Example: WaitForProcessStart Setup.Exe

WaitForUserProcess <ProcessName>

Waits for the specified process to start and stop. Processes running under other accounts are ignored, which is useful for terminal 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 terminal 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 terminal services user scripts.
Example: WaitForUserProcessStart Setup.Exe

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

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,[SystemAccount]

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 <Key>

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

CreateRegistryKeyx86 <Key>

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

DeleteRegistryKey <Key>

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

DeleteRegistryKeyx86 <Key>

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

DeleteRegistryValue <Key>, <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

DeleteRegistryValuex86 <Key>, <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

WriteRegistry <Key>, <Value>
WriteRegistry <Key>, <Value>, <Type>

Writes 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. Type can be "REG_SZ" (default), "REG_DWORD" (numeric), "REG_QWORD" (64-bit numeric) or "REG_EXPAND_SZ".
Example: WriteRegistry HKCU\Control Panel\Desktop\WallPaper,[WinDir]\Acme.png

WriteRegistryx86 <Key>, <Value>
WriteRegistryx86 <Key>, <Value>, <Type>

Writes 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. Type can be "REG_SZ" (default), "REG_DWORD" (numeric), "REG_QWORD" (64-bit numeric) or "REG_EXPAND_SZ".
Example: WriteRegistryx86 HKCU\Software\Acme\DefaultSavePath,[UserDocumentsDir]
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
Services

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.
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.
Example: StopService MSSQL$SQLEXPRESS
Share 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

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. Optional DisplayName 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 needed. Use the ConnectShare command to connect a non-persistent share.
Example: ConnectShare J:,\\AcmeServer\CommonShare

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 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. Optional DisplayName 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

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

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

DisconnectAllShares

Disconnects all connected network drives.

DisconnectShare <DriveLetter>:

Disconnects a network share, if already connected.
Example: DisconnectShare M:

RemoveShare <UNCPath>

Removes a share, if it exists.
Example: CreateShare \\[ComputerName]\WinShared$
Shortcuts

CreateShortCut <Path>, <Name>, <File>
CreateShortCut <Path>, <Name>, <File>, <ExeArguments>
CreateShortCut <Path>, <Name>, <File>, <ExeArguments>, <IconPath>

Creates a shortcut. Use functions like [UserProgramsDir] and [UserDesktopDir] as the path for placing icons in the start menu, desktop, etc. To specify a custom icon but no arguments, specify empty arguments.
Example: CreateShortcut [UserProgramsDir],Notepad,[WinDir]\Notepad.exe

SetShortcutTarget <File>, <TargetPath>

Sets the target path of a shortcut.

SetShortcutWorkingDir <File>, <WorkingDirPath>

Sets the working directory of a shortcut.
SQL Server

ExecSQL <SQL Statement>, <Server>
ExecSQL <SQL Statement>, <Server>, <DefaultDatabase>
ExecSQL <SQL Statement>, <Server>, <UserName>, <EncryptedPassword>
ExecSQL <SQL Statement>, <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 using the EncryptPassword function or using the EncryptPassword function.
Example: ExecSQL "Insert Into Logons (UserName,LogonTime) Values ('[UserName]','[DateTime]')",AcmeServer\SQL,LogonAudit
Startup

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.
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. Consider using the command 'Set' for greater readability.
Example: SetVar DiskModel,[WMIQuery SELECT Model FROM Win32_DiskDrive]
Web

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 are 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]
XML

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