Getobject acces refusé WMI en vbscript

Crabe77 -  
 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

7 réponses

  1. Crabe77
     
    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
  2. Utilisateur anonyme
     
    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
  3. Crabe77
     
    J'ai essayer et j'ai toujours l'erreur sur

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

    Permission refusée
    0
  4. Utilisateur anonyme
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Crabe77
     
    Toujours la même erreur, je scanne un poste distant, ce n'est pas en local
    0
  7. Crabe77
     
    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
  8. Utilisateur anonyme
     
    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