Page 1 of 2

Algunas cosas Interesantes con WMI

Posted: Thu Apr 10, 2008 2:53 pm
by cuatecatl82
:D :D Saludos a toda la Comunidad: :D :D

Pongo a su disposición algunas funciones que he encontrado investigando un poco con WMI, ojala y a alguien le pueda servir, Si alguin más las puede complementar que mejor para que tengamos un mejor conocimiento de las posibilidades que podemos tener con esta tecnología.

Code: Select all

#Include "FIVEWIN.CH"

Funcion Main()

LOCAL  oDatos
LOCAL    nFree:= ""
LOCAL     oLoc:= CreateObject( "wbemScripting.SwbemLocator" )
LOCAL   objWMI:= oLoc:ConnectServer() 
LOCAL oSistema:= objWMI:ExecQuery("Select * from Win32_PhysicalMedia")
LOCAL   oDisco:= objWMI:ExecQuery("Select * from Win32_LogicalDisk")
LOCAL   oParti:= objWMI:ExecQuery("Select * from CIM_DiskPartition")
LOCAL  oDisket:= objWMI:ExecQuery("Select * From Win32_LogicalDisk Where DeviceID = 'A:'")
LOCAL   objUnd:= objWMI:ExecQuery("Select * from Win32_MappedLogicalDisk")
LOCAL     oUnd:= objWMI:ExecQuery("Select * from Win32_CDROMDrive")
LOCAL  oResolu:= objWMI:ExecQuery("Select * from Win32_DesktopMonitor")
LOCAL  oSistem:= objWMI:ExecQuery("Select * from Win32_OperatingSystem")
LOCAL   oUsers:= objWMI:ExecQuery("Select * from Win32_Account")
LOCAL    oServ:= objWMI:ExecQuery("Select * from Win32_Service Where Name = 'Themes'")
LOCAL    oTime:= objWMI:ExecQuery("Select * from Win32_LocalTime")
LOCAL oJbs := oSrv:ExecQuery( "SELECT * FROM Win32_BaseBoard" )


FOR Each oDatos In oSistema
    MsgInfo("Serial de fabrica: " + ALLTRIM(cValToChar(oDatos:SerialNumber)),"Numero de serie del disco duro")
NEXT



FOR Each oDatos In oDisco
    MsgInfo("Unidad: " + ALLTRIM(cValToChar(oDatos:Name)) + "\   Serial: " + ALLTRIM(cValToChar(oDatos:VolumeSerialNumber)),"Unidad y serial lógico de las unidades de disco")
NEXT



FOR Each oDatos in oParti 
    MsgInfo(ALLTRIM(cValToChar(oDatos:Name)) + " - Tamaño: " +ALLTRIM(cValToChar(oDatos:Size)) + " En: " + ALLTRIM(cValToChar(oDatos:SystemName)) + " - Tipo: " + ALLTRIM(cValToChar(oDatos:TYPE)),"Particiones disponibles")
NEXT



