Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[Résolu] Script Batch pour update/install un logiciel
Auteur Message
Répondre en citant
Message [Résolu] Script Batch pour update/install un logiciel 
Bonjour !

Etant tout nouveau sur le forum, et ramant depuis 2 jours ... Sad, je fais appel à votre aide !

Je dois exécuter un script (ce script) par GPO sur plusieurs ordinateurs (Ma GPO marche pas de soucis !), mon script en revanche.. Pas fort fort x).

Le logiciel que je dois mettre à jour/installer n'est autre qu'OCS Inventory, si cela peut en aider quelques-un.

Petite explication du script (enfin ce que j'en comprends) :
- Il récupère l'architecture de l'ordinateur, donc soit 32 bits ou 64 bits (il a n'a besoin pour installer si besoin le logiciel dans le bon répertoire)
- Si ce répertoire existe, alors il va voir la version, s'il n'existe pas il passe à l'installation et envoi l'inventaire.
- Dans la version, il exécute une commande pour déterminer qu'elle version le logiciel a.
- Si la version est la 2.0.5.3, il passe à l'installation, sinon il envoi l'inventaire de l'ordinateur sur un site.

Voici le script :

--------------------
IF %PROCESSOR_ARCHITECTURE%==x86 SET INSTALLDIR=%ProgramFiles% #32 bits
IF %PROCESSOR_ARCHITECTURE%==AMD64 SET INSTALLDIR=%ProgramFiles(x86)% #64 bits

IF EXIST "%INSTALLDIR%\OCS Inventory agent\OCSInventory.exe" (
goto version
) ELSE (
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\OcsPackage.exe /SERVER=http://<IP du serveur>/ocsinventory #Installation
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<IP du serveur> #Envoi inventaire
goto end
)

:version
Set VERSION=="powershell (gi C:\%INSTALLDIR%\'OCS Inventory Agent'\OCSInventory.exe).versioninfo.Fileversion" #Regarde la version

IF %VERSION%==2.2.0.0 (
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<IP du serveur> #Envoi inventaire
goto end #Fin du script
) ELSE (
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\OcsPackage.exe /SERVER=http://<IP du serveur> #Installation
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<IP du serveur> #Envoi inventaire
goto end
)

:end
exit
--------------------
Version Code :
Code:

IF %PROCESSOR_ARCHITECTURE%==x86 SET INSTALLDIR=%ProgramFiles%
IF %PROCESSOR_ARCHITECTURE%==AMD64 SET INSTALLDIR=%ProgramFiles(x86)%

IF EXIST "%INSTALLDIR%\OCS Inventory agent\OCSInventory.exe" (
   goto version
) ELSE (
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\OcsPackage.exe /SERVER=http://<IP du serveur>/ocsinventory
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<IP du serveur>
goto end
)

:version
Set VERSION=="powershell (gi C:\%INSTALLDIR%\'OCS Inventory Agent'\OCSInventory.exe).versioninfo.Fileversion"

IF %VERSION%==2.2.0.0 (
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<IP du serveur>
goto end
) ELSE (
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\OcsPackage.exe /SERVER=http://<IP du serveur>
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<IP du serveur>
goto end
)

:end
exit

--------------------

Ce qui marche :

%VERSION% me retourne bien la version, soit 2.2.0.0, soit pour l'ancienne 2, 0, 5, 3 (oui je me demande si le fait qu'il y ait une virgule puis un espace, poserais pas de soucis ?)
Les starts marche (pour installer le logiciel et envoyer l'inventaire)

Ce qui ne marche pas :
Les IF / Goto j'ai l'impression.

En ouvrant cmd séparément, et en exécutant mon .bat, cela donne ça :



J'ai l'impression qu'il exécute toute les commandes au final. En exécutant le script sur mon PC, avec le logiciel en version 2.2.0.0, il m'installe le logiciel, pourtant il aurait juste dû envoyer l'inventaire au site non ? Selon mon script, si la version est 2.2.0.0 alors il envoi l'inventaire au serveur et ne fais pas l'installation.

EDIT 01/07/2016 : Il semblerait que ce soit un problème dans ma variable, elle me retourne la commande et non une valeur donc le script ne peut pas comparer les versions ! Il faut que je cherche comment faire pour récupérer le résultat d'une commande.. !
EDIT 01/07/2016 11:12 : Infructueux, cela ne vient pas de là, j'ai essayé d'assouplir mon code :
Code:

IF NOT EXIST "C:\'Program Files (x86)'\'OCS Inventory agent'\OCSInventory.exe" (
goto install
)
IF EXIST "C:\Program Files (x86)\OCS Inventory agent\OCSInventory.exe" (
Set VERSION=="powershell (gi "C:\Program Files (x86)\OCS Inventory Agent\OCSInventory.exe").versioninfo.Fileversion"
IF %VERSION%==2.2.0.0
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<IP du serveur>
goto end
) ELSE (
:install
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\OcsPackage.exe /SERVER=http://<IP du serveur>
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<IP du serveur>
goto end
)

:end
exit

Le logiciel est bien installé dans C:\Program Files (x86)\OCS Inventory Agent\, j'ai vérifié en tapant mes commandes etc, donc normalement il ne devrait pas passer par le IF NOT EXIST, hors dans mes tests, il y passe, c'est à dire qu'il ré-installe mon logiciel alors qu'il y est déjà... Je comprends pas trop...
Vous allez me dire que cette syntaxe est bizarre : "C:\'Program Files (x86)'\'OCS Inventory agent'\OCSInventory.exe", avec les '' dans des guillements, mais si je ne les met pas j'ai ce message :


Edit 01/07/2016 12:20 : Autre tentative infructueuse...
Code:

cd C:\Program Files (x86)\OCS Inventory agent\
Set VERSION=="powershell (gi C:\'Program Files (x86)'\'OCS Inventory Agent'\OCSInventory.exe).versioninfo.Fileversion"

IF EXIST OCSInventory.exe goto version
IF NOT EXIST OCSInventory.exe goto install

:version
IF %VERSION%==2.2.0.0 goto update
IF %VERSION% LSS 2.2.0.0 goto install

:install
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\OcsPackage.exe /SERVER=http://<Ip du serveur>
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<Ip du serveur>
goto end

:update
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<Ip du serveur>
goto end

:end
exit

Il m'exécute toutes les commandes.....

J'espère que vous aurez cerner mon problème, car malgré des recherches sur internet, je ne trouve vraiment pas la cause de mon souci.. N'hésitez pas à me demander des choses, si vous ne comprenez pas, mais j'ai essayé de faire clair :/

Cordialement,
Vincent



Dernière édition par AerWyn81 le Ven 1 Juil 2016 - 13:53; édité 1 fois
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Re: Script Batch pour update/install un logiciel 
Je ne saurais pas tout répondre mais :
AerWyn81 a écrit:

Code:
IF %VERSION%==2.2.0.0 (

(oui je me demande si le fait qu'il y ait une virgule puis un espace, poserais pas de soucis ?)

À cause des espaces possibles dans la version, ça serait plutôt :
Code:
IF "%VERSION%"=="2.2.0.0" (
[/code]
Avec les guillemets c'est mieux car quand on a l'ancienne version, ça exécute IF 2, 0, 5, 3 == 2.2.0.0 etc ce qui fait une mauvaise syntaxe. Alors qu'avec mon code, ça donnerait IF "2, 0, 5, 3" == "2.2.0.0" etc et là, la syntaxe est bonne.

Pour le dernier code, le IF avec le LSS je ne pense pas que ça fonctionne car les versions ne sont pas des nombres.




______________________________________________________
Cordialement,
Hugo, qui adore programmer, jouer à Minecraft, ZT2 et FSX.
Boutons-liens :
Visiter le site web du posteur Skype
Répondre en citant
Message Re: Script Batch pour update/install un logiciel 
Essaie ce code :
Code:

IF /i "%PROCESSOR_ARCHITECTURE%" EQU "x86" (SET INSTALLDIR=%ProgramFiles%) else (
SET INSTALLDIR=%ProgramFiles%^(x86^)
)
 
IF NOT EXIST "%INSTALLDIR%\OCS Inventory agent\OCSInventory.exe" (
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\OcsPackage.exe /SERVER=http://<IP du serveur>/ocsinventory
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<IP du serveur>
exit
)
for /f "tokens=*" %%a in ('powershell "(gi C:\%INSTALLDIR%\'OCS Inventory Agent'\OCSInventory.exe).versioninfo.Fileversion"') do set VERSION=%%a
 
IF /i "%VERSION%" EQU "2.2.0.0" (
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<IP du serveur>
exit
) ELSE (
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\OcsPackage.exe /SERVER=http://<IP du serveur>
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<IP du serveur>
exit
)


@ ++ Okay Wink




______________________________________________________
Coucou, tu veux voir mon Site Web ?? Mort de Rire
Visiter le site web du posteur Skype
Répondre en citant
Message [Résolu] Script Batch pour update/install un logiciel 
Rebonjour !

Alors j'ai pris un peu de vos deux propositions, plus quelques tentatives de ma part, et le résultat est sans appel ! Cela fonctionne comme il faut ! Smile

Voici le code pour ceux que sa pourrais intéresser :

Code:

cd "C:\Program Files (x86)\OCS Inventory agent\"
for /f "tokens=*" %%a in ('powershell "(gi C:\'Program Files (x86)'\'OCS Inventory Agent'\OCSInventory.exe).versioninfo.Fileversion"') do set VERSION=%%a

IF NOT EXIST OCSInventory.exe goto install
IF EXIST OCSInventory.exe goto version

:version
IF "%VERSION%" EQU "2.2.0.0" goto update
IF "%VERSION%" EQU "2, 0, 5, 3" goto install

:install
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\OcsPackage.exe /SERVER=http://<IP du serveur>
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<IP du serveur>
goto end

:update
start /w \\<domaine>\SYSVOL\<domaine.local>\Policies\{66D81CCE-3509-4195-A948-C1BA3F97DB33}\User\Scripts\Logon\"OCS Inventory Agent"\OCSInventory.exe /SERVER=http://<IP du serveur>
goto end

:end
exit


Je vous remercie de l'attention et la rapidité dont vous avez fait preuve pour m'aider à résoudre ce problème !
Bonne fin d'après-midi !

Cordialement,
Vincent



Message [Résolu] Script Batch pour update/install un logiciel 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch