Opsi – Scripts avancés

Opsi

Opsi (Open PC Server Integration) est un outil de gestion de clients Windows basé sur un serveur Linux et sous licence AGPLv3 (hors code des modules cofinancés), version modifiée et orientée serveurs de la licence GPLv3. Son code source est la propriété de la société uib gmgh et son représentant en France/Belgique est la société Opensides.

uibopensides

Ses fonctionnalités principales sont :

  • Installation automatisée via PXE de systèmes d’exploitation clients Windows par le biais d’une image
  • Distribution automatique des logiciels via une connexion agent/serveur
  • Intégration automatique des drivers en se basant sur l’ID de ceux-ci
  • Inventaires matériels et logiciels
  • Dépôts logiciels multiples et décentralisés

 

Objectif

 

L’objectif de cet article est d’apporter des éclaircissements sur les commandes, les variables, les sections ou encore la syntaxe utilisées lors de la mise en place de scripts Opsi Winst.

 

Pré-requis

 
Cet article requiert évidemment la mise en place préalable d’un serveur Opsi fonctionnel.
Pour cela, voir les articles connexes :

De plus, il est préférable d’avoir consulté les articles suivants relatifs aux scripts Opsi Winst :

 

Réalisation

 

0. Remarque préalable

Les différentes sections du script Opsi Winst peuvent être appelées avec différents paramètres spécifiques à Opsi, dont ceux-ci :

    /32Bit : script exécuté sur un système 32 bits
    /64Bit : script exécuté sur un système 64 bits
    /SysNative : l’architecture est automatiquement détectée

Ils sont principalement requis par souci de compatibilité, en cas d’appel d’exécutables ou d’arborescences spécifiques à une architecture, ou encore lorsque les variables prédéfinies citées plus bas sont utilisées.

 

1. Les variables prédéfinies

1.1. Les variables système propres à l’architecture

Système 32 bits Système 64 bits Commentaires
%ProgramFilesDir% "C:\Program Files" "C:\Program Files (x86)" Programmes 32 bits
%ProgramFiles32Dir% "C:\Program Files" "C:\Program Files (x86)" Programmes 32 bits
%ProgramFiles64Dir% "C:\Program Files" Programmes 64 bits
%ProgramFilesSysnativeDir% "C:\Program Files" Programmes 32 bits
%ProgramFilesSysnativeDir% "C:\Program Files" Programmes 64 bits

 

1.2. Les variables système propres aux différentes versions de Windows

A partir de Windows Vista Jusqu’à Windows XP Commentaires
%ProfileDir% "C:\Users" "C:\Documents and Settings" Racine profils utilisateurs
%AllUsersProfileDir% "C:\Users\Public" "C:\Documents and Settings\All Users" Profil public
%CommonProfileDir% "C:\Users\Public" "C:\Documents and Settings\All Users" Profil public (idem ci-dessus)
%CommonStartMenuPath% "C:\ProgramData\Microsoft\Windows\Start Menu" "C:\Documents and Settings\All Users\Start Menu" Menu démarrer profil public
%CommonStartmenuDir% "C:\ProgramData\Microsoft\Windows\Start Menu" "C:\Documents and Settings\All Users\Start Menu" Menu démarrer profil public
%CommonAppdataDir% "C:\ProgramData" "C:\Documents and Settings\All Users\Application Data" Données applicatives communes
%CommonDesktopDir% "C:\Users\Public\Desktop" "C:\Documents and Settings\All Users\Desktop" Bureau public
%CommonStartupDir% "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup" "C:\Documents and Settings\All Users\Start Menu\Programs\Startup" Scripts/programmes au démarrage
%CommonProgramsDir% "C:\ProgramData\Microsoft\Windows\Start Menu\Programs" "C:\Documents and Settings\All Users\Start Menu\Programs" Programmes menu démarrer
%DefaultUserProfileDir% "C:\Users\Default" "C:\Documents and Settings\Default User" Profil par défaut
%AppdataDir% "C:\Users\LoggedInUser\AppData\Roaming" "C:\Documents and Settings\LoggedInUser\Application Data" Données applicatives utilisateur connecté
%CurrentAppdataDir% "C:\Users\LoggedInUser\AppData\Roaming" "C:\Documents and Settings\LoggedInUser\Application Data" Données applicatives utilisateur connecté (idem ci-dessus)
%CurrentStartmenuDir% "C:\Users\LoggedInUser\AppData\Roaming\Microsoft\Windows\Start Menu" "C:\Documents and Settings\LoggedInUser\Start Menu" Menu démarrer utilisateur connecté
%CurrentDesktopDir% "C:\Users\LoggedInUser\Desktop" "C:\Documents and Settings\LoggedInUser\Desktop" Bureau utilisateur connecté
%CurrentStartupDir% "C:\Users\LoggedInUser\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup" "C:\Documents and Settings\LoggedInUser\Start Menu\Programs\Startup" Scripts/programmes au démarrage utilisateur connecté
%CurrentProgramsDir% "C:\Users\LoggedInUser\AppData\Roaming\Microsoft\Windows\Start Menu\Programs" "C:\Documents and Settings\LoggedInUser\Start Menu\Programs" Programmes menu démarrer utilisateur connecté
%CurrentSendToDir% "C:\Users\LoggedInUser\AppData\Roaming\Microsoft\Windows\SendTo" "C:\Documents and Settings\LoggedInUser\SendTo" Envoyer vers, utilisateur connecté
%CurrentProfileDir% "C:\Users\LoggedInUser" "C:\Documents and Settings\LoggedInUser" Profil utilisateur connecté
%Systemroot% "C:\Windows" "C:\WINDOWS" Racine dossier système Windows
%System% "C:\Windows\system32" "C:\WINDOWS\system32" Racine dossier système system32
%Systemdrive% "C:" "C:" Racine disque système

 

1.3. Les variables propres à Opsi

Exemples de valeurs Commentaires
%ScriptPath% "P:\firefox\" Emplacement script en cours d’exécution
%ScriptDir% "P:\firefox\" Emplacement script en cours d’exécution
%WinstDir% "C:\Program Files\opsi.org\opsi-client-agent\opsi-winst" Emplacement local dossier Opsi Winst
%WinstVersion% "4.11.6.11" Version Opsi Winst sur client
%Logfile% "C:\opsi.org\log\opsi-script.log" Fichier local de log Opsi Winst
%opsiTmpDir% "C:\opsi.org\tmp" Dossier local fichiers temporaires Opsi Winst
%opsiLogDir% "C:\opsi.org\log" Dossier local fichiers de logs Opsi Winst

 

1.4. Les variables système propres à l’hôte client

Exemples de valeurs Commentaires
%PCName% "OPSICLT7-01" Nom NetBIOS du client
%Username% "Administrateur" Utilisateur connecté
%IPName% "opsiclt7-01" Nom court du client
%IPAddress% "192.168.1.201" Adresse IP du client
%HostID% "OPSICLT7-01" FQDN du client ou nom NetBios si en WORKGROUP

 

2. Commandes pour la section [Files_install]

 

2.1. copy [Files_install]

copy -suxncV file|directory\ target-directory\

 

COPY
Options Signification
-s mode récursif : copie récursive des fichiers et dossiers
-u mode update : seuls les fichiers de même nom et plus récents sont copiés
-x mode extraction : copie une archive zip et l’extrait sur la destination
-n mode préservation : les fichiers de même nom sur la destination ne sont pas écrasés
-c mode reprise : si le fichier destination est en cours d’utilisation, il ne sera écrasé qu’après redémarrage du système
-V mode vérification : une bibliothèque Windows ne sera pas écrasée par une plus ancienne
copy C:\src\file1.txt C:\dest OK
copy C:\src\file1.txt C:\dest\ OK (identique ci-dessus et à préférer)
copy C:\src\file1.txt C:\dest\
copy C:\src\file2.txt C:\dest\
OK
copy -s C:\src\ C:\dest\ OK (copie le contenu et non le dossier lui-même)
copy -s C:\src\* C:\dest\ OK (identique à ci-dessus)
copy -x C:\src\test.zip C:\dest\ OK
copy C:\src\file1.txt C:\src\file2.txt C:\dest\ NOK (file2 considéré comme destination)
copy -s C:\src C:\dest\ NOK Le slash final de la source est impératif
copy -x C:\src\test.jar C:\dest\ NOK (un fichier jar est une archive zip, elle sera extraite)
  • La commande copy est très proche de la commande batch xcopy de Windows
  • Par défaut, la commande copy écrase les fichiers de même nom sur la destination (il n’y a pas, en conséquence, d’option -f)
  • Un fichier .jar étant une archive zip, elle sera dézippée sur la destination si le paramètre -x est utilisé
  • Une archive zip est identifiée par ses métadonnées et non par son extension
  • Si le répertoire de destination n’existe pas, il sera créé, tout comme l’arborescence avant lui.
  • Seul le contenu du dossier est copié, en mode récursif. Pour copier le dossier lui même, il faut le générer sur la destination :
    copy -s C:\src\ C:\dest\src\

 

2.2. del (ou delete) [Files_install]

del -sfc file|directory/

 

DEL
Options Signification
-s mode récursif : suppression récursive des fichiers et dossiers
-f mode force : force la suppression des fichiers et dossiers en lecture seule
-c mode reprise : si le fichier destination est en cours d’utilisation, il ne sera supprimé qu’après redémarrage du système
del -f C:\src\file1.txt OK
del -sf C:\src OK (supprime le dossier src et son contenu)
del -sf C:\src\ OK (identique ci-dessus et à préférer)
del -sf C:\src\* OK (copie uniquement le contenu et maintient le dossier src)

 

2.3. move et rename [Files_install]

move|rename oldfilename newfilename

 

move C:\src\file1.txt C:\src\file1.txt.old OK (renomme le fichier)
rename C:\src\file1.txt C:\src\file1.txt.old OK (idem ci-dessus, renomme le fichier)
move C:\src\file1.txt C:\bkp\file1.txt.old OK (déplace le fichier)
rename C:\src\file1.txt C:\bkp\file1.txt.old OK (idem ci-dessus, déplace le fichier)
move C:\src\ C:\src.old\ NOK (ne fonctionne pas sur les dossiers)
rename C:\src\ C:\src.old\ NOK (idem ci-dessus, ne fonctionne pas sur les dossiers)
move C:\src\* C:\dst\ NOK
rename C:\src\* C:\dst\ NOK
  • move et rename sont deux fonctions identiques, seuls leurs noms diffèrent
  • Ces deux fonctions ne fonctionnent que sur les fichiers, pas sur les dossiers
  • Le fichier source est renommé (si dossier destination identique) ou déplacé (si dossier destination différent)
  • Le dossier destination (en cas de déplacement) doit exister, il ne sera pas créé le cas échéant
  • Un fichier existant du même nom en destination sera écrasé

 

3. Commandes pour la section [Registry_install]

 

3.1. OpenKey [Registry_install]

OpenKey [path\to\key]

 

OpenKey [HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Firefox\test] OK
  • Crée une clef de registre et toute son arborescence en amont si nécessaire
  • La clef est automatiquement fermée ensuite, après d’éventuelles modifications (ajout, modification, suppression)
  • Si la clef existe déjà, elle est seulement ouverte en vue d’éventuelles modifications (ajout, modification, suppression) puis refermée

 

3.2. DeleteKey [Registry_install]

DeleteKey [path\to\key]

 

DeleteKey [HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Firefox\test] OK
  • Supprime une clef de registre et ses sous-clefs mais maintient l’arborescence en amont de celle-ci

 

3.3. Set [Registry_install]

Set "varname" = REGISTRY_TYPE:value

 

Avec REGISTRY_TYPE pouvant prendre les valeurs suivantes :

  • REG_SZ : chaîne de caractères (string), valeur par défaut
  • REG_EXPAND_SZ : chaîne de caractères interprétable (contenant des variables système)
  • REG_DWORD : valeur entière de 32 bits en décimal (max 4294967295) ou hexadécimal (max 0xffffffff)
  • REG_BINARY : valeur binaire affichée en hexadécimal par groupes d’octets (ex : AB 12 CE 56 EF AB 78 12 AA)
  • REG_MULTI_SZ : chaîne de caractères multi-valeurs séparées par un pipe ( | )

 

OpenKey [HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Firefox\test]
Set "FileTransferEnabled"=reg_dword:0x00000000
OK

 

La procédure d’ajout de plusieurs entrées dans la base de registre peut se faire de différentes manières :

Via la section [Winbatch_install] :

[Winbatch_install]
regedit /s "%ScriptPath%/test.reg"

avec test.reg contenant :

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Firefox\test]
"var1"="my string"
"var2"="my string"
"var3"=hex(2):25,00,50,00,72,00,6f,00,67,00,72,00,61,00,6d,00,46,00,69,00,6c,\
  00,65,00,73,00,25,00,00,00
"var4"=dword:0000007b
"var5"=dword:0000007b
"var6"=hex:00,01,02,0f,10
"var7"=hex(7):41,00,00,00,42,00,43,00,00,00,64,00,65,00,00,00,00,00

Ou via la section [Registry_install] :

[Registry_install]
OpenKey [HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Firefox\test]
Set "var1" = "my string"
Set "var2" = REG_SZ:"my string"
Set "var3" = REG_EXPAND_SZ:"%ProgramFiles%"
Set "var4" = REG_DWORD:123
Set "var5" = REG_DWORD:0x7b
Set "var6" = REG_BINARY:00 01 02 0F 10
Set "var7" = REG_MULTI_SZ:"A|BC|de"

Ce qui donne, une fois l’ajout effectué :


 

3.4. Deletevar [Registry_install]

Deletevar "varname"

 

OpenKey [HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Firefox\test]
Deletevar "FileTransferEnabled"
OK

 

4. Sections [DOSBatch] et [DOSInAnIcon]

 
La section [Winbatch_install] ne reconnait pas les commandes DOS batch de Windows. Pour pouvoir les utiliser, et ainsi multiplier les possibilités offertes par les scripts Opsi Winst, nous devons avoir recours aux sections [DOSBatch] et [DOSInAnIcon] appelées, comme les autres, par la section [Actions]. Autant de ces sections peuvent être créées dès lors qu’elles sont rendues uniques avec un suffixe choisi arbitrairement les identifiant. Ainsi, non seulement des commandes DOS batch peuvent être prises en charge, mais aussi des scripts batch.

  • Des variables propres à Opsi (voir plus haut, 1. Les variables prédéfinies) peuvent être utilisées car substituées avant l’exécution des commandes batch
  • Ces commandes sont copiées en local sur le client, dans un fichier temporaire stocké dans le répertoire C:\opsi.org\tmp\ et portant un nom du type _opsiscript_.cmd, avant d’être exécutées
  • La seule différence entre les sections [DOSBatch] et [DOSInAnIcon] est que pour [DOSBatch] une fenêtre d’invite de commandes est affichée alors qu’avec [DOSInAnIcon] le retour est masqué (sauf si le paramètre /showouput est utilisé afin de rediriger la sortie). De ce fait, pour cette dernière, l’interaction potentielle avec l’utilisateur n’est pas possible.
  • Ces sections peuvent être appelées avec des paramètres batch, séparés des paramètres Opsi (/32bit, /64bit, /Sysnative et /showoutput) par le mot-clef winst (il doit d’ailleurs être utilisé pour appeler les paramètres Opsi Winst, même sans recours aux paramètres batch)

Ce script temporaire généré est exécuté localement ainsi (logs) :

Executing "cmd.exe" /C c:\opsi.org\tmp\_opsiscript_Ih85Rl33.cmd