FOR Each oDatos in oDisket
    nFree:= oDatos:FreeSpace
   
   IF VALTYPE(nFree) = "U"
         MsgInfo("No hay diskete en la unidad A:\","Aviso del WMI de Windows")
   ELSE
         MsgStop("Hay un diskete en la unidad A:\","Aviso del WMI de Windows")
   ENDIF
   
NEXT



FOR Each oDatos In objUnd
    MsgInfo("Device ID: " + oDatos:DeviceID +" Nombre: " + oDatos:Name +" Espacio Libre: " + cValtoChar(oDatos:FreeSpace) + " Tamaño: " + cValtoChar(oDatos:Size),"Lista de unidades Mapeadas en Mi PC")    
NEXT



FOR Each oDatos in oUnd
    MsgInfo("Unidad: " + oDatos:Drive + " " + "Nombre: " + oDatos:Caption,"Unidades de CD instaladas en el equipo")
NEXT


 
FOR Each oDatos in oResolu
   MsgInfo("Trabajando a Resolución de Alto: " + cValToChar(oDatos:ScreenHeight) + "  y Ancho: " + cValToChar(oDatos:ScreenWidth),"Resolucion de Panralla")
NEXT



FOR Each oDatos In oSistem
    MsgInfo(oDatos:InstallDate,"Fecha de Instalación de Windows XP")
NEXT



FOR Each oDatos in oSistem
    MsgInfo("Directorio de Windows es: " + oDatos:WindowsDirectory +"  Directorio del Sistema es: "+ oDatos:SystemDirectory,"Directorio de Windows y del Sistema")
NEXT



FOR Each oDatos in oUsers
    MsgInfo(cValToChar(oDatos:Name) + " - " + cValToChar(oDatos:Caption),"Lista de Usuarios de Windows")
NEXT



MsgInfo("Deshabilitarndo los Themes en Windows XP")
FOR Each oDatos in oServ    
    oDatos:StopService()
    SysRefresh()
NEXT



MsgInfo("Habilitando los Themes en Windows XP")
FOR Each oDatos in oServ    
    oDatos:StartService()
    SysRefresh()
NEXT


 
FOR Each oDatos in oSistem
    MsgInfo(oDatos:Caption + " " + oDatos:VERSION,"Sistemas operativos instalados en el PC")
NEXT


 
FOR Each oDatos in oTime
     MsgInfo( "Día: " + cValToChar(oDatos:DAY) + CRLF +;
              "Día de la semana: " + cValToChar(oDatos:DayOfWeek) + CRLF +;
              "Hora: " + cValToChar(oDatos:Hour) + CRLF +;
              "Minutos: " + cValToChar(oDatos:Minute) + CRLF +;
              "Mes: " + cValToChar(oDatos:MONTH) + CRLF +;
              "Segundos: " + cValToChar(oDatos:Second) + CRLF +;
              "Semana en el mes: " + cValToChar(oDatos:WeekInMonth) + CRLF +;
              "Año: " + cValToChar(oDatos:YEAR),"Dia, Hora, Mes y Año desde WMI")
NEXT


FOR EACH oDatos IN oJbs 
        MsgInfo("El Número de Serie de la MotherBoard es: "+Alltrim(cValtoChar(oJob:SerialNumber)),"Desde WMI")
NEXT

Return nil

Un furte Abrazo y Saludos...

Posted: Thu Apr 10, 2008 3:57 pm
by JOSEMAR
BIEN CHIAPAS,

ME AHORRASTE LA INVESTIGACION, Y SE PRODRIA SABER DONDE LO CONSULTASTE?

Posted: Thu Apr 10, 2008 4:58 pm
by cuatecatl82
Saludos al Bello estado de Veracruz: :D :D


Estimado Josemar.. .

Todos estos datos lo he recopilado de:

http://www.davphantom.net/modulo.asp?op=3

Hay algunas cosillas más por ahi en esa pagina, pero algunas no me funcionaron y algunas otras no les tome mucha importancia...

Revisa alomejor algomas te puede servir...

Saludos..

Posted: Thu Apr 10, 2008 5:16 pm
by JOSEMAR
chiapas,

ya vi el enlace y como dices hay buscar las cosas interesantes, gracias por el tip y le voy a ivestigar mas.

Re: Algunas cosas Interesantes con WMI

Posted: Thu Apr 10, 2008 6:19 pm
by mmercado
cuatecatl82 wrote:Pongo a su disposición algunas funciones que he encontrado investigando un poco con WMI, ojala y a alguien le pueda servir, Si alguin más las puede complementar que mejor para que tengamos un mejor conocimiento de las posibilidades que podemos tener con esta tecnología.
Muchas gracias Víctor por seguir compartiendo con nosotros tus trabajos que siempre resultan tan útiles.
cuatecatl82 wrote:Un furte Abrazo y Saludos...
Me quedo con el abrazo y los saludos, no sea que el "furte" resulte ser una grosería Chiapaneca :lol:

Yo nada más te mando un abrazote.

Manuel Mercado

Posted: Thu Apr 10, 2008 9:29 pm
by cuatecatl82
Gracias Estimado Manuel Mercado:

Gracias por tus palabras, siempre he dicho que si algo valioso aprendes, o sabes es bueno compartirlo con todos los que te rodean, es posible que a alguien ayudes aunque sea con un granito de arena...

Me gusta aprender y enseñar lo aprendido, si a alguien puedo ayudar con lo poco que se, será para mi un placer poderlo ayudar...

Y que más que aportar un poquito a toda esta comunidad de compañeros fivewineros que tanto me han ayudado...

Perdón por lo de "furte", la palabra correcta es "fuerte"..


Saludos desde Chiapas.. 8) 8)

Posted: Fri Apr 11, 2008 9:29 am
by Silvio
there are many errors

Code: Select all

