OVH Cloud OVH Cloud

Version de WSH

5 réponses
Avatar
Bryan
Bonjour,

Y a t'il un moyen de checker la version de WSH sur une machine depuis un
script VBS ? Je voulais faire une requête dans la base de registre mais je ne
trouve pas l'info.

Merci

5 réponses

Avatar
Jean-Claude BELLAMY
Dans le message :,
Bryan a pris la peine d'écrire ce qui suit
:
Bonjour,

Y a t'il un moyen de checker la version de WSH sur une machine depuis
un script VBS ? Je voulais faire une requête dans la base de registre
mais je ne trouve pas l'info.


Tout simplement " WScript.Version"

Exemple de script :

' ----------------------------------------------------------
' Script donnant la version de WSH/VBS en cours
' JC BELLAMY © 2002
' ----------------------------------------------------------
s = "Version de " & ScriptEngine & " : "
s = s & ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion
s = s & " (build " & ScriptEngineBuildVersion & ")"
s = s & VBCRLF & "Version de WSH : " & WScript.Version
wscript.echo s

Ce qui donne (chez moi)
C:>getversion
Version de VBScript : 5.7 (build 5730)
Version de WSH : 5.6


La version complète de WSH est contenue, par exemple, dans la ressource de
version des fichiers :
%systemroot%system32wshom.ocx (5.6.0.8820)
%systemroot%system32wshcon.dll (5.6.0.8820)
%systemroot%system32wshext.dll (5.6.0.8820)


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr

Avatar
Bryan
Merci !


Dans le message :,
Bryan a pris la peine d'écrire ce qui suit
:
Bonjour,

Y a t'il un moyen de checker la version de WSH sur une machine depuis
un script VBS ? Je voulais faire une requête dans la base de registre
mais je ne trouve pas l'info.


Tout simplement " WScript.Version"

Exemple de script :

' ----------------------------------------------------------
' Script donnant la version de WSH/VBS en cours
' JC BELLAMY © 2002
' ----------------------------------------------------------
s = "Version de " & ScriptEngine & " : "
s = s & ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion
s = s & " (build " & ScriptEngineBuildVersion & ")"
s = s & VBCRLF & "Version de WSH : " & WScript.Version
wscript.echo s

Ce qui donne (chez moi)
C:>getversion
Version de VBScript : 5.7 (build 5730)
Version de WSH : 5.6


La version complète de WSH est contenue, par exemple, dans la ressource de
version des fichiers :
%systemroot%system32wshom.ocx (5.6.0.8820)
%systemroot%system32wshcon.dll (5.6.0.8820)
%systemroot%system32wshext.dll (5.6.0.8820)


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr






Avatar
Bryan
Par contre, comment faire cette requête vers une machine distante ? J'ai
toute une série de machine à tester et je ne connais pas vraiment le language
VBS :(

Merci


Dans le message :,
Bryan a pris la peine d'écrire ce qui suit
:
Bonjour,

Y a t'il un moyen de checker la version de WSH sur une machine depuis
un script VBS ? Je voulais faire une requête dans la base de registre
mais je ne trouve pas l'info.


Tout simplement " WScript.Version"

Exemple de script :

' ----------------------------------------------------------
' Script donnant la version de WSH/VBS en cours
' JC BELLAMY © 2002
' ----------------------------------------------------------
s = "Version de " & ScriptEngine & " : "
s = s & ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion
s = s & " (build " & ScriptEngineBuildVersion & ")"
s = s & VBCRLF & "Version de WSH : " & WScript.Version
wscript.echo s

Ce qui donne (chez moi)
C:>getversion
Version de VBScript : 5.7 (build 5730)
Version de WSH : 5.6


La version complète de WSH est contenue, par exemple, dans la ressource de
version des fichiers :
%systemroot%system32wshom.ocx (5.6.0.8820)
%systemroot%system32wshcon.dll (5.6.0.8820)
%systemroot%system32wshext.dll (5.6.0.8820)


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr






Avatar
Jean-Claude BELLAMY
Dans le message :,
Bryan a pris la peine d'écrire ce qui suit
:
Par contre, comment faire cette requête vers une machine distante ?
J'ai toute une série de machine à tester et je ne connais pas
vraiment le language VBS :(


A distance, on va ruser un tout petit peu !

A savoir on va récupérer la version du fichier "wshom.ocx" sur la machine
distante
Il faut évidemment être administrateur.

J'ai écrit un script GETVER.VBS très simple qui donne la version de
n'importe quel fichier binaire de Windows (.EXE, .DLL, .DRV, .SYS, .OCX,
...)

---------- couper ici ----------
Set args=Wscript.Arguments
if args.count=0 then wscript.quit
fic=args(0)
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
if fso.FileExists(fic) then wscript.echo fso.GetFileVersion(fic)
---------- couper ici ----------

On lui passe en paramètre le nom du fichier à tester.
Dans le cas d'un fichier distant, on utilise la syntaxe UNC.

Comme il s'agit d'accéder à un fichier de %systemroot%system32, et comme on
ne sait pas a priori quels sont les partages actifs, le plus simple est
d'utiliser le partage administratif "admin$", qui correspond au partage du
dossier %systemroot% et qui existe toujours.
(cela suppose évidemment que les partages administratifs n'ont pas été
désactivés !)

Exemples personnels :

I:>getver sassandraadmin$system32wshom.ocx
5.6.0.8820
("sassandra" est une station Windows XP PRO)

I:>getver gagnoaadmin$system32wshom.ocx
5.6.0.8820
("gagnoa" est une station Windows XP Media Center 2005)

I:>getver seattleadmin$system32wshom.ocx
5.6.0.8827
("seattle" est un serveur Windows 2003)

I:>getver niameyadmin$system32wshom.ocx
5.6.0.6626
("niamey" est une station Windows 2000 PRO)

Si on veut explorer tout un réseau, il suffit de procéder ainsi :
1) On va créer dans un fichier texte la liste des machines
p.ex. (fichier "listePC.txt")