Puis supprimé :

Delete "c:\opsi.org\tmp\_opsiscript_*"

 

[Actions]
	DOSBatch_1 arg1 arg2 arg3 winst /32Bit
	DOSInAnIcon_1 arg1 arg2 arg3 winst /32Bit /showoutput

[DOSBatch_1]
;Commandes batch de Windows (avec affichage de l'invite de commandes)
@echo off
echo %1 %2 %3
pause

[DOSInAnIcon_1]
;Commandes batch de Windows (sans affichage de l'invite de commandes)
@echo off
echo %1 %2 %3
ping 127.0.0.1 -n 5 > nul

Rmq :
La commande ping est utilisée ici uniquement pour marquer une pause sur la sortie, sachant que la commande batch pause n’est pas prise en compte par le paramètre /showoutput
 

4.1. Premier exemple

4.1.1. Exemple avec DOSBatch
[Actions]
	DOSBatch_1 un deux trois winst /32Bit

[DOSBatch_1]
@echo off
echo %1 %2 %3
pause

4.1.1. Exemple avec DOSInAnIcon

Par défaut, cette section ne génère aucun retour visuel, aucune invite de commandes ne s’affiche.
Avec l’option Winst /showoutput, le retour est déportée dans une fenêtre, elle est utilisée pour cet exemple.

[Actions]
	DOSInAnIcon_1 un deux trois winst /32Bit /showoutput

[DOSInAnIcon_1]
@echo off
echo %1 %2 %3
ping 127.0.0.1 -n 5 > nul

Rmq :
La commande ping est utilisée ici uniquement pour marquer une pause sur la sortie, sachant que la commande batch pause n’est pas prise en compte par le paramètre /showoutput
 

4.2. Deuxième exemple

4.2.1. Exemple avec DOSBatch
[Actions]
	DOSBatch_1 winst /32Bit

[DOSBatch_1]
@echo off
dir %Systemdrive%\src\
pause

 

4.2.2. Exemple avec DOSInAnIcon
[Actions]
	DOSInAnIcon_1 winst /32Bit /showoutput

[DOSInAnIcon_1]
@echo off
dir %Systemdrive%\src\
ping 127.0.0.1 -n 5 > nul

Et le retour correspondant dans les logs (ex : C:\opsi.org\log\opsi-script-part-Jr58Vs08.log) :

[6] [mars 04 00:23:11:071]                 output:
[6] [mars 04 00:23:11:081]                 --------------
[6] [mars 04 00:23:11:081]                  Le volume dans le lecteur C n'a pas de nom.
[6] [mars 04 00:23:11:081]                  Le numéro de série du volume est F038-D27B
[6] [mars 04 00:23:11:081]                 
[6] [mars 04 00:23:11:081]                  Répertoire de C:\src
[6] [mars 04 00:23:11:081]                 
[6] [mars 04 00:23:11:081]                 03/03/2017  23:54              .
[6] [mars 04 00:23:11:081]                 03/03/2017  23:54              ..
[6] [mars 04 00:23:11:081]                 02/03/2017  23:11              directory1
[6] [mars 04 00:23:11:081]                 02/03/2017  23:11              directory2
[6] [mars 04 00:23:11:091]                 02/03/2017  22:41                 0 file1.txt
[6] [mars 04 00:23:11:091]                 02/03/2017  22:41                 0 file2.txt
[6] [mars 04 00:23:11:091]                 02/03/2017  23:23            28 234 test.jar
[6] [mars 04 00:23:11:091]                 02/03/2017  23:28            90 112 test.tar
[6] [mars 04 00:23:11:091]                 02/03/2017  23:31            87 766 test.zip
[6] [mars 04 00:23:11:091]                                5 fichier(s)          206 112 octets
[6] [mars 04 00:23:11:091]                                4 Rép(s)  23 412 505 088 octets libres

Rmq :
La commande ping est utilisée ici uniquement pour marquer une pause sur la sortie, sachant que la commande batch pause n’est pas prise en compte par le paramètre /showoutput
 

4.3. Troisième exemple : appel d’un script batch

 
On appelle ici un script test.bat (ou test.cmd), au lieu de lister les commandes à exécuter directement dans le script d’installation.

[Actions]
	DOSBatch_1 winst /32Bit

[DOSBatch_1]
C:\Local\test.bat

 
Avec test.bat contenant :

@echo off
dir %Systemdrive%\src\
pause

 

5. La section [LinkFolder_install]

 
Cette section permet de :
Créer une entrée pour le programme considéré dans le menu Démarrer public :

[LinkFolder_install]
set_basefolder common_programs
set_subfolder $ProductId$

set_link
	name: $ProductId$
	target: $InstallDir$\
	parameters:
	working_dir: $InstallDir$
	icon_file:
	icon_index:
end_link

Supprimer une entrée pour le programme considéré dans le menu Démarrer public :

[LinkFolder_install]
set_basefolder common_programs
delete_subfolder $ProductId$

Créer un raccourci vers le programme considéré sur le bureau public :

[LinkFolder_install]
set_basefolder common_desktopdirectory
set_subfolder ""

set_link
	name: $ProductId$
	target: $InstallDir$\
	parameters: 
	working_dir: $InstallDir$
	icon_file: 
	icon_index: 2
end_link

 
Exemple de création d’une icône pour le programme Mozilla Firefox :

[LinkFolder_install]
set_basefolder common_desktopdirectory

set_link
	name: "Firefox"
	target: "C:\Program Files\Mozilla Firefox\firefox.exe"
	parameters:
	working_dir: "C:\Program Files\Mozilla Firefox"
	icon_file: C:\Program Files\Mozilla Firefox\firefox.exe
	icon_index: 0
end_link

L’attribut icon_index correspond au numéro d’index (démarrant à 0) de l’image d’icône, par exemple ci-dessous l’exécutable de Firefox possède 6 index possibles :

 

6. Les fonctions internes d’Opsi

 

requiredWinstVersion <RELATION SYMBOL> <NUMBER STRING>

ex :

requiredWinstVersion >= "4.11.4.6"

Vérifie que la version de opsi-winst/opsi-script requise pour l’exécution du script est installée. Affiche un message d’erreur le cas échéant.
 

ScriptErrorMessages = <boolean value>

ex :

ScriptErrorMessages = on

Si la valeur est à True (ou on), un résumé des erreurs rencontrées est affiché dans une fenêtre pop-up.
 

DefVar <variable name>

ex :

DefVar $ProductId$
  • Une variable doit être déclarée avant de pouvoir être affectée
  • Une variable est déclarée dans les sections [Actions] ou [Sub_XXXX]
  • Le signe $ (dollar) est utilisé pour entourer le nom des variables par convention (non obligatoire mais conseillé)
  • Une variable est initialisée par défaut à "" (chaîne vide)
  • Une variable ne doit pas être déclarée dans une structure conditionnelle (if-else)

 

Set <Variablenname> = <Value>

ex :

Set $ProductId$       = "firefox"

Affecte une chaîne de caractères à une variable précédemment déclarée.
 

HasMinimumSpace(<DriveName>, <Size>)

ex :

if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$))

Retourne vrai si le lecteur spécifié possède la capacité minimale requise à l’installation définie en octets ou en multiples d’octets (KB, MB ou GB).
 

LogError <string>

ex :

LogError "Not enough space on %SystemDrive%"

Ecrit les messages d’erreur supplémentaires spécifiés dans le fichier de log, et incrémente le compteur d’erreurs de 1.
 

isFatalError <string>

ex :

isFatalError "No Space"

Stoppe le script et retourne une erreur fatale.
La chaîne de caractères spécifiée est optionnelle, elle est envoyée au serveur Opsi puis affichée dans les journaux de Opsi Configed pour le client considéré.
 

comment <string>

ex :

comment "Start setup program"

Affiche un commentaire dans le fichier de log.

[5] [mars 04 02:36:12:540]   comment: Start setup program

 

ShowBitMap <image name> <inscription>

ex :

ShowBitmap "%ScriptPath%\" + $ProductId$ + ".png" $ProductId$

Affiche l’image spécifiée (formats BMP, JPEG ou PNG, de taille 160×160 pixels) et l’inscription spécifiée.
Exemple ci-dessous avec $ProductId$ = firefox :

 

GetProductProperty (<PropertyName>, <DefaultValue>)

ex :

 getProductProperty("dummy_prop", "yes")

