opsi-winst reference card (4.11.2)

uib gmbh

Revision History
Revision 4.0.128.09.2011UG

Table of Contents

1. Copyright
2. Global text constants
2.1. System directories
2.1.1. System directories:
2.2. Common (AllUsers) directories:
2.3. Default User directories:
2.4. Current user directories
2.5. /AllNtUserProfiles directory constants:
2.6. wInst-Path and Directories
2.7. Network informations
2.8. Service Data
3. In Primary Sections
3.1. Kinds of Primary Sections
3.2. Winst control
3.3. Variables
3.3.1. Strings
3.3.2. Stringlists
3.4. Functions
3.4.1. String functions
3.4.2. String list functions
3.4.3. Boolean operators and functions
3.4.4. Misc functions
3.4.5. Flow control
4. Secondary Sections
4.1. Winbatch
4.2. DosBatch and DosInAnIcon
4.3. ExecWith
4.4. Files
4.5. Registry
4.6. Patches
4.7. PatchTextFile
4.8. LinkFolder
4.9. OpsiServiceCall
4.10. IdapiConfig
4.11. PatchHosts
4.12. XMLPatch
4.13. ExecPython
4.14. LdapSearch

Chapter 1. Copyright

The Copyright of this manual holds the uib gmbh in Mainz, Germany.

This manual is published under the creative commons license
Attribution - ShareAlike (by-sa).

CC by sa

A German description you will find here:
http://creativecommons.org/licenses/by-sa/3.0/de/

The German legally binding license:
http://creativecommons.org/licenses/by-sa/3.0/de/legalcode

The English description:
http://creativecommons.org/licenses/by-sa/3.0/

The English license: http://creativecommons.org/licenses/by-sa/3.0/legalcode

The opsi software is in most parts open source.
Not open source are only this new parts which are still under cofunding.
see:
http://uib.de/en/opsi_cofunding/index.html

All the rest of the source code is published under the GPLv3:

The legally binding GPLv3 license:
http://www.gnu.org/licenses/gpl.html

The name opsi is a registered trade mark of the uib gmbh.

The opsi-logo is owned by the uib gmbh and may be used only with explicit permission.

Chapter 2. Global text constants

2.1. System directories

2.1.1. System directories:

%ProgramFilesDir%: c:\program files

%ProgramFiles32Dir%: c:\Program Files (x86) //since 4.10.8

%ProgramFiles64Dir%: c:\program files //since 4.10.8

%ProgramFilesSysnativeDir% : c:\program files //since 4.10.8

%Systemroot% : c:\windows

%System% : c:\windows\system32

%Systemdrive% : c:

%ProfileDir% : c:\Documents and Settings

2.2. Common (AllUsers) directories:

%AllUsersProfileDir% or %CommonProfileDir% : c:\Documents and Settings\All Users

%CommonStartMenuPath% or %CommonStartmenuDir% : c:\Documents and Settings\All Users\Startmenu

%CommonAppdataDir% : c:\Documents and Settings\All Users\Application Data

%CommonDesktopDir%

%CommonStartupDir%

%CommonProgramsDir%

2.3. Default User directories:

%DefaultUserProfileDir% //since 4.11.1.1

2.4. Current user directories

User is the logged in user or given by /usercontext.

%AppdataDir% or %CurrentAppdataDir% : c:\Documents and Settings\%USERNAME%\Application Data //since 4.10.8.13

%CurrentStartmenuDir% //since 4.10.8.13

%CurrentDesktopDir% //since 4.10.8.13

%CurrentStartupDir% //since 4.10.8.13

%CurrentProgramsDir% //since 4.10.8.13

%CurrentSendToDir% //since 4.10.8.13

%CurrentProfileDir% //since 4.11.2.1

2.5. /AllNtUserProfiles directory constants:

%UserProfileDir% : c:\Documents and Settings\%USERNAME%
or
%CurrentProfileDir% // since 4.11.2.1

2.6. wInst-Path and Directories

%ScriptPath% or %ScriptDir%

%ScriptDrive%

%WinstDir%

%WinstVersion% //4.10.8.3

%Logfile%

2.7. Network informations

%Host% : value of environment variable HOST.

%PCName%: value of environment variable PCNAME, or if absent of COMPUTERNAME.

%Username% : Name of actual user.

2.8. Service Data

%HostID% : FQDN of the client

%opsiserviceURL%

%opsiServer%

%opsiserviceUser%

%opsiservicePassword%

%installingProdName%: productid //since 4.10.8

