desinstallation application MBSA en VB
Le
test

Bonjour à tous ,
pas doué pour deux sous en dev , je dois desinstaller MBSA de tout mon
les clients de mon parc
J'ai trouvé le script ci dessous chez Microsoft qui , après
modification avec le nom de l'appli ( 'Microsoft Baseline Security
Analyzer 2.0.1') ici effectue cette desinstallation
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" _
& strComputer & "ootcimv2")
Set colSoftware = objWMIService.ExecQuery _
("Select * from Win32_Product " _
& "Where Name = 'Microsoft Baseline Security Analyzer 2.0.1'")
For Each objSoftware in colSoftware
objSoftware.Uninstall()
Next
le souci que je rencontre est que plusieurs versions de MBSA
cohexistent dans le parc et que ce script ne fonctionne qu' avec la
version 2.0.1.
que modifier pour que ce script fonctionne avec toutes les versions ?
en fait je voudrais qu 'il ne se base que sur le debut de la chaine
''Microsoft Baseline Security Analyzer' pour s' executer
J'ai essayé de remplacé le numero de versions par un * , fais des
tests avec LIKE mais je tourne en rond sans aucun succés
merci d'avance si vous avez une idée pour contourner le pb ou orienter
ma reflexion .
pas doué pour deux sous en dev , je dois desinstaller MBSA de tout mon
les clients de mon parc
J'ai trouvé le script ci dessous chez Microsoft qui , après
modification avec le nom de l'appli ( 'Microsoft Baseline Security
Analyzer 2.0.1') ici effectue cette desinstallation
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" _
& strComputer & "ootcimv2")
Set colSoftware = objWMIService.ExecQuery _
("Select * from Win32_Product " _
& "Where Name = 'Microsoft Baseline Security Analyzer 2.0.1'")
For Each objSoftware in colSoftware
objSoftware.Uninstall()
Next
le souci que je rencontre est que plusieurs versions de MBSA
cohexistent dans le parc et que ce script ne fonctionne qu' avec la
version 2.0.1.
que modifier pour que ce script fonctionne avec toutes les versions ?
en fait je voudrais qu 'il ne se base que sur le debut de la chaine
''Microsoft Baseline Security Analyzer' pour s' executer
J'ai essayé de remplacé le numero de versions par un * , fais des
tests avec LIKE mais je tourne en rond sans aucun succés
merci d'avance si vous avez une idée pour contourner le pb ou orienter
ma reflexion .
Ne comparer que la partie commune (ici les 35 premières lettres) avec
la fonction Left()
... Where Left(Name, 35) = _
'Microsoft Baseline Security Analyzer'")
Les fonctions Left(), Right(), Mid() sont communes à plein de
langages. Ne pas oublier les fonctions Trim qui permettent de
supprimer les espaces avant/arrière, source d'erreurs.
Non, ça c'est un 'joker' pour système d'exploitation
Non plus, LIKE c'est pour le SQL
Par contre avec les expression régulière ceci serait aussi valable
si on veut affiner
^Microsoft Baseline Security Analyzer.+$
^ = Début de la chaine
$ = Fin de la chaine
.+ = N'importe quel caractère en quantité illimité.
on peut restreindre à des valeurs numériques
en remplaçant .+ par [d+.] ce qui signifie "des chiffre OU des
points" (2.0.1 valable aussi bien que 99.1.0.10 etc)
ou restreindre encore plus
d+.d+.d+ (= chiffres . chiffres . chiffres)
Télécharge l'indispensable fichier d'aide VBScript
"Technologies de Microsoft Windows Script"