Getobject acces refusé WMI en vbscript
Crabe77
-
Utilisateur anonyme -
Utilisateur anonyme -
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
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 -
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 -
J'ai essayer et j'ai toujours l'erreur sur
set objWMIService = GetObject("WinMgmts:{impersonationLevel=impersonate}!//"& sPoste &"/root/cimv2")
Permission refusée -
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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
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... -
re:
je ne comprends pas désolé !
de mon côté ça fonctionne en local, mais je n'ai jamais testé à distance.
Cdt
Lupin