sassandra
gagnoa
seattle
niamey
...

2) On crée un batch ("GetVerWSH.bat") contenant ceci :

@echo off
for /F %%P in (listePC.txt) do (
echo %%P
cscript getver.vbs %%Padmin$system32wshom.ocx
)

Il suffit alors d'exécuter "GetVerWSH.bat"

Exemple personnel :
I:>getverWSH.bat
sassandra
5.6.0.8820
gagnoa
5.6.0.8820
seattle
5.6.0.8827
niamey
5.6.0.6626
yeelen
5.6.0.8820
korogho
5.6.0.8820
grandbassam
5.6.0.8820

(J'ai mis le VBS et le BAT en pièces-jointes)

Alors, elle est pas belle la vie ? ;-)


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free.fr


begin 666 getver.vbs
M4V5T(&%R9W,]5W-C<FEP="Y!<F=U;65N=',-"FEF(&%R9W,N8V]U;G0],"!T
M:&5N('=S8W)I<'0N<75I= T*9FEC/6%R9W,H,"D-"E-E="!F<V]5U-C<FEP
M="Y#<F5A=&5/8FIE8W0H(E-C<FEP=&EN9RY&:6QE4WES=&5M3V)J96-T(BD-
M"FEF(&9S;RY&:6QE17AI<W1S*&9I8RD@=&AE;B!W<V-R:7!T+F5C:&@9G-O
6+D=E=$9I;&5697)S:6]N*&9I8RD-"@``
`
end

begin 666 getverWSH.bat
M0&5C:&@;V9F#0IF;W(@+T8@)250(&EN("AL:7-T95!#+G1X="&@* T*
M"65C:&@)250#0H@(" @(" @(&-S8W)I<'õR+G9B<R!<7"4E4%QA
E9&UI;B1<<WES=&5M,S)<=W-H;VTN;V-X#0H@(" @(" @("D-"@``
`
end

Avatar
Bryan
Oh oui, la vie est belle ! ;-)

J'ai encore un petit truc à régler. Si la version de WSH est antérieure à la
5.6, il faut que j'installe la 5.6 sur la machine distante. Je prévois de
placer le .exe dans le répertoire Netlogon. J'ai donc inclus une condition IF
dans mon VBS pour installer la version 5.6 si la condition n'est pas
respectée. Seulement je ne sais pas quelle instruction utiliser pour
installer le .EXE (et en mode silence) sur mes machines distantes. (en fait
je ne veux pas passer par une GPO ou Login Script)

C'est ma dernière question !! ;-)

Merci



Dans le message :,
Bryan a pris la peine d'écrire ce qui suit
:
Par contre, comment faire cette requête vers une machine distante ?
J'ai toute une série de machine à tester et je ne connais pas
vraiment le language VBS :(


A distance, on va ruser un tout petit peu !

A savoir on va récupérer la version du fichier "wshom.ocx" sur la machine
distante
Il faut évidemment être administrateur.

J'ai écrit un script GETVER.VBS très simple qui donne la version de
n'importe quel fichier binaire de Windows (.EXE, .DLL, .DRV, .SYS, .OCX,
....)

---------- couper ici ----------
Set args=Wscript.Arguments
if args.count=0 then wscript.quit
fic=args(0)
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
if fso.FileExists(fic) then wscript.echo fso.GetFileVersion(fic)
---------- couper ici ----------

On lui passe en paramètre le nom du fichier à tester.
Dans le cas d'un fichier distant, on utilise la syntaxe UNC.

Comme il s'agit d'accéder à un fichier de %systemroot%system32, et comme on
ne sait pas a priori quels sont les partages actifs, le plus simple est
d'utiliser le partage administratif "admin$", qui correspond au partage du
dossier %systemroot% et qui existe toujours.
(cela suppose évidemment que les partages administratifs n'ont pas été
désactivés !)

Exemples personnels :

I:>getver sassandraadmin$system32wshom.ocx
5.6.0.8820
("sassandra" est une station Windows XP PRO)

I:>getver gagnoaadmin$system32wshom.ocx
5.6.0.8820
("gagnoa" est une station Windows XP Media Center 2005)

I:>getver seattleadmin$system32wshom.ocx
5.6.0.8827
("seattle" est un serveur Windows 2003)

I:>getver niameyadmin$system32wshom.ocx
5.6.0.6626
("niamey" est une station Windows 2000 PRO)

Si on veut explorer tout un réseau, il suffit de procéder ainsi :
1) On va créer dans un fichier texte la liste des machines
p.ex. (fichier "listePC.txt")

sassandra
gagnoa
seattle
niamey
...

2) On crée un batch ("GetVerWSH.bat") contenant ceci :

@echo off
for /F %%P in (listePC.txt) do (
echo %%P
cscript getver.vbs %%Padmin$system32wshom.ocx
)

Il suffit alors d'exécuter "GetVerWSH.bat"

Exemple personnel :
I:>getverWSH.bat
sassandra
5.6.0.8820
gagnoa
5.6.0.8820
seattle
5.6.0.8827
niamey
5.6.0.6626
yeelen
5.6.0.8820
korogho
5.6.0.8820
grandbassam
5.6.0.8820

(J'ai mis le VBS et le BAT en pièces-jointes)

Alors, elle est pas belle la vie ? ;-)


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org ou http://jc.bellamy.free