Récupère la valeur de la propriété spécifiée (premier argument) en se connectant au service Opsi Configed. Si la valeur ne peut pas être récupérée, la propriété prend la valeur précisée en deuxième argument.
 

FileExists (<file name>)

ex :

if FileExists("%ScriptPath%\delsub32.ins")

Retourne vrai is le fichier ou le dossier spécifié existe.
 

Sub filename

Inclusion de fichier. Appelle le fichier filename afin d’en exécuter le contenu.
 

Sub_section_name

Appelle la sous-section [Sub_section_name] pour en exécuter le contenu
 

Sub_get_licensekey

Vérifie et attribue la licence du logiciel depuis un pool de licences défini
 

Sub_check_exitcode

Teste la réussite de l’installation par son code retour
 

opsiLicenseManagementEnabled : bool

Retourne vrai si le module de gestion des licences est activé.
 

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

ex :

Set $mykey$ = DemandLicenseKey ("pool_office2007")
Set $mykey$ = DemandLicenseKey ("", "office2007")
Set $mykey$ = DemandLicenseKey ("", "", "{3248F0A8-6813-11D6-A77B}")

Requête auprès du serveur Opsi une éventuelle licence réservée pour le client via la fonction getAndAssignSoftwareLicenseKey.
Elle utilise 3 types de paramètres possibles : l’ID du pool de licences, une association avec l’ID du produit ou une association avec l’ID Windows Software.
 

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

Requête auprès du serveur Opsi la libération de la réservation de licence pour le produit considéré.
 

getLastServiceErrorMessage

Retourne le message du dernier message d’erreur.
 

getLastExitCode

Retourne une chaîne contenant le code erreur résultant de la dernière section Winbatch, DOSBatch ou DOSInAnIcon exécutée.
Pour ces deux dernières c’est le code erreur retournée par la ligne de commande Windows.
 

GetRegistrystringvalue("[key] var")
GetRegistrystringvalue32("[key] var")
GetRegistrystringvalue64("[key] var")

Ouvre la clef spécifiée en premier argument afin de retourner la valeur stockée par la variable signifiée en deuxième argument et contenue dans cette clef.
ex :

GetRegistryStringValue("[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] Shell")

L’exemple ci-dessus retournera l’explorateur Windows Explorer.exe.


Par exemple, si dans la clef [HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\opsi-winst-test] nous créons une variable test-4.0 stockant la valeur "standard entry" et que nous requêtons cette variable :

Set $CompValue$ = GetRegistryStringValue32 ("[HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\opsi-winst-test] test-4.0]")

On observera alors les logs suivants :

Registry key [HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\opsi-winst-test\test-4.0]  opened
Key closed
The value of the variable "$CompValue$" is now: "standard entry"

 

Aller plus loin

 

Opsi – Installation du serveur Part1 Opsi – Installation du serveur Part2
Opsi – Creation d’une image Windows 7 Opsi – Installation d’un client Windows 7
Opsi – Creation d’une image Windows 10 Opsi – Installation d’un client Windows 10
Opsi – Creation d’une image Windows XP Opsi – Installation d’un client Windows XP
Opsi – Pour aller plus loin Opsi – Fonctionnement des scripts
Opsi – Exemples de scripts Opsi – Script de test local
Opsi – Scripts avancés Opsi – Création d’un produit
Opsi – Commandes utiles Opsi – Package activate-win Officiel
Opsi – Package windomain Officiel

 

Références

 

Fermer le menu
%d blogueurs aiment cette page :