[1]:Harbour.Exe testinfo.prg  /m /n0 /w2 /es2 /iC:\work\FWH\include /ic:\work\xHarbour\Include /iinclude;c:\work\BCC55\Bin\include;c:\work\xHarbour\include;c:\work\fwh\include;c:\work\include; /oObj\testinfo.c
xHarbour Compiler build 1.1.0 (SimpLex)
Copyright 1999-2007, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'testinfo.prg'...
testinfo.prg(3) Error E0030  Syntax error: "parse error at 'MAIN'"
testinfo.prg(5) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(6) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(6) Warning W0001  Ambiguous reference: 'NFREE'
testinfo.prg(7) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(7) Warning W0001  Ambiguous reference: 'OLOC'
testinfo.prg(8) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(8) Warning W0001  Ambiguous reference: 'OLOC'
testinfo.prg(8) Warning W0001  Ambiguous reference: 'OBJWMI'
testinfo.prg(9) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(9) Warning W0001  Ambiguous reference: 'OBJWMI'
testinfo.prg(9) Warning W0001  Ambiguous reference: 'OSISTEMA'
testinfo.prg(10) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(10) Warning W0001  Ambiguous reference: 'OBJWMI'
testinfo.prg(10) Warning W0001  Ambiguous reference: 'ODISCO'
testinfo.prg(11) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(11) Warning W0001  Ambiguous reference: 'OBJWMI'
testinfo.prg(11) Warning W0001  Ambiguous reference: 'OPARTI'
testinfo.prg(12) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(12) Warning W0001  Ambiguous reference: 'OBJWMI'
testinfo.prg(12) Warning W0001  Ambiguous reference: 'ODISKET'
testinfo.prg(13) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(13) Warning W0001  Ambiguous reference: 'OBJWMI'
testinfo.prg(13) Warning W0001  Ambiguous reference: 'OBJUND'
testinfo.prg(14) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(14) Warning W0001  Ambiguous reference: 'OBJWMI'
testinfo.prg(14) Warning W0001  Ambiguous reference: 'OUND'
testinfo.prg(15) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(15) Warning W0001  Ambiguous reference: 'OBJWMI'
testinfo.prg(15) Warning W0001  Ambiguous reference: 'ORESOLU'
testinfo.prg(16) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(16) Warning W0001  Ambiguous reference: 'OBJWMI'
testinfo.prg(16) Warning W0001  Ambiguous reference: 'OSISTEM'
testinfo.prg(17) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(17) Warning W0001  Ambiguous reference: 'OBJWMI'
testinfo.prg(17) Warning W0001  Ambiguous reference: 'OUSERS'
testinfo.prg(18) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(18) Warning W0001  Ambiguous reference: 'OBJWMI'
testinfo.prg(18) Warning W0001  Ambiguous reference: 'OSERV'
testinfo.prg(19) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(19) Warning W0001  Ambiguous reference: 'OBJWMI'
testinfo.prg(19) Warning W0001  Ambiguous reference: 'OTIME'
testinfo.prg(20) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(20) Warning W0001  Ambiguous reference: 'OSRV'
testinfo.prg(20) Warning W0001  Ambiguous reference: 'OJBS'
testinfo.prg(23) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(23) Warning W0001  Ambiguous reference: 'OSISTEMA'
testinfo.prg(24) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(24) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(25) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(29) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(29) Warning W0001  Ambiguous reference: 'ODISCO'
testinfo.prg(30) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(30) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(30) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(31) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(35) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(35) Warning W0001  Ambiguous reference: 'OPARTI'
testinfo.prg(36) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(36) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(36) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(36) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(36) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(37) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(41) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(41) Warning W0001  Ambiguous reference: 'ODISKET'
testinfo.prg(42) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(42) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(42) Warning W0001  Ambiguous reference: 'NFREE'
testinfo.prg(44) Warning W0001  Ambiguous reference: 'NFREE'
testinfo.prg(45) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(47) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(48) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(50) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(54) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(54) Warning W0001  Ambiguous reference: 'OBJUND'
testinfo.prg(55) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(55) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(55) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(55) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(55) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(56) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(60) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(60) Warning W0001  Ambiguous reference: 'OUND'
testinfo.prg(61) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(61) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(61) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(62) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(66) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(66) Warning W0001  Ambiguous reference: 'ORESOLU'
testinfo.prg(67) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(67) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(67) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(68) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(72) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(72) Warning W0001  Ambiguous reference: 'OSISTEM'
testinfo.prg(73) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(73) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(74) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(78) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(78) Warning W0001  Ambiguous reference: 'OSISTEM'
testinfo.prg(79) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(79) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(79) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(80) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(84) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(84) Warning W0001  Ambiguous reference: 'OUSERS'
testinfo.prg(85) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(85) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(85) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(86) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(90) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(91) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(91) Warning W0001  Ambiguous reference: 'OSERV'
testinfo.prg(92) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(92) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(93) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(94) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(98) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(99) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(99) Warning W0001  Ambiguous reference: 'OSERV'
testinfo.prg(100) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(100) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(101) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(102) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(106) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(106) Warning W0001  Ambiguous reference: 'OSISTEM'
testinfo.prg(107) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(107) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(107) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(108) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(112) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(112) Warning W0001  Ambiguous reference: 'OTIME'
testinfo.prg(120) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(120) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(120) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(120) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(120) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(120) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(120) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(120) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(120) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(121) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(124) Warning W0001  Ambiguous reference: 'ODATOS'
testinfo.prg(124) Warning W0001  Ambiguous reference: 'OJBS'
testinfo.prg(125) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(125) Warning W0001  Ambiguous reference: 'OJOB'
testinfo.prg(126) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(128) Error E0001  Statement not allowed outside of procedure or function
testinfo.prg(128) Warning W0006  Procedure returns value
55 errors

