Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1597 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BATCH] Script de comparaison valeur de registre avec valeur en dur

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[BATCH] Script de comparaison valeur de registre avec valeur en dur

n°2274717
Mad_noob
10 ans d'HFR !
Posté le 30-01-2016 à 12:20:59  profilanswer
 

:hello:  
 
J'ai beaucoup de postes en erreur dans mon parc suite à une GPO qui je pense, à corrompu les installations existantes de Silverlight.
 
Le symptôme c'est qu'aucune màj de Silverlight via le WSUS (ou autrement) ne passe sur ces postes qui affiche un code d'erreur 643. J'ai rien trouvé de mieux que de supprimer manuellement Silverlight sur ces machines (via un script trouvé sur le site de Microsoft) mais pour gagner du temps je voudrais le faire via une GPO, de plus tous ne sont pas impactés...
 
Les postes qui ont un Silverlight fonctionnel mais qu'on ne peut pas désinstaller / mettre à jour ont tous la même version : 5.1.40728.0.
 
J'ai donc essayé de faire ce script :
 

Code :
  1. @ECHO OFF
  2. SETLOCAL EnableDelayedExpansion
  3. FOR /F "tokens=3 delims=." %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Silverlight" /v "Version"') DO SET "Version=%%A"
  4. ECHO %Version%
  5. IF  (%Version%==40728) (
  6. REG DELETE "HKLM\Software\Microsoft\Silverlight" /f
  7. REG DELETE "HKEY_CLASSES_ROOT\Installer\Products\D7314F9862C648A4DB8BE2A5B47BE100" /f
  8. REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\D7314F9862C648A4DB8BE2A5B47BE100" /f
  9. REG DELETE "HKEY_CLASSES_ROOT\TypeLib\{283C8576-0726-4DBC-9609-3F855162009A}" /f
  10. REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\install.exe" /f
  11. REG DELETE "HKEY_CLASSES_ROOT\AgControl.AgControl" /f
  12. REG DELETE "HKEY_CLASSES_ROOT\AgControl.AgControl.5.1" /f
  13. REG DELETE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{89F4137D-6C26-4A84-BDB8-2E5A4BB71E00}" /f
  14. RMDIR /s /q "%ProgramFiles%\Microsoft Silverlight"
  15. RMDIR /s /q "%ProgramFiles(x86)%\Microsoft Silverlight"
  16. ECHO.
  17. ECHO Installation of Silverlight 5.1.41212.0 ...
  18. silverlight.5.1.41212.0.exe /q /doNotRequireDRMPrompt /noupdate
  19. ECHO.
  20. ECHO Finish !
  21. ) ELSE (
  22. ECHO Installation OK !
  23. )
  24. PAUSE


 
NOTE : Les ECHO ne me serviront à rien une fois le script en place, on est d'accord, c'est juste pour m'aider à voir si les conditions sont remplies... :)
 
C'est le début du IF qui me chagrine et j'ai beau y réfléchir je trouve pas. L'idéale serai un comparateur inférieur ou égale à la place de == comme ça mon script prendrait aussi en compte les versions plus vieilles qui existent potentiellement, je ferais d'une pierre deux coup.
 
Ensuite je voudrais faire une GPO machine avec ce script qui sur le poste lira la clé de registre, puis en fonction du résultat déclenche la suppression manuelle suivi de la réinstallation de la nouvelle version. Pour le cas des postes OK, rien ne serai fait car déjà bon.
 
Merci pour votre aide :)


---------------
Topouic Achat / Vente - F33d 0ld-sch00l
mood
Publicité
Posté le 30-01-2016 à 12:20:59  profilanswer
 

n°2274754
rat de com​bat
attention rongeur méchant!
Posté le 30-01-2016 à 17:51:54  profilanswer
 

L'aide intégrée du if (if /?) dit qu'il faut utiliser "LEQ".
 
Mon script de test qui fonctionne:

Code :
  1. @ECHO OFF
  2. SET Version=4
  3. ECHO %Version%
  4. IF %Version% LEQ 3 ( ECHO OUI ) ELSE ( ECHO NON )

n°2274763
Mad_noob
10 ans d'HFR !
Posté le 30-01-2016 à 21:04:29  profilanswer
 

:jap: pour ta réponse...
 
C'est ce que je cherchais à faire sur mes premiers essais et j'ai jamais réussis à y faire fonctionner... Il n'a jamais voulu comparer...  
 
Je vais revoir ma syntaxe en plus de ta réponse !  
 
Je te tiens informé ;)
 
EDIT :  
 

rat de combat a écrit :

L'aide intégrée du if (if /?) dit qu'il faut utiliser "LEQ".
 
Mon script de test qui fonctionne:

Code :
  1. @ECHO OFF
  2. SET Version=4
  3. ECHO %Version%
  4. IF %Version% LEQ 3 ( ECHO OUI ) ELSE ( ECHO NON )



 
En m'inspirant de ton modèle j'ai finis par faire fonctionner mon script... :)
 

Code :
  1. @ECHO OFF
  2. SETLOCAL EnableDelayedExpansion
  3. SET BadVersion=40728
  4. ECHO %BadVersion%
  5. FOR /F "tokens=3 delims=." %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Silverlight" /v "Version"') DO SET "Version=%%A"
  6. ECHO %Version%
  7. IF %Version% LEQ %BadVersion% ( ECHO Uninstallation
  8. ) ELSE (
  9. ECHO NOK )
  10. PAUSE


 
Je vais faire des tests avec les vraies actions attendues mais je pense que ça va fonctionner comme ça... Comme ça il arrive à comparer deux valeurs contenues dans deux variables chacune. Avant cela ne devait pas lui plaire...
 
Un grand merci à toi :jap:


Message édité par Mad_noob le 04-02-2016 à 12:17:37

---------------
Topouic Achat / Vente - F33d 0ld-sch00l

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [BATCH] Script de comparaison valeur de registre avec valeur en dur

 

Sujets relatifs
recherche de script "téléchargement"Ne pas devoir recréer un script pour chaque <div>
BATCH, FOR/R rename fichier avec espace dans le nomBatch qui passe une séquence clavier à MSPAINT
Changer la valeur d'un champs par choix multiplecrystal report - sql pour tester valeur d'un champ
[Resolu]Un script qui active un "bouton moderne"[Resolu] Une script qui valide une formulaire Web
problème double comparaisonFichier batch
Plus de sujets relatifs à : [BATCH] Script de comparaison valeur de registre avec valeur en dur


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR