opsi-winst carte de référence (4.11.1.6)

OpenSides sprl

Historique des versions
Version 4.0.128.09.2011OS

Table des matières

1. Droit d’auteur
2. Constantes texte global
2.1. Informations Systèmes
2.1.1. Informations Systèmes:
2.2. répertoires communs (AllUsers) :
2.3. Répertoires utilisateur par défaut:
2.4. Répertoires utilisateur courant
2.5. constantes répertoire /AllNtUserProfiles :
2.6. Répertoire et chemins de Winst
2.7. Informations réseaux
2.8. Donneés du service
3. Dans les Sections primaires
3.1. Types de sections primaires
3.2. Contrôle de Winst
3.3. Variables
3.3.1. Chaînes de caractères
3.3.2. Listes de chaînes de caractères
3.4. Fonctions
3.4.1. Fonctions sur les chaînes
3.4.2. Fonctions sur les listes de chaîne
3.4.3. Opérateurs boléens et fonctions
3.4.4. fonctions divers
3.4.5. contrôle de flux
4. Sections Secondaire:
4.1. Winbatch
4.2. DosBatch et DosInAnIcon
4.3. ExecWith
4.4. Fichiers
4.5. Registre
4.6. Correctifs
4.7. PatchTextFile
4.8. LinkFolder
4.9. OpsiServiceCall
4.10. PatchHosts
4.11. XMLPatch
4.12. ExecPython
4.13. LdapSearch

Chapitre 1. Droit d’auteur

Le droit d’auteur de ce manuel est détenu par uib gmbh à Mainz, Allemagne.

Le droit d’auteur de la traduction francaise est détenu par OpenSides à Bruxelles, Belgique.

Ce manuel est publié sous licence creative commons
Attribution - ShareAlike (by-sa).

CC by sa

Vous trouverez ici la description allemande:
http://creativecommons.org/licenses/by-sa/3.0/de/

La licence allemande:
http://creativecommons.org/licenses/by-sa/3.0/de/legalcode

La description anglaise:
http://creativecommons.org/licenses/by-sa/3.0/

La licence anglaise:
http://creativecommons.org/licenses/by-sa/3.0/legalcode

La description française:
http://creativecommons.org/licenses/by-sa/3.0/deed.fr

La licence française:
http://creativecommons.org/licenses/by-sa/3.0/fr/legalcode

Le logiciel OPSI est dans la plupart de ces pièces open source.
Seulement les nouvelles pièces qui sont encore sous le cofinancement ne sont pas open source.
voir:
http://www.opsi.org/fr/projets-de-co-financement

Tout le reste du code source est publié sous licence GPLv3:

La licence GPLv3:
http://www.gnu.org/licenses/gpl.html

Le nom opsi est une marque déposée de uib gmbh.

Le logo de opsi est détenue par uib gmbh et peut être utilisé uniquement avec l’autorisation explicite.

Chapitre 2. Constantes texte global

2.1. Informations Systèmes

2.1.1. Informations Systèmes:

%ProgramFilesDir%: c:\program files

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

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

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

%Systemroot% : c:\windows

%System% : c:\windows\system32

%Systemdrive% : c:

%ProfileDir% : c:\Documents and Settings

2.2. répertoires communs (AllUsers) :

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

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

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

%CommonDesktopDir%

%CommonStartupDir%

%CommonProgramsDir%

2.3. Répertoires utilisateur par défaut:

%DefaultUserProfileDir% //depuis 4.11.1.1

2.4. Répertoires utilisateur courant

L’utilisateur est l’utilisateur connecté ou donnés par /usercontext.

%AppdataDir% ou %CurrentAppdataDir% : c:\Documents and Settings\%NOM_D’UTILISATEUR%\Application Data //depuis 4.10.8.13

%CurrentStartmenuDir% //depuis 4.10.8.13

%CurrentDesktopDir% //depuis 4.10.8.13

%CurrentStartupDir% //depuis 4.10.8.13

%CurrentProgramsDir% //depuis 4.10.8.13

%CurrentSendToDir% //depuis 4.10.8.13

%CurrentProfileDir% //depuis 4.11.2.1

2.5. constantes répertoire /AllNtUserProfiles :

%UserProfileDir% : c:\Documents and Settings\%NOM_D’UTILISATEUR%
ou
%CurrentProfileDir% // depuis 4.11.2.1

2.6. Répertoire et chemins de Winst

%ScriptPath% ou %ScriptDir%

%ScriptDrive%

%WinstDir%

%WinstVersion% //depuis 4.10.8.3

%Logfile%

%opsiScriptHelperPath% // depuis 4.11.3.2

2.7. Informations réseaux

%Host% : valeur de la variable d’environnement HOST.

%PCName%: valeur de la variable d’environnement PCNAME, ou si absent COMPUTERNAME.

%Username% : Nom de l’utilisateur actuel

%IPAddress% : peut-être l’adresse IP de la machine. Utilisez la fonction getMyIpByTarget() à la place.

2.8. Donneés du service

%HostID% : FQDN du client

%opsiserviceURL%

%opsiServer%

%opsiserviceUser%

%opsiservicePassword%

%installingProdName%: id du produit //depuis 4.10.8

%installingProdVersion%: version du produit //depuis 4.10.8

%installingProduct% : id du produit (obsolete)

Chapitre 3. Dans les Sections primaires

3.1. Types de sections primaires

[Initial]

[Actions]

[sub<identifiant>]

sub <nom du fichier>

[ProfileActions]

3.2. Contrôle de Winst

LogLevel (obsolete)

SetLogLevel = <nombre> ou SetLogLevel = <chaîne>

SetLogLevel = 7
SetLogLevel = "7"

ExitOnError = <valeur booléenne>

ScriptErrorMessages = <valeur booléenne>

FatalOnSyntaxError = <valeur booléenne> //depuis 4.11.3.2

Message <chaîne> ou Message = <constante chaîne>

ShowMessageFile <chaîne>

ShowBitMap [<nom du fichier>] [<sous titre>]

comment <chaîne> ou comment = <constante chaîne>

LogError <chaîne> ou LogError = <constante chaîne>

LogWarning <chaîne> ou LogWarning = <constante chaîne>

Pause <chaîne> ou Pause = <constante chaîne>

Stop <chaîne> ou stop = <constante chaîne>

include_insert <nom de fichier> // depuis 4.11.3

include_append <nom de fichier> // depuis 4.11.3

NormalizeWinst // depuis 4.11.3: (set normal window state)

IconizeWinst // (définir l'état de la fenêtre réduite)

RestoreWinst // (définir l'état de la fenêtre maximisé)

SetSkinDirectory <chemin vers skin.ini> // depuis 4.11.3.5

3.3. Variables

3.3.1. Chaînes de caractères

DefVar <nom de la variable>

Set <nom de la variable> = <valeur>

3.3.2. Listes de chaînes de caractères

DefstringList <nom de la variable>

3.4. Fonctions

3.4.1. Fonctions sur les chaînes

Important

GetMsVersionInfo //Informations sur la version de Windows

GetSystemType //OS Architecture (32/64)

GetRegistrystringvalue ("[key] var")

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

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

GetRegistryStringValueSysNative ("[key] var") //depuis 4.10

GetvalueFromInifile ( fichier, section, clef, valeur par défaut )

GetValueFromInifile("mon_fichier","ma_section","ma_clef","")

GetProductProperty (<Nom_de_la_proprietè>, <Valeur_par_défaut> )

trim(<chaîne>)

lower(<chaîne>)

unquote(<chaîne>,<chaîne-cote>) //depuis 4.11.2.1

stringReplace(<chaîne>, <ancien modèle>, <nouveau modèle>) //depuis 4.11.3

strLength(<chaîne>) //depuis 4.11.3

strPos(<chaîne>, <sous-chaîne>) //depuis 4.11.3

strPart(<chaîne>, <position de départ>, <nombre de caractères>) //depuis 4.11.3

getValue(<clef chaîne>, <liste de chaînes de hachage> )

getValueBySeparator(<clef chaîne>,<chaîne de séparation>,<liste de chaînes de hachage> ) //depuis 4.11.2.1

getLastExitCode

Spécial: Gestion des licences

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

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

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

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

Spécial: Contexte utilisateur

GetUserSID(<Nom d’utilisateur Windows>)

GetLoggedInUser //depuis 4.11.1.2

GetUsercontext //depuis 4.11.1.2

GetScriptMode valeurs possibles Machine,Login //depuis 4.11.2.1

saveVersionToProfile - sauvegarder productversion-packageversion dans le profil local //depuis 4.11.2.1

readVersionFromProfile : chaîne - lire productversion-packageversion depuis le profil local //depuis 4.11.2.1

scriptWasExecutedBefore : booléen - est vrai si productversion-packageversion sauvegardés et en cours d’exécution sont identiques //depuis 4.11.2.1

Autres

GetHostsName (<nom de l’hôte> )

GetHostsAddr (<adresse de l’hôte> )

GetMyIpByTarget(<adresse ip cible>) //depuis 4.11.3

ExtractFilePath (<chemin>)

calculate(<expression de chaîne arithmétique>) // depuis 4.11.3.5 : connaît: +-*/()

DecStrToHexStr ( <chaîne décimale>, <longueur hexadécimale>)

HexStrToDecStr (<chaîne hexadécimale>)

base64EncodeStr(<chaîne>)

base64DecodeStr(<chaîne>)

convert2Jsonstr(<chaîne>) //depuis 4.10.8.3

RandomStr

CompareDotSeparatedStrings(<chaîne1>, <chaîne2>)

CompareDotSeparatedNumbers(<chaîne1>, <chaîne2>)

EnvVar (<variable d’environnement>)

ParamStr

getDiffTimeSec (Temps en secondes depuis le dernier marktime) //depuis 4.11.3

SidToName(<sid connu>) //depuis 4.11.3: gives localized name of the sid

GetMyIpByTarget(<adresse ip cible>) //depuis 4.11.3.2

GetIpByName(<ip addr / ip name>) //depuis 4.11.3.2

Obsolète

GetOS

GetNtVersion

IniVar (<clef>) : (obsolète; utilisez GetProductProperty)

SubstringBefore (<chaîne1>, <chaîne2>)

3.4.2. Fonctions sur les listes de chaîne

Important

splitString (<chaîne1>, <chaîne2>)

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

splitStringOnWhiteSpace (<chaîne>)

loadTextFile (<nom de fichier>)

loadUnicodeTextFile (<nom de fichier>)

composeString (<liste de chaîne>, <lien>)

takeString (<Indice>, <liste>)

takeFirstStringContaining(<liste>,<chaîne de recherche>)

getOutStreamFromSection (<nom de section dos>)

getOutStreamFromSection ('DosBatch_try')

getReturnListFromSection (<nom de section xml>)

getListContaining(<liste>,<chaîne de recherche>)

count (<liste>)

for %<identifiant>% in <liste> do <une déclaration | sous section>

for %s% in $list1$ do sub_test_string

GetProcessList //depuis 4.11.1.2; donne la liste des exename;pid;dom/user

getProductPropertyList(<nom de la propriété>,<valeur par défaut>) //depuis 4.11.3

getRegistryKeyList32(<clé de registre>) //depuis 4.11.3

getRegistryKeyList64(<clé de registre>) //depuis 4.11.3

getRegistryKeyListSysnative(<clé de registre>) //depuis 4.11.3

getRegistryVarList32(<clé de registre>) //depuis 4.11.3

getRegistryVarList64(<clé de registre>) //depuis 4.11.3

getRegistryVarListSysnative(<clé de registre>) //depuis 4.11.3

getProfilesDirList //depuis 4.11.3.2

Infomaps

GetLocaleInfoMap

GetMSVersionMap

getFileInfoMap( <nom de fichier> )