No code generated

Posted: Fri Apr 11, 2008 11:41 am
by rolando
Silvio,

Solo cambia la línea 3, de "Funcion Main() " a Function Main()

Single it changes line 3, of "Funcion Main() " to Function Main()

Rolando :D

Posted: Mon Dec 08, 2008 12:21 am
by JmGarcia
Y como se leerían com WMI todos los datos de red... algo así como el ipconfig /all de consola de MS-DOS.

Este tipo de datos:

Code: Select all

Adaptador Ethernet Conexión de área local          :

        Sufijo de conexión específica DNS :
        Descripción. . . . . . . . . . .  : NIC TX PCI 10/100 de 3Com EtherLinkXL (3C905B-TX)
        Dirección física. . . . . . . . . : ff-ff-ff-ee-ee-ee
        DHCP habilitado. . . . . . . . .  : No
        Dirección IP. . . . . . . . . . . : 194.194.194.100
        Máscara de subred . . . . . . . . : 255.255.255.0
        Puerta de enlace predeterminada   : 194.194.194.100
        Servidores DNS . . . . . . . . . .: 194.194.194.100
                                            fec0:0:0:ffff::1%1

Posted: Mon Dec 08, 2008 7:15 am
by Otto
Thank you for this interesting function.

Regards,
Otto

This line errors out:
What object is oSrv?
//LOCAL oJbs := oSrv:ExecQuery( "SELECT * FROM Win32_BaseBoard" )
I get an error:
Error description: Error BASE/1003 Variable does not exist: OSRV

Posted: Mon Dec 08, 2008 10:06 am
by MGA
I get an error:
Error description: Error BASE/1003 Variable does not exist: OSRV

Posted: Mon Dec 08, 2008 6:26 pm
by marca
Basta vc trocar


//LOCAL oJbs := oSrv:ExecQuery( "SELECT * FROM Win32_BaseBoard")
por

LOCAL oJbs := objWMI:ExecQuery( "select * from Win32_BaseBoard" )
Pos objWMI é o resultado de objWMI:= oLoc:ConnectServer()

blz

um abraço
Marcelo Ferro

Posted: Thu Dec 11, 2008 12:21 pm
by karinha
Este esta correcto?

Code: Select all

   FOR EACH oDatos IN oJbs
    MsgInfo("El Número de Serie de la MotherBoard es: "+Alltrim(cValtoChar(oJob:SerialNumber)),"Desde WMI")
   NEXT
??-> oJob:SerialNumber -> VARIABLE oJob no ejiste

Posted: Thu Dec 11, 2008 2:22 pm
by Kleyber
Joao,

No seria oJbs en vez de oJob ??

Saludos

Posted: Thu Dec 11, 2008 2:55 pm
by karinha
Kleyber wrote:Joao,

No seria oJbs en vez de oJob ??

Saludos
Hi, dear friend.

te funciona asi?

Voy intentar.

Saludos y un fuerte abrazo.