none
Combinação para Select WMI. RRS feed

  • Pergunta

  • Ba galera

    bom dia

    Como posso montar o select para este script para que ele me retorne somente o Microsoft Office instalado na maquina, tentei colocar where caption = Microsoft Office e nao rolou tentei where productId = Microsoft Office e tb nao rolou.

    obrigado tche.

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" & _
        "{impersonationLevel=impersonate}!\\" & _
        strComputer & _
        "\root\cimv2")
    Set colSoftware = objWMIService.ExecQuery _
        ("SELECT * FROM Win32_Product")' where ProductID = Microsoft Office")
    If colSoftware.Count > 0 Then
        For Each objSoftware in colSoftware
                strProgramas = strProgramas & objSoftware.Caption & ";"
        Next    
        WScript.Echo strprogramas
    Else  

    WScript.Echo "Não possui Office."

    End If

    segunda-feira, 13 de fevereiro de 2012 14:04

Respostas

  • Ao invés de utilizar "=" utilize Like com o curinga %.

    SELECT * FROM Win32_Product")' where ProductID LIKE '%Microsoft Office%'"

    Ref.:

    WMI Query Language

    http://technet.microsoft.com/en-us/library/ee176998.aspx


    Fábio de Paula Junior

    segunda-feira, 13 de fevereiro de 2012 14:07
    Moderador
  • Marcelo,

    Quando for fazer este tipo de script primeiro não utilize nenhum filtro na query WMI para vc poder saber que tipo de dados tem em cada campo.

    Você utilizou ProductID Like '%Microsoft Office%', olhei o que é guardado no campo ProductID e geralmente é nulo ou números, isto é, nunca vai encontra Microsoft Office.

    Você tem que descobrir qual o campo que tem o nome do software, e isto você já sabe porque em seguida você utilizou o .Caption para escrever o nome do software, no caption tem a informação Microsoft Office.

    Dei uma modificada no script, acrescentei alguns "echos". só pra você entender.

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" & _
          "{impersonationLevel=impersonate}!\\" & _
          strComputer & _
          "\root\cimv2")
    Set colSoftware = objWMIService.ExecQuery _
          ("SELECT * FROM Win32_Product where Caption LIKE '%Microsoft Office %'")
    If colSoftware.Count > 0 Then
    	For Each objSoftware in colSoftware
    		wscript.echo objSoftware.ProductID
    		wscript.echo objSoftware.Caption
    		strProgramas = strProgramas & objSoftware.Caption & ";"
    	Next    
    	WScript.Echo strprogramas
    Else   
    
    	WScript.Echo "Não possui Office."
      
    End If


    Fábio de Paula Junior

    • Marcado como Resposta Marcelo TI segunda-feira, 13 de fevereiro de 2012 14:38
    segunda-feira, 13 de fevereiro de 2012 14:28
    Moderador

Todas as Respostas

  • Ao invés de utilizar "=" utilize Like com o curinga %.

    SELECT * FROM Win32_Product")' where ProductID LIKE '%Microsoft Office%'"

    Ref.:

    WMI Query Language

    http://technet.microsoft.com/en-us/library/ee176998.aspx


    Fábio de Paula Junior

    segunda-feira, 13 de fevereiro de 2012 14:07
    Moderador
  • Grande Fabio este cara é tri legal tche.

    Fabião, deixei o codigo assim e minha maquina possui o office mais ele responde que nao possui

    strComputer = "."
     Set objWMIService = GetObject("winmgmts:" & _
         "{impersonationLevel=impersonate}!\\" & _
         strComputer & _
         "\root\cimv2")
     Set colSoftware = objWMIService.ExecQuery _
         ("SELECT * FROM Win32_Product where ProductID LIKE '% Microsoft Office %'")
     If colSoftware.Count > 0 Then
         For Each objSoftware in colSoftware
                 strProgramas = strProgramas & objSoftware.Caption & ";"
         Next   
         WScript.Echo strprogramas
     Else  

    WScript.Echo "Não possui Office."
     
    End If

    segunda-feira, 13 de fevereiro de 2012 14:17
  • Marcelo,

    Quando for fazer este tipo de script primeiro não utilize nenhum filtro na query WMI para vc poder saber que tipo de dados tem em cada campo.

    Você utilizou ProductID Like '%Microsoft Office%', olhei o que é guardado no campo ProductID e geralmente é nulo ou números, isto é, nunca vai encontra Microsoft Office.

    Você tem que descobrir qual o campo que tem o nome do software, e isto você já sabe porque em seguida você utilizou o .Caption para escrever o nome do software, no caption tem a informação Microsoft Office.

    Dei uma modificada no script, acrescentei alguns "echos". só pra você entender.

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" & _
          "{impersonationLevel=impersonate}!\\" & _
          strComputer & _
          "\root\cimv2")
    Set colSoftware = objWMIService.ExecQuery _
          ("SELECT * FROM Win32_Product where Caption LIKE '%Microsoft Office %'")
    If colSoftware.Count > 0 Then
    	For Each objSoftware in colSoftware
    		wscript.echo objSoftware.ProductID
    		wscript.echo objSoftware.Caption
    		strProgramas = strProgramas & objSoftware.Caption & ";"
    	Next    
    	WScript.Echo strprogramas
    Else   
    
    	WScript.Echo "Não possui Office."
      
    End If


    Fábio de Paula Junior

    • Marcado como Resposta Marcelo TI segunda-feira, 13 de fevereiro de 2012 14:38
    segunda-feira, 13 de fevereiro de 2012 14:28
    Moderador
  • Ba tche, show compreendi valeu Fabião...

    obs, existe algum lugar que mostre o que cada campo responde ?

    segunda-feira, 13 de fevereiro de 2012 14:38
  • segunda-feira, 13 de fevereiro de 2012 14:43
    Moderador
  • Obrigado Fabiao vc é tri legal tche.

    valeu.

    segunda-feira, 13 de fevereiro de 2012 14:52