OVH Cloud OVH Cloud

connexion wmi

2 réponses
Avatar
Bonjour =E0 tous,

J'utilise dans une boucle une connexion wmi sur chaque PC=20
du domaine.

Set objWmiservice=3D GetObject
("winmgmts:"&"{impersonationLevel=3Dimpersonate}!\\" &=20
ComputerName & "\root\cimv2").

Lorsque le PC est inaccessible, la boucle s'arr=EAte ou=20
devient tr=E8s longue du fait que le Set objwmiservice ne=20
peut se faire.

Peut cr=E9er une condition qd le pc est inaccessibe et=20
passer au pc suivant.

Merci

2 réponses

Avatar
Jean-Claude BELLAMY
Dans le message news:2108801c459c0$c1030510$ ,

s'est ainsi exprimé:

Bonjour à tous,

J'utilise dans une boucle une connexion wmi sur chaque PC
du domaine.

Set objWmiservice= GetObject
("winmgmts:"&"{impersonationLevel=impersonate}!" &
ComputerName & "rootcimv2").

Lorsque le PC est inaccessible, la boucle s'arrête ou
devient très longue du fait que le Set objwmiservice ne
peut se faire.

Peut créer une condition qd le pc est inaccessibe et
passer au pc suivant.



La méthode que j'utilise dans ce cas est très "agricole", mais elle a le
mérite de fonctionner :
Elle suppose au départ :
- que le script est lancé sous un compte administrateur
(quand on fait tourner un script WMI s'adressant à
plusieurs machines, c'est généralement le cas)
- que les partages administratifs n'ont pas été désactivés
(donc plate-forme NT. Ne peut pas marcher avec Win9X/ME)

Il suffit alors de tester l'existence du dossier nom-du-pcadmin$
(qui désigne le %systemroot% de l'ordinateur distant, donc un dossier qui
existe toujours si la machine fonctionne)

Dans le cas où le PC est inaccessible, cela prend un peu de temps, mais
beaucoup moins qu'un GetObject qui n'aboutit pas.

...
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
...
UNC="" & ComputerName
if fso.FolderExists(UNC & "admin$") then
Set objWmiservice= GetObject("winmgmts:" & UNC & "rootcimv2")
...
end if


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


Avatar
Merci

c'est OK

-----Message d'origine-----
Dans le message news:2108801c459c0$c1030510
$ ,




s'est ainsi exprimé:

Bonjour à tous,

J'utilise dans une boucle une connexion wmi sur chaque
PC


du domaine.

Set objWmiservice= GetObject
("winmgmts:"&"{impersonationLevel=impersonate}!" &
ComputerName & "rootcimv2").

Lorsque le PC est inaccessible, la boucle s'arrête ou
devient très longue du fait que le Set objwmiservice ne
peut se faire.

Peut créer une condition qd le pc est inaccessibe et
passer au pc suivant.



La méthode que j'utilise dans ce cas est très "agricole",
mais elle a le

mérite de fonctionner :
Elle suppose au départ :
- que le script est lancé sous un compte
administrateur

(quand on fait tourner un script WMI s'adressant à
plusieurs machines, c'est généralement le cas)
- que les partages administratifs n'ont pas été
désactivés

(donc plate-forme NT. Ne peut pas marcher avec
Win9X/ME)


Il suffit alors de tester l'existence du dossier nom-du-
pcadmin$

(qui désigne le %systemroot% de l'ordinateur distant,
donc un dossier qui

existe toujours si la machine fonctionne)

Dans le cas où le PC est inaccessible, cela prend un peu
de temps, mais

beaucoup moins qu'un GetObject qui n'aboutit pas.

....
Set fso = WScript.CreateObject
("Scripting.FileSystemObject")

....
UNC="" & ComputerName
if fso.FolderExists(UNC & "admin$") then
Set objWmiservice= GetObject("winmgmts:" & UNC
& "rootcimv2")

...
end if


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



.