Getobject acces refusé WMI en vbscript

Fermé
Crabe77 - 6 mars 2012 à 20:03
 Utilisateur anonyme - 7 mars 2012 à 13:22
Bonjour,

Je recherche depuis pas mal de temps le moyen de faire fonctionner mon script, c'est un script qui scanne les postes d'un réseau et qui ping ainsi que récupère la résolution d'écran. J'ai un accès refusé sur le getobject.

J'ai essayer de faire l'impersonation mais ca ne fonctionne pas et étant novice dans le script, pouvez vous me donner des informations ? Merci

while Not f.AtEndOfStream
sPoste= f.readline
wscript.echo "lecture du poste :" & sPoste
'err.clear
set objWMIService = GetObject("winmgmts:\\"& sPoste &"\root\cimv2")
set objWMIService = GetObject("WinMgmts:{impersonationLevel=impersonate}!//"& sPoste &"/root/cimv2")
if err = 0 then
set objPing = objWMIService.ExecQuery("select * from Win32_PingStatus where address = '" & sPoste & "'")
For Each objStatus In objPing
r.Write "ping ok : " & sPoste & vbcrlf
set colItems = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("Select * From Win32_DesktopMonitor where address = '" & sPoste & "'")
'set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor")
for each objItem in colItems

if objItem.ScreenWidth <> null then
wscript.echo "la valeur n'est pas nulle"
'On Error resume next
CurrentRecordSet.open "select Nom_Pos from POSTES where Nom_Pos = '" & sPoste & "' ;" ,oConn
if currentrecordset("Nom_Pos") = null then
wscript.echo "le nom du poste est :" & currentrecordset("Nom_Pos")
Valeur = currentrecordset("Nom_Pos")
CurrentRecordset.close

7 réponses

while Not f.AtEndOfStream
sPoste= f.readline
wscript.echo "lecture du poste :" & sPoste
'err.clear
'set objWMIService = GetObject("winmgmts:\\"& sPoste &"\root\cimv2")
set objWMIService = GetObject("WinMgmts:{impersonationLevel=impersonate}!//"& sPoste &"/root/cimv2")
if err = 0 then
set objPing = objWMIService.ExecQuery("select * from Win32_PingStatus where address = '" & sPoste & "'")
For Each objStatus In objPing
r.Write "ping ok : " & sPoste & vbcrlf
set colItems = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("Select * From Win32_DesktopMonitor where address = '" & sPoste & "'")
'set colItems = objWMIService.ExecQuery("Select * From Win32_DesktopMonitor")
for each objItem in colItems
if objItem.ScreenWidth <> null then
wscript.echo "la valeur n'est pas nulle"
'On Error resume next
CurrentRecordSet.open "select Nom_Pos from POSTES where Nom_Pos = '" & sPoste & "' ;" ,oConn
if currentrecordset("Nom_Pos") = null then
wscript.echo "le nom du poste est :" & currentrecordset("Nom_Pos")
Valeur = currentrecordset("Nom_Pos")
CurrentRecordset.close
0
Utilisateur anonyme
6 mars 2012 à 20:32
Bonjour,

À première vue :

set colItems = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("Select * From Win32_DesktopMonitor where address = '" & sPoste & "'")


devrait se lire comme suit :

set colItems = objWMIService.GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("Select * From Win32_DesktopMonitor where address = '" & sPoste & "'")


voici l'exemple de l'un de mes scripts :

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & Ordinateur & "\root\cimv2")

Set colServiceList = objWMIService.ExecQuery("Select * from Win32_Service where Name='Service'")

Cdt

Lupin
0
J'ai essayer et j'ai toujours l'erreur sur

set objWMIService = GetObject("WinMgmts:{impersonationLevel=impersonate}!//"& sPoste &"/root/cimv2")

Permission refusée
0
Utilisateur anonyme
6 mars 2012 à 21:16
re :

Observe bien, ta syntaxe est différente :

La tienne :
set objWMIService = GetObject("WinMgmts:{impersonationLevel=impersonate}!//"& sPoste &"/root/cimv2")

La mienne :
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & sPoste & "\root\cimv2")

tu peux aussi essayer de remplacer [ sPoste ] par [ . ] pour localhost

gère les espaces dans la syntaxe.

Cdt

Lupin
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Toujours la même erreur, je scanne un poste distant, ce n'est pas en local
0
J'ai écrit dans mon script, ton bout de (Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & Ordinateur & "\root\cimv2")

Set colServiceList = objWMIService.ExecQuery("Select * from Win32_Service where Name='Service'") ) en remplaçant par les données qui vont bien et toujours la même erreur...
0
Utilisateur anonyme
7 mars 2012 à 13:22
re:

je ne comprends pas désolé !

de mon côté ça fonctionne en local, mais je n'ai jamais testé à distance.

Cdt

Lupin
0

Discussions similaires