%installingProdVersion%: product version //since 4.10.8

%installingProduct% : productid (deprecated)

Chapter 3. In Primary Sections

3.1. Kinds of Primary Sections

[Initial]

[Actions]

[sub<identifier>]

sub <file name>

[ProfileActions]

3.2. Winst control

LogLevel (deprecated)

SetLogLevel = <number> or SetLogLevel = <string>

SetLogLevel = 7
SetLogLevel = "7"

ExitOnError = <boolean value>

Message <string> or Message = <const string>

ShowMessageFile <string>

ShowBitMap [<file name>] [<sub titel>]

comment <string> or comment = <const string>

LogError <string> or LogError = <const string>

LogWarning <string> or LogWarning = <const string>

Pause <string> or Pause = <const string>

Stop <string> or stop = <const string>

3.3. Variables

3.3.1. Strings

DefVar <variable name>

Set <variable name> = <value>

3.3.2. Stringlists

DefstringList <variable name>

3.4. Functions

3.4.1. String functions

Important

GetMsVersionInfo //Windows Version Information

GetSystemType //OS Architecture (32/64)

GetRegistrystringvalue ("[key] var")

GetRegistryStringValue32 ("[key] var") //since 4.10.8

GetRegistryStringValue64 ("[key] var") //since 4.10.8

GetRegistryStringValueSysNative ("[key] var") //since 4.10.8

GetvalueFromInifile ( file, section, key, default value )

GetValueFromInifile("myfile","mysec","mykey","")

GetProductProperty (<PropertyName>, <DefaultValue> )

trim(<string>)

lower(<string>)

unquote(<string>,<quote-string>) //since 4.11.2.1

getValue(<key string>, <hash string list> )

getValueBySeparator(<key string>,<separator string>,<hash string list> ) //since 4.11.2.1

getLastExitCode

Special: License Management

DemandLicenseKey( poolId [, productId [,windowsSoftwareId]] )

set $mykey$ = DemandLicenseKey ("", "office2007")

FreeLicense (`poolId [, productId [,windowsSoftwareId]])`

set $result$ = FreeLicense("", "office2007")

Special: Usercontext / loginscripts

GetUserSID(<Windows Username>)

GetLoggedInUser //since 4.11.1.2

GetUsercontext //since 4.11.1.2

GetScriptMode possible values Machine,Login //since 4.11.2.1

saveVersionToProfile - save productversion-packageversion to local profile //since 4.11.2.1

readVersionFromProfile : string - read productversion-packageversion from local profile //since 4.11.2.1

scriptWasExecutedBefore : boolean - is true if saved and running productversion-packageversion are identical //since 4.11.2.1

Other

GetHostsName (<hostaddress> )

GetHostsAddr (<hostname> )

ExtractFilePath (<path>)

DecStrToHexStr ( <decstring>, <hexlength>)

HexStrToDecStr (<hexstring>)

base64EncodeStr(<string>)

base64DecodeStr(<string>)

convert2Jsonstr(<string>) //since 4.10.8.3

RandomStr

CompareDotSeparatedStrings(<string1>, <string2>)

CompareDotSeparatedNumbers(<string1>, <string2>)

EnvVar (<environment variable>)

ParamStr

Deprecated

GetOS

GetNtVersion

IniVar (<key>) : (deprecated; use GetProductProperty)

SubstringBefore (<string1>, <string2>)

3.4.2. String list functions

Important

splitString (<string1>, <string2>)

set $list1$ = splitString ("\\server\share\dir","\")

splitStringOnWhiteSpace (<string>)

loadTextFile (<file name>)

loadUnicodeTextFile (<file name>)

composeString (<string list>, <Link>)

takeString (<index>, <list>)

takeFirstStringContaining(<list>,<search string>)

getOutStreamFromSection (<dos section name>)

getOutStreamFromSection ('DosBatch_try')

getReturnListFromSection (<xml section name>)

getListContaining(<list>,<search string>)

count (<list>)

for %<identifier>% in <list> do <one statement | sub section>

for %s% in $list1$ do sub_test_string

GetProcessList //since 4.11.1.2; gives list of exename;pid;dom/user

Infomaps

GetLocaleInfoMap

GetMSVersionMap

getFileInfoMap( <file name> )

getProductMap // since 4.11.2.1
keys are: id, name, description, advice, productversion, packageversion, priority, installationstate, lastactionrequest, lastactionresult, installedversion, installedpackage, installedmodificationtime

Other

createStringList (<string0>, <string1> ,… )

set $list1$ = createStringList ('a','b')

reverse (<list>)

getSectionNames(<ini-file>)

retrieveSection (<section name>)

getSubList (<start index>, <end index>, <list>)

addtolist(<list>,<string>) //since 4.10.8

addListToList(<dest list>,<src list>) //since 4.10.8

3.4.3. Boolean operators and functions

<string1> = <string2>

<bool1> AND <bool2>

<bool1> OR <bool2>

NOT(<bool3>)

FileExists (<file name>)

FileExists32 (<file name>)

FileExists64 (<file name>)

FileExistsSysNative (<file name>)

LineExistsIn (<string>, <file name>)

LineBeginning_ExistsIn (<string>, <file name>)

XMLAddNamespace(<XMLfilename>, <XMLelementname>, <XMLnamespace>)

XMLRemoveNamespace(<XMLfilename>, <XMLelementname>, <XMLnamespace>)

HasMinimumSpace (<drive letter>, <capacity>)

Example:

if not (HasMinimumSpace ("%SYSTEMDRIVE%", "500 MB"))
   LogError "Neede Space of 500 MB not available on %SYSTEMDRIVE%"
   isFatalError
endif

opsiLicenseManagementEnabled

runningAsAdmin //since 4.11.1.1

isLoginScript //since 4.11.2.1

3.4.4. Misc functions

Killtask <process name>

requiredWinstVersion <relation operator> <version>

requiredWinstVersion >= "4.10"

includelog <file name> <tail size> //since 4.11.2.1

includelog "%Scriptpath%\test-files\10lines.txt" "5"

3.4.5. Flow control

if - else - endif

Syntax:

if <condition>
;statement(s)
[else
;statement(s)]
endif

Example:

Set $NTVer$ = GetMsVersionInfo
if ( $NTVer$ >= "6" )
     sub_install_win7
else
  if ( $NTVer$ = "5.1" )
    sub_install_winXP
  else
    stop "not a supported OS-Version"
  endif
endif

isFatalError

ExitWindows /Reboot

ExitWindows /ImmediateReboot

ExitWindows /ImmediateLogout

ExitWindows /ShutdownWanted

ExitWindows /RebootWanted (deprecated, acts like /Reboot)

sleepSeconds <Integer>

Chapter 4. Secondary Sections

4.1. Winbatch

Function: execute programs via Windows API

[WinBatch<identifier>]

Modifier:

/LetThemGo

/WaitForProcessEnding "<program.exe>"

/TimeOutSeconds <seconds>

/WaitForWindowAppearing <window title> (does not work with 64 Bit programs)

/WaitForWindowVanish <window title> (does not work with 64 Bit programs)

4.2. DosBatch and DosInAnIcon

Function: Execute section via cmd.exe

[DosBatch<identifier>] <optional parameters> <winst <modifier>>

[DosInAnIcon<identifier>] <optional parameters> <winst <modifier>>

Modifier: //since 4.11.1.1

/32Bit

/64Bit

/SysNative

The modifiers has to be seperated by winst from the parameters.

DosInAnIcon_do_64bit_stuff winst /64Bit

Commands: see manual

4.3. ExecWith

Function: Execute section via any interpreter

[ExecWith<identifier>] <path to interpreter>

Commands: see manual

4.4. Files

Function: File Operations

[Files<identifier>]

Modifier:

/AllNTUserProfiles

/AllNTUserSendTo

/32Bit //since 4.10.8

/64Bit //since 4.10.8

/SysNative //since 4.10.8

Commands:

checkTargetPath = <destination directory>

copy [Options] <source file(s)> <destination directory>

some options:

-s rekursiv

-V version control against targetdir

-v version control against targetdir, %systemroot% and %system% (do not use it)

-c continue without reboot even if it is needed

-d date check

-u update

-x extract

-w weak (do not overwrite protected files)

-n no overwrite

-r copy read only attribute

delete [Options] <path[/mask]]

some options: -s rekursiv -f force

Example (do not forget the trailing Backslash):
delete -sf c:\delete_this_dir\

del [Options] <path[/mask]] //since 4.11.2.1

Works like delete but on
del -s -f c:\not-exists
if c:\not-exists not exists it do not search complete c:\ for not-exits

Example (you may forget the trailing Backslash):
del -sf c:\delete_this_dir

4.5. Registry

Function: edit Registry

Standard method call:
[Registry<identifier>]
works with the specified section.