getProductMap // depuis 4.11.2.1
les clés sont: id, name, description, advice, productversion, packageversion, priority, installationstate, lastactionrequest, lastactionresult, installedversion, installedpackage, installedmodificationtime

getRegistryVarMap32(<regkey>) //depuis 4.11.3

getRegistryVarMap64(<regkey>) //depuis 4.11.3

getRegistryVarMapSysnative(<regkey>) //depuis 4.11.3

Autre

createStringList (<chaîne0>, <chaîne1> ,… )

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

reverse (<liste>)

getSectionNames(<fichier-ini>)

retrieveSection (<nom de la section>)

getSubList (<indice de depart>, <indice de fin>, <liste>)

addtolist(<liste>,<chaîne>) //depuis 4.10.8

addListToList(<liste de destination>,<liste source>) //depuis 4.10.8

3.4.3. Opérateurs boléens et fonctions

<chaîne1> = <chaîne2>

<boléen1> AND <boléen2>

<boléen1> OR <boléen2>

NOT(<boléen3>)

FileExists (<nom de fichier>)

FileExists32 (<nom de fichier>)

FileExists64 (<nom de fichier>)

FileExistsSysNative (<nom de fichier>)

LineExistsIn (<chaîne>, <nom de fichier>)

LineBeginning_ExistsIn (<chaîne>, <nom de fichier>)

XMLAddNamespace(<nom de fichier XML>, <nom de l’element XML>, <nom de l’espace XML>)

XMLRemoveNamespace(<nom de fichier XML>, <nom de l’element XML>, <nom de l’espace XML>)

HasMinimumSpace (<lettre de lecteur>, <capacitè>)

Exemple:

if not (HasMinimumSpace ("%SYSTEMDRIVE%", "500 MB"))
   LogError "L'espace requis de 500 MB n'est pas disponible dans %SYSTEMDRIVE%"
   isFatalError
endif

opsiLicenseManagementEnabled

runningAsAdmin //depuis 4.11.1.1

isLoginScript //depuis 4.11.2.1

contains(<chaîne>, <sous-chaîne>) //depuis 4.11.3: vrai si <sous-chaîne> dans <chaîne>

isNumber(<chaîne>) //depuis 4.11.3: vrai si <chaîne> représente un nombre entier

3.4.4. fonctions divers

Killtask <nom du processus>

requiredWinstVersion <opérateur relationnel> <version>

requiredWinstVersion >= "4.10"

includelog <nom de fichier> <taille de queue> //depuis 4.11.2.1

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

3.4.5. contrôle de flux

if - else - endif

Syntaxe:

if <condition>
;déclaration(s)
[else
;déclaration(s)]
endif

Exemple:

Set $NTVer$ = GetMsVersionInfo
if ( $NTVer$ >= "6" )
     sub_install_win7
else
  if ( $NTVer$ = "5.1" )
    sub_install_winXP
  else
    stop "La version de l'OS n'est pas supporté"
  endif
endif

isFatalError

isFatalError <chaîne> //depuis 4.11.3.2

ExitWindows /Reboot

ExitWindows /ImmediateReboot

ExitWindows /ImmediateLogout

ExitWindows /ShutdownWanted

ExitWindows /RebootWanted (deprecated, acts like /Reboot)

sleepSeconds <nombre entier>

ChangeDirectory <répertoire> //depuis 4.11.2.6

Chapitre 4. Sections Secondaire:

4.1. Winbatch

Fonction: exécuter les programmes via l’API de Windows

[WinBatch<identifiant>]

Modificateur:

/LetThemGo

/WaitForProcessEnding "<program.exe>"

/TimeOutSeconds <secondes>

/WaitForWindowAppearing <titre de la fenêtre> (ne fonctionne pas avec les programmes 64 Bit)

/WaitForWindowVanish <titre de la fenêtre> (ne fonctionne pas avec les programmes 64 Bit)

/RunElevated // depuis 4.11.3: seulement >= NT6 ; pas d’accès réseau

/RunAsLoggedOnUser // depuis 4.11.3.5 ; fonctionne uniquement à l’intérieur de userLoginScripts

/32Bit //depuis 4.11.3.5

/64Bit //depuis 4.11.3.5

/SysNative //depuis 4.11.3.5

4.2. DosBatch et DosInAnIcon

Fonction: exécuter la section via cmd.exe

[DosBatch<identifiant>] <paramètres optionnels> <winst <modifier>>

[DosInAnIcon<identifiant>] <paramètres optionnels> <winst <modifier>>

Modificateur: //depuis 4.11.1.1

/32Bit

/64Bit

/SysNative

Les modificateurs doivent être séparé des paramètres par winst.

DosInAnIcon_do_64bit_stuff winst /64Bit

Commandes: voir le manuel

4.3. ExecWith

Fonction: Exécuter la section via n’importe quel interpréteur

[ExecWith<identifiant>] <chemin de l’interpréteur>

Modificateur:

/LetThemGo

/EscapeStrings

/32Bit //depuis 4.11.3.5

/64Bit //depuis 4.11.3.5

/SysNative //depuis 4.11.3.5

Les modificateurs doivent être séparées des paramètres par le mot winst. L’exemple suivant appelle la version 64 bits de powershell.exe.

ExecWith_do_64bit_stuff "%System%\WindowsPowerShell\v1.0\powershell.exe" winst /64Bit

Commandes: voir le manuel

4.4. Fichiers

Fonction: Operations sur les fichiers

[Files<identifiant>]

Modificateur:

/AllNTUserProfiles

/AllNTUserSendTo

/32Bit //depuis 4.10.8

/64Bit //depuis 4.10.8

/SysNative //depuis 4.10.8

Commandes:

checkTargetPath = <répertoire de destination>

copy [Options] <fichier(s) source> <répertoire de destination>

quelques options:

-s récursif

-V contrôle de version contre répertoire cible

-v contrôle de version contre répertoire cible, %systemroot% et %system% (ne l’utilisez pas)

-c continuer sans redémarrer, même si cela est nécessaire

-d vérification de la date

-u mise à jour

-x extraire

-w weak (ne pas écraser les fichiers protégés)

-n ne pas écraser

-r copier attribut lecture seule

delete [Options] <chemin[/masque]]

certaines options: -s récursive -f force

Exemple (ne pas oublier la barre oblique inverse):
delete -sf c:\supprimer_ce_répertoire\

del [Options] <chemin[/masque]] //depuis 4.11.2.1

Fonctionne comme delete mais sur
del -s -f c:\not-exists
si c:\not-exists n’existe pas il ne cherche pas c:\ pour not-exits

Exemple (ne pas oublier la barre oblique inverse):
del -sf c:\supprimer_ce_répertoire

4.5. Registre

Fonction: modifier le registre

Méthode standard:
[Registry<identifiant>]
travaille en collaboration avec la section spécifiée.

Autre méthode:
Registry loadUnicodeTextFile(<.fichier reg>) /regedit
importer le spécifiée <.fichier reg>.

Autre méthode (obsolete):
Registry loadUnicodeTextFile(<.addreg file>) /addreg
importer le spécifiée <.addreg file>.

Modificateur:

/AllNTUserDats

/32Bit //depuis 4.10.8

/64Bit //depuis 4.10.8

/SysNative //depuis 4.10.8

Commandes:

OpenKey <Clef>

openkey [HKLM\Software\opsi.org]

Set <nom de variable> = <type de registre>:<valeur>

Add <nom de variable> = <type de registre>:<valeur>

Exemples de types de registre:

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 <nom de variable> <list char> <supplément>

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

GetMultiSZFromFile <nom de variable> <nom de fichier>

SaveValueToFile <nom de variable> <nom de fichier>

DeleteVar <nom de variable>

DeleteKey <clef de registre> (ne fonctionne pas avec /AllNTUserDats)

4.6. Correctifs

Fonction: modifier fichiers Ini

[Patches<identifiant>] <nom de fichier>

Modificateur:

/AllNTUserProfiles //depuis 4.11.3

Commandes:

add [<nom de section>] <variable1> = <valeur1>

set [<nom de section>]<variable1> = <valeur1>

addnew [<nom de section>]<variable1> = <valeur1>

change [<nom de section>]<variable1> = <valeur1>

del [<nom de section>] <variable1> = <valeur1>

del [<nom de section>] <variable1>

delsec [<nom de section>]

replace <variable1>=<valeur1> <variable2>=<valeur2>

4.7. PatchTextFile

Fonction: modifier fichier de texte

[PatchTextFile<identifier>] <nom du fichier>

Modificateur:

/AllNTUserProfiles //depuis 4.11.3.4

Commandes:

Set_Mozilla_Pref ("<type de préférence>", "<clé de préférence>", "<valeur de préférence>")
les types de préférences sont généralement:
pref, user_pref, lock_pref

AddStringListElement_To_Mozilla_Pref ("<type de préférence>", "<clé de préférence>", "<ajouter la valeur>")

Set_Netscape_User_Pref ("<clef>", "<valeur>") (obsolete)

AddstringListElement_To_Netscape_User_Pref (obsolete)

FindLine <chaîne de recherche>

FindLine_StartingWith <chaîne de recherche>

FindLine_Containing <chaîne de recherche>

GoToTop

AdvanceLine [<nombre de lignes>]

GoToBottom

DeleteTheLine

AddLine_ <ligne> ou Add_Line_ <ligne>

InsertLine <ligne> ou Insert_Line_ <ligne>

AppendLine <ligne> ou Append_Line <ligne>

Append_File <nom du fichier>

Subtract_File <nom du fichier>

SaveToFile <nom du fichier>

Sorted

4.8. LinkFolder

Fonction: Menu Démarrer + les icônes du bureau

[LinkFolder<identifiant>]

Commandes:

set_basefolder <répertoire systeme>

set_subfolder <chemin du répertoire>

set_link
  name:        <nom du lien>
  target:      <chemin et nom du programme>
  parameters:  [arguments de la ligne de commande]
  working_dir: [répertoire de travaille]
  icon_file:   [chemin et nom du fichier icone, défaut=target]
  icon_index:  [nombre d'icône dans le dossier des icônes, défaut=0]
end_link

delete_element <nom du lien>

delete_subfolder <chemin du répertoire>

Les dossiers prédéfinis du système virtuel qui peuvent être utilisés sont:
desktop, sendto, startmenu, startup, programs, desktopdirectory,
common_startmenu, common_programs, common_startup, common_desktopdirectory

Exemple

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

Les dossiers prédéfinis de systèmes virtuels:
desktop, sendto, startmenu, startup, programs, desktopdirectory
pointent vers les dossiers de l’utilisateur qui exécute le script. Si vous l’utilisez dans un userLoginScript avec l’extension opsi Gestion des profils utilisateur ces dossiers virtuels pointer vers le dossier de l’utilisateur qui vient de se connecter.

4.9. OpsiServiceCall

Fonction: service d’accès opsi

[OpsiServiceCall<identifiant>]

Commandes: voir le manuel

4.10. PatchHosts

Fonction: Éditer des fichiers hôtes

[PatchHosts<identifiant>]

Commandes:

setaddr <nom d’hôte> <adresse IP>

setname <adresse IP> <nom d’hôte>

setalias <nom d’hôte> <alias>

setalias <adresse IP> <alias>

delalias <nom d’hôte> <alias>

delalias <adresse IP> <alias>

delhost <nom d’hôte>

delhost <adresse IP>

setComment <identifiant> <commentaire>

4.11. XMLPatch

Fonction: modifier les fichiers XML

[XMLPatch<identifiant>]

Commandes: voir le manuel

4.12. ExecPython

Fonction: Exécutez la section via l’interpréteur python

[ExecPython<identifier>]

Commandes: voir le manuel

4.13. LdapSearch

Fonction: lire depuis LDAP

[LdapSearch<identifiant>]

Commandes: voir le manuel