Commands Reference
Refer to Getting Started Guide for information on how to use commands.
Active Directory Computers

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

Creates a computer account 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>.
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'. 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 Univeral 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 Univeral 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'. 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 a 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

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'. 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>, <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 must be encrypted in the editor using Tools->Encrypt Password.
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

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

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

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

SetClipboard <Value>

Puts text on the clipboard.
Date And Time

SetTimeFromServer
SetTimeFromServer <ServerName>

Syncronizes 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

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. Any 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.
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 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.
Example: CopyDirHidden [UserDocumentsDir],[UserHomeDir]\DocumentsBackup

DeleteDir <Path>

Deletes a directory including all directories and files under it, if it exists.
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.

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.
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.
Example: SyncDirHidden [UserDocumentsDir],[UserHomeDir]\DocumentsBackup

SyncExcludeClear

Clears all exclude patterns for SyncDir and CopyDir.

SyncExcludeDir <Directory>

Adds a directory to exclude from SyncDir and CopyDir. All subdirectories and subfiles are excluded. Multiple excludes are possible and wildcards are accepted.
Example: SyncExcludeDir Pictures

SyncExcludeFile <FilePattern>

Adds a file pattern to exclude from SyncDir and CopyDir. Multiple excludes are possible. Wildcards are accepted like *.dat. Any file matching the patterns is not included.
Example: SyncExcludeFile *.mp3
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, select Extended Attributes in the Tools menu in the editor. 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, select Extended Attributes in the Tools menu in the editor. 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, select Extended Attributes in the Tools menu in the editor. 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 it's parent directory. Requires admin privileges.
Example: SetDirPermissionsInherited [ProgramFilesDir]\Acme
Environment Variables

SetEnvVar <Name>, <Value>

Sets a common environment variable.
Example: SetEnvVar 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

LogEvent <Source>, <EventText>
LogEvent <Source>, <EventText>, <LogName>
LogEvent <Source>, <EventText>, <LogName>, <MachineName>

Logs an 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]
Execution

DoEvents

Forces Windows to run its pending events.

Exit

Stops FastTrack execution.

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

KillProcess <ProcessName>

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

Launch <Executable>
Launch <Executable>, <Arguments>
Launch <Executable>, <Username>, <EncryptedPassword>
Launch <Executable>, <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.
Example: If UserOnce ShowWelcome Then Launch http://intra.acme.com/Welcome

LaunchHidden <Executable>
LaunchHidden <Executable>, <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 <Executable>
LaunchMax <Executable>, <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 <Executable>
LaunchMin <Executable>, <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.
Example: LaunchScript Cleanup.fsh

Run <Executable>
Run <Executable>, <Arguments>
Run <Executable>, <Username>, <EncryptedPassword>
Run <Executable>, <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.
Example: Run Setup.Exe,/Config Acme.xml

RunHidden <Executable>
RunHidden <Executable>, <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 <Executable>
RunMax <Executable>, <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 <Executable>
RunMin <Executable>, <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. Specify user as <Domain>\<Username> for a domain user. Password must be encrypted in the editor using Tools->Encrypt Password.
Example: RunScript \\AcmeServer\Installers$\Office2010\Install.fsh,Acme\Installer,<EncryptedPassword>

Sleep <Seconds>

Sleeps script for the specified number of seconds.

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

WaitForProcess <ProcessName>

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

WaitForProcessComplete <ProcessName>

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

WaitForProcessStart <ProcessName>

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

AssociateExtension <Extension>, <Exefile>
AssociateExtension <Extension>, <Exefile>, <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>, <Exefile>
AssociateUserExtension <Extension>, <Exefile>, <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: AssociateExtension 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 <Path>, <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, select Extended Attributes in the Tools menu in the editor. 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 <Path>, <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, select Extended Attributes in the Tools menu in the editor. 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 <Path>, <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 <Path>, <AccountName>

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

SetFilePermissions <Path>, <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, select Extended Attributes in the Tools menu in the editor. 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 <Path>

Sets the file inherit permissions from it's 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, if it is changed. Directories are created recursively for destfile if missing.
Example: CopyFile [StartMenuDir]\Programs\Microsoft Office\Microsoft Office Word 2007.lnk, [UserDesktopDir]\Word 2007.lnk

DeleteFile <Path>

Deletes the specified file if it exists.
Example: DeleteFile [Var TempFile]

RenameFile <FilePath>, <NewFilePath>

Rename or move dile.
Graphical User Interfaces

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 diplayed text, split a field with | where the variable name is before the split and the display text after the split.
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 diplayed text, split a field with | where the variable name is before the split and the display text after the split.
Example: MultiInputForced New User,UserName|User name (Initials),First name,Last name,Password

RemoveSmallSplash

Removes the SmallSplash, if it is visible.

RemoveSplash

Removes the Splash if it is visible.

ShowMessage <Message>
ShowMessage <Message>, <Caption>

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

SmallSplash <Message>
SmallSplash <Message>, <ImageFile>

Displays a small splash window at the bottom of the screen. Remember quotes around the message if it can contain commas. The optional imagefile must be either a skin or an icon file. If the image is exactly 416x91 pixels, it will be used as the background and removes the icon. If it is 64x64 or less it will be used as the icon. Png format is generally best because it supports 24 bit colors and transparency.
Example: SmallSplash Installing Microsoft Office...please wait.

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

Displays a splash window at the center of the screen. Remember quotes around the message if it can contain commas. The optional imagefile must be either a skin or an icon file. If the image is exactly 537x165 pixels, it will be used as the background and removes the icon. If it is 128x128 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 and use for instance [UserAppDataDir]\FastTrack\Logo.Png as the third parameter.
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

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

Registers an installation for later query. 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

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

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>, <Path>
SetLocalUserLogonScript <UserName>, <Path>, <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.
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 adresses by splitting with a | (pipe character). Use the FileContent function to get the body content from a file. Remeber 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.
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 adresses by splitting with a | (pipe character). Use the FileContent function to get the body content from a file. Remeber 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.
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]
MultiMedia

Beep

Plays the system beep sound.

PlaySound <SoundFile>

Plays a sound file asynchronously.
Printers

ConnectPrinter <UNCPath>

Connects a network printer.
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
Registry Permissions

AddRegistryPermissions <Path>, <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, select Extended Attributes in the Tools menu in the editor. 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 <Path>, <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, select Extended Attributes in the Tools menu in the editor. 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 <Path>, <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 <Path>, <AccountName>

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

SetRegistryPermissions <Path>, <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, select Extended Attributes in the Tools menu in the editor. 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 <Path>

Sets the registry and all subkey and subvalues to inherit permissions from it's 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

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

Changes screen resolution, with optional Depth and refresh rate. 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.
Example: If [ScreenWidth]<1024 Then SetScreenRes 1024,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

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

Connects a 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.
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>, <ExePath>
CreateShortCut <Path>, <Name>, <ExePath>, <ExeArguments>
CreateShortCut <Path>, <Name>, <ExePath>, <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
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>, <Executable>
SetStartupItem <LogicalName>, <Executable>, <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>, <Executable>
SetUserStartupItem <LogicalName>, <Executable>, <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
System

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

Goto <Label>

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

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

IncVar <VariableName>

Adds 1 to a variable. Variable must be a number.
Example: IncVar Counter

SetVar <Key>, <Value>

Sets or overwrites an internal variable.
Example: SetVar DiskModel,[WMIQuery SELECT Model FROM Win32_DiskDrive]
Web

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.

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]

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

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
XML

WriteXMLAttribute <File>, <Path>, <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>, <Path>, <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>, <Directory>
UnZip <ZipFile>, <Directory>, <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