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.
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
Références