Alternative method call:
Registry loadUnicodeTextFile(<.reg file>) /regedit
import the specified <.reg file>.

Alternative method call (deprecated):
Registry loadUnicodeTextFile(<.addreg file>) /addreg
import the specified <.addreg file>.

Modifier:

/AllNTUserDats

/32Bit //since 4.10.8

/64Bit //since 4.10.8

/SysNative //since 4.10.8

Commands:

OpenKey <Key>

openkey [HKLM\Software\opsi.org]

Set <varname> = <registry type>:<value>

Add <varname> = <registry type>:<value>

Examples for registry types:

set "var1" = "my string"
set "var2" = REG_SZ:"my string"
set "var3" = REG_EXPAND_SZ:"%ProgramFiles%"
set "var4" = REG_DWORD:123      (Decimal)
set "var5" = REG_BINARY:00 01 02 0F 10
set "var6" = REG_MULTI_SZ:"A|BC|de"

Supp <varname> <list char> <supplement>

supp "Path" ; "C:\utils; %JAVABIN%"

GetMultiSZFromFile <varname> <file name>

SaveValueToFile <varname> <file name>

DeleteVar <varname>

DeleteKey <registry key> (does since 4.11.2.1 also work with /AllNTUserDats)

4.6. Patches

Function: edit Ini-files

[Patches<identifier>] <file name>

Commands:

add [<section name>] <variable1> = <value1>

set [<section name>]<variable1> = <value1>

addnew [<section name>]<variable1> = <value1>

change [<section name>]<variable1> = <value1>

del [<section name>] <variable1> = <value1>

del [<section name>] <variable1>

delsec [<section name>]

replace <variable1>=<value1> <variable2>=<value2>

4.7. PatchTextFile

Function: edit text files

[PatchTextFile<identifier>] <file name>

Commands:

Set_Mozilla_Pref ("<preference type>", "<preference key>", "<preference value>")
preference types are usally:
pref, user_pref, lock_pref

AddStringListElement_To_Mozilla_Pref ("<preference type>", "<preference key>", "<add value>")

Set_Netscape_User_Pref ("<key>", "<value>") (deprecated)

AddstringListElement_To_Netscape_User_Pref (deprecated)

FindLine <search string>

FindLine_StartingWith <search string>

FindLine_Containing <search string>

GoToTop

AdvanceLine [<number of lines>]

GoToBottom

DeleteTheLine

AddLine_ <line> or Add_Line_ <line>

InsertLine <line> or Insert_Line_ <line>

AppendLine <line> or Append_Line <line>

Append_File <file name>

Subtract_File <file name>

SaveToFile <file name>

Sorted

4.8. LinkFolder

Function: Startmenue + Desktop Icons

[LinkFolder<identifier>]

Commands:

set_basefolder <system folder>

set_subfolder <folder path>

set_link
  name:        <link name>
  target:      <path and name of the program>
  parameters:  [command line arguments]
  working_dir: [working directory]
  icon_file:   [path and name of icon file, default=target]
  icon_index:  [number of icon in icon file, default=0]
end_link

delete_element <link name>

delete_subfolder <folder path>

The predefined virtual system folders which can be used are:
desktop, sendto, startmenu, startup, programs, desktopdirectory,
common_startmenu, common_programs, common_startup, common_desktopdirectory

Example

set_basefolder common_desktopdirectory
set_subfolder ""
set_link
  name: opsi-winst
  target: "%ProgramFiles32Dir%\opsi.org\opsi-client-agent\opsi-winst\winst32.exe"
end_link

4.9. OpsiServiceCall

Function: opsi-Service access

[OpsiServiceCall<identifier>]

Commands: see manual

4.10. IdapiConfig

Function: BDE configuration deprecated and not supported anymore

4.11. PatchHosts

Function: hosts-files bearbeiten

[PatchHosts<identifier>]

Commands:

setaddr <hostname> <IPaddress>

setname <IPaddress> <hostname>

setalias <hostname> <alias>

setalias <IPadresse> <alias>

delalias <hostname> <alias>

delalias <IPaddress> <alias>

delhost <hostname>

delhost <ipadresse>

setComment <ident> <comment>

4.12. XMLPatch

Function: edit XML files

[XMLPatch<identifier>]

Commands: see manual

4.13. ExecPython

Function: Execute section via python interpreter

[ExecPython<identifier>]

Commands: see manual

4.14. LdapSearch

Function: read from LDAP

[LdapSearch<identifier>]

Commands: see manual