Acceso denegado a GetObject en WMI en VBScript
Crabe77
-
Usuario anónimo -
Usuario anónimo -
Hola,
Estoy buscando desde hace bastante tiempo la forma de hacer funcionar mi script. Es un script que escanea los puestos de una red y que hace ping así como recupera la resolución de pantalla. Tengo acceso denegado en el getobject.
He intentado hacer la impersonación pero no funciona y siendo novato en el script, ¿podrías darme información? Gracias
while Not f.AtEndOfStream
sPoste = f.readline
wscript.echo "lectura del puesto :" & 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
Configuration: Windows 7 / Safari 535.11
Estoy buscando desde hace bastante tiempo la forma de hacer funcionar mi script. Es un script que escanea los puestos de una red y que hace ping así como recupera la resolución de pantalla. Tengo acceso denegado en el getobject.
He intentado hacer la impersonación pero no funciona y siendo novato en el script, ¿podrías darme información? Gracias
while Not f.AtEndOfStream
sPoste = f.readline
wscript.echo "lectura del puesto :" & 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
Configuration: Windows 7 / Safari 535.11
7 respuestas
-
mientras no 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 -
Hola,
A primera vista:
set colItems = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("Select * From Win32_DesktopMonitor where address = '" & sPoste & "'")
debería leerse como sigue:
set colItems = objWMIService.GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery("Select * From Win32_DesktopMonitor where address = '" & sPoste & "'")
aquí está el ejemplo de uno de mis scripts:
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & Ordinateur & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery("Select * from Win32_Service where Name='Service'")
Cdt
Lupin -
Intenté y siempre obtengo el error en
set objWMIService = GetObject("WinMgmts:{impersonationLevel=impersonate}!//"& sPoste &"/root/cimv2")
Permiso denegado -
Asociado:
Observa bien, tu sintaxis es diferente:
La tuya:
set objWMIService = GetObject("WinMgmts:{impersonationLevel=impersonate}!//"& sPoste &&" /root/cimv2")
La mía:
Set objWMIService = GetObject("winmgmts:&"{impersonationLevel=impersonate}!\\"" & sPoste & ""\root\cimv2")
también puedes intentar reemplazar [ sPoste ] por [ . ] para localhost
gestiona los espacios en la sintaxis.
Cordialmente
Lupin -
-
Escribí en mi script tu trozo de (Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery("Select * from Win32_Service where Name='Service'") ) reemplazándolo por los datos que correspondan y siempre la misma error... -
re:
¡No entiendo, lo siento!
de mi lado funciona en local, pero nunca lo he probado a distancia.
Saludos
Lupin