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
A voir également:
- Winmgmts:\\.\root\cimv2
- Accès refusé - Guide
- Acces rapide - Guide
- Comment supprimer un fichier qui refuse d'être supprimé - Guide
- Trousseau d'accès iphone - Guide
- Accès presse papier - Guide
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
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
À 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
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
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...
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...