none
Como sair desse dilema. RRS feed

  • Pergunta

  • Ba galera bom dia.

    Galerga estou com um problema e nao sei como acertar ainda, tipo assim to fazendo um vbs que quando ele ver que o service pack ta estaçao for menor que o sp3, ele estava o corresponde, por exemplo se tiver sem, ele roda o 1
    da boot roda o 2 e depois o 3, sendo que para a instalaçao de cada o script deve ser executado novamente.

    Porem abaixo tenho parte comentada do script que verifica o sp, e se a parte do valor que ja usei com a aplicação de kb (hotfix).
    Ba mais como posso acertar a parte comentada para atender o que quero fazer, nao sei como fazer...
    E tem um outro detalhe, essa parte de cima tem que ser inteligente o bastante para saber que se o sp nao tiver ele tem que instalar, e se tiver teria que rodar a parte nao comentada que aplica os patch, e ao mesmo tempo saber que se o sp nao tiver, ele deve rodar uma outra parte do script que ficara abaixo da aplicaçao dos patch..

    Ba tche como fazer isso.

    strComputer = "."

    'Set objWMIService = GetObject("winmgmts:" _
    '    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    'Set colSettings = objWMIService.ExecQuery _
    '    ("Select * from Win32_OperatingSystem")

    'For Each objOperatingSystem in colSettings
    '    Wscript.Echo "Service Pack: " &_
    '    objOperatingSystem.ServicePackMajorVersion &_
    '     "." & objOperatingSystem.ServicePackMinorVersion
    'Next

    If IsNull(strValue1) Then
        objshell.run "cmd /c \\servidor\patch\patchs\sp\sp3.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    End If


    '*****************************************************************************************************************************

    Const HKLM = &H80000002
    set objshell = createobject("wscript.shell")
     strComputer = "."
     Set oReg=GetObject("winmgmts:\\" & _
       strComputer & "\root\default:StdRegProv")
     
    oReg.GetStringValue HKLM,"SOFTWARE\Microsoft\Updates\Windows XP\SP4\KB923561","Type",strValue2

    If IsNull(strValue2) Then
        objshell.run "cmd /c \\servidor\patch\patchs\MS09-010\KB923561.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    End If

    segunda-feira, 17 de agosto de 2009 12:04

Respostas

  • Olá,

    Case "1"
    'aqui ele está com SP1, então, instala o SP2 e não o SP1 (como está)
    WSHSHELL.run "cmd /c \\servidor\patch\patchs\sp\sp2.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "2"
    'aqui ele está com SP2, então, instala o SP3 e não o SP1 (como está)
    WSHSHELL.run "cmd /c \\servidor\patch\patchs\sp\sp3.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "3"
    instalaKB




    Verifique modificando as linhas acima, acredito que funcione.


    Até mais,

    Jesiel

    Obs.: Se útil, classifique



    • Marcado como Resposta Marcelo TI segunda-feira, 17 de agosto de 2009 21:35
    segunda-feira, 17 de agosto de 2009 20:59

Todas as Respostas

  • Olá,

    Verifique se é isso que você precisa:

    1 - O script verifica qual SP está aplicado... e de acordo com o SP que está ele instala o novo SP.

    Se estiver no SP 3 ele instala o KB...

    É isso que você precisa???



    strComputer = "."

    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colSettings = objWMIService.ExecQuery _
        ("Select * from Win32_OperatingSystem")

    For Each objOperatingSystem in colSettings
       instalaSP objOperatingSystem.ServicePackMajorVersion &_
         "." & objOperatingSystem.ServicePackMinorVersion


    Next

    '=====================================================
    Sub instalaSP(servicepack)

    strServicePack =  MID(servicepack,1,1)

    Select Case strServicePack

    Case "1"

    objshell.run "cmd /c \\servidor\patch\patchs\sp\sp2.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "2"
    objshell.run "cmd /c \\servidor\patch\patchs\sp\sp3.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "3"

    instalaKB

    End select

    End sub
    '=============================================================
    sub instalaKB


    Const HKLM = &H80000002
    set objshell = createobject("wscript.shell")
     strComputer = "."
     Set oReg=GetObject("winmgmts:\\" & _
       strComputer & "\root\default:StdRegProv")
     
    oReg.GetStringValue HKLM,"SOFTWARE\Microsoft\Updates\Windows XP\SP4\KB923561","Type",strValue2

    If IsNull(strValue2) Then
        objshell.run "cmd /c \\servidor\patch\patchs\MS09-010\KB923561.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    End If


    End sub



    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    segunda-feira, 17 de agosto de 2009 14:13
  • Ba jesiel.

    Legal amei.. so duas duvidas...

    assim ele so vai rodar os patch quando cair no case 3, e em seguinda vai rodar o resto do script que esta abaixo da parte do patch correto.. e se ele nao passar pelo case 1 e 2 ele nao roda o resto correto.
    segunda-feira, 17 de agosto de 2009 15:14
  • Olá,

    Correto... Ele só vai aplicar os patch se tiver o SP 3, se tiver o SP1 vai instalar o SP2. Se tiver o SP2 vai instalar o 3.

    Verifique se é isso que você precisa....


    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    segunda-feira, 17 de agosto de 2009 16:28
  • Ba Jesiel

    Como eu te disse no outro caso, quando eu fosse dar continuidade as duvidas começariam... olha como esta o script usando a parte de cima e o outro caso que haviamos falado, e ele me da um erro na linha 40 ( erro de sintaxe ) e eu ja tive algo assim, ele esta sendo causado pelo sub se nao me engano e nao sei como resolver caro amigo..


    Obs, na parte do 2000 tb vou entrar com o que vc me passou para verificar sp do 2000 e instalar e tb hot fix...

    abraço.

    Cod.

    Dim WSHShell, WshProcessEnvironment, WSHNetwork
    Set WSHShell              = CreateObject("WScript.Shell")
    Set WshShell              = Wscript.CreateObject("Wscript.Shell")
    Set objNetwork        = CreateObject("Wscript.Network")
    Set WshProcessEnvironment = WshShell.Environment("Process")

    strComputer = "."
    Set os = GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
    For Each obj In os
        Set prps = obj.Properties_
        OSLang = prps("OSLanguage").value
        BldNum = prps("BuildNumber").value
    Next

    Select Case BldNum
        Case "2600"
           subXP
        Case "2195"
           subWin2000()
    End Select

    Sub subXP()

    'Instala Antivirus
     WSHShell.Run "\\servidor\dados\Antivirus\Instala.BAT"

    'Service Pack
    strComputer = "."

    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colSettings = objWMIService.ExecQuery _
        ("Select * from Win32_OperatingSystem")
    For Each objOperatingSystem in colSettings
       instalaSP objOperatingSystem.ServicePackMajorVersion &_
         "." & objOperatingSystem.ServicePackMinorVersion

    Next

    Sub instalaSP(servicepack)
    strServicePack =  MID(servicepack,1,1)
    Select Case strServicePack

    Case "1"
    objshell.run "cmd /c \\servidor\patch\patchs\sp\sp1.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "2"
    objshell.run "cmd /c \\servidor\patch\patchs\sp\sp2.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "3"
    objshell.run "cmd /c \\servidor\patch\patchs\sp\sp3.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "4"
    instalaKB

    End select

    End sub

    'Hot Fix 
    sub instalaKB

    Const HKLM = &H80000002
    set objshell = createobject("wscript.shell")
     strComputer = "."
     Set oReg=GetObject("winmgmts:\\" & _
       strComputer & "\root\default:StdRegProv")
     
    oReg.GetStringValue HKLM,"SOFTWARE\Microsoft\Updates\Windows XP\SP4\KB923561","Type",strValue2

    If IsNull(strValue2) Then
        objshell.run "cmd /c \\servidor\patch\patchs\MS09-010\KB923561.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    End If

    End sub

    Remove Windows Messenger
     WSHShell.Run "cmd /c sysocmgr.exe /i:%windir%\inf\sysoc.inf /u:\\servidor\dados\msn.txt"

    Desabilita o Agendamento no Windows
     WSHShell.Run "cmd /c secedit.exe /configure /db mod.sdb /CFG \\servidor\dados\Tasks.inf /overwrite /quiet"
     
     Set WSHShell = Nothing 
      Msg = Msg &  "Maquina XP Finazilizada" & Chr(10)
      MsgBox msg,60,"Configurador"
     
    End sub

    Sub subWIn2000()

    Remove Windows Messenger
     WSHShell.Run "cmd /c sysocmgr.exe /i:%windir%\inf\sysoc.inf /u:\\servidor\dados\msn.txt"

    Desabilita o Agendamento no Windows
     WSHShell.Run "cmd /c secedit.exe /configure /db mod.sdb /CFG \\servidor\dados\Tasks.inf /overwrite /quiet"

     Set WSHShell = Nothing 
      Msg = Msg &  "Maquina 2000 Finalizada" & Chr(10)
      MsgBox msg,60,"Configurador"

    End Sub

    segunda-feira, 17 de agosto de 2009 16:44
  • Olá,

    Verifique o script abaixo:


    Dim WSHShell, WshProcessEnvironment, WSHNetwork
    Set WSHShell              = CreateObject("WScript.Shell")
    Set WshShell              = Wscript.CreateObject("Wscript.Shell")

    Set objNetwork        = CreateObject("Wscript.Network")
    Set WshProcessEnvironment = WshShell.Environment("Process")

    strComputer = "."
    Set os = GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
    For Each obj In os
        Set prps = obj.Properties_
        OSLang = prps("OSLanguage").value
        BldNum = prps("BuildNumber").value
    Next

    Select Case BldNum
        Case "2600"
           subXP
        Case "2195"
           subWin2000()
    End Select

    Sub subXP()

    'Instala Antivirus
     WSHShell.Run "\\servidor\dados\Antivirus\Instala.BAT"

    'Service Pack
    strComputer = "."

    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colSettings = objWMIService.ExecQuery _
        ("Select * from Win32_OperatingSystem")
    For Each objOperatingSystem in colSettings
       instalaSP objOperatingSystem.ServicePackMajorVersion &_
         "." & objOperatingSystem.ServicePackMinorVersion

    Next

    End sub

    '=======================================================================================
    Sub instalaSP(servicepack)
    strServicePack =  MID(servicepack,1,1)
    Select Case strServicePack

    Case "1"
    WSHSHELL.run "cmd /c \\servidor\patch\patchs\sp\sp1.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "2"
    WSHSHELL.run "cmd /c \\servidor\patch\patchs\sp\sp2.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "3"
    WSHSHELL.run "cmd /c \\servidor\patch\patchs\sp\sp3.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "4"
    instalaKB

    End select

    End sub

    '===========================================================================================
    'Hot Fix
    sub instalaKB

    Const HKLM = &H80000002
    set WSHSHELL = createobject("wscript.shell")
     strComputer = "."
     Set oReg=GetObject("winmgmts:\\" & _
       strComputer & "\root\default:StdRegProv")
     
    oReg.GetStringValue HKLM,"SOFTWARE\Microsoft\Updates\Windows XP\SP4\KB923561","Type",strValue2

    If IsNull(strValue2) Then
        WSHSHELL.run "cmd /c \\servidor\patch\patchs\MS09-010\KB923561.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    End If

    End sub

    'ESSA PARTE SERA EXECUTADA QUANDO???


    'Remove Windows Messenger
     WSHShell.Run "cmd /c sysocmgr.exe /i:%windir%\inf\sysoc.inf /u:\\servidor\dados\msn.txt"

    'Desabilita o Agendamento no Windows
     WSHShell.Run "cmd /c secedit.exe /configure /db mod.sdb /CFG \\servidor\dados\Tasks.inf /overwrite /quiet"
     
     Set WSHShell = Nothing
      Msg = Msg &  "Maquina XP Finazilizada" & Chr(10)
      MsgBox msg,60,"Configurador"
     
    wscript.quit

    Sub subWIn2000()

    'Remove Windows Messenger
     WSHShell.Run "cmd /c sysocmgr.exe /i:%windir%\inf\sysoc.inf /u:\\servidor\dados\msn.txt"

    'Desabilita o Agendamento no Windows
     WSHShell.Run "cmd /c secedit.exe /configure /db mod.sdb /CFG \\servidor\dados\Tasks.inf /overwrite /quiet"

     Set WSHShell = Nothing
      Msg = Msg &  "Maquina 2000 Finalizada" & Chr(10)
      MsgBox msg,60,"Configurador"

    End Sub


    Estava faltando uns comentarios, uns end sub... agora acredito que vai rolar....


    Até mais,

    Jesiel

    Obs.: Se útil, classifique

    segunda-feira, 17 de agosto de 2009 17:38
  • Ba Jesiel.

    'ESSA PARTE SERA EXECUTADA QUANDO???  ( Vai rodar apos a instalação dos patchs, tanto pra XP como pra 2K )  Estou fazendo o teste com o que vc enviou.


    'Remove Windows Messenger
     WSHShell.Run "cmd /c sysocmgr.exe /i:%windir%\inf\sysoc.inf /u:\\servidor\dados\msn.txt"

    'Desabilita o Agendamento no Windows
     WSHShell.Run "cmd /c secedit.exe /configure /db mod.sdb /CFG \\servidor\dados\Tasks.inf /overwrite /quiet"
     
     Set WSHShell = Nothing
      Msg = Msg &  "Maquina XP Finazilizada" & Chr(10)
      MsgBox msg,60,"Configurador"
     
    wscript.quit

    Sub subWIn2000()

    'Remove Windows Messenger
     WSHShell.Run "cmd /c sysocmgr.exe /i:%windir%\inf\sysoc.inf /u:\\servidor\dados\msn.txt"

    'Desabilita o Agendamento no Windows
     WSHShell.Run "cmd /c secedit.exe /configure /db mod.sdb /CFG \\servidor\dados\Tasks.inf /overwrite /quiet"

     Set WSHShell = Nothing
      Msg = Msg &  "Maquina 2000 Finalizada" & Chr(10)
      MsgBox msg,60,"Configurador"

    End Sub

    segunda-feira, 17 de agosto de 2009 19:59
  • Ba Jesiel..

    show rolou...

    Esse mesmo para xp roda no 2000, posso repedir as linhas abaixo para colocar a questão do sp e do patch... e tudo que ficar abaixo dos patch ira rodar como se fosse parte do sub instalaKB correto ?

    Abraço.
    segunda-feira, 17 de agosto de 2009 20:06
  • Olá,

    Pode sim...

    Pro win 2000 você pode criar outro sub com os SP´s também...


    Abraços.


    Até mais,

    Jesiel

    Obs.: Se útil, classifique

    segunda-feira, 17 de agosto de 2009 20:18
  • Ba Jesiel.

    Show. mais agora gerou-se um problema, acabei de colocar os sp`s na pasta, e os kb`s na pasta, fui fazer o teste em uma xp com sp3 ja instalado, nessas condições ele deveria somente rodar os kb`s correto, ai que ta meu amigo, ele chamou primeiro o sp3 para instalar, o que pode estar errado, ainda estou fazendo o teste com somente um kb conforme no script acima e com os 3 arquivos de sp.

    Jesiel e tb acabei de matar a chave de registro referente ao path e comentei as linhas do case para ver se somente o case 4 seria ativado mais ele passa batido....
    segunda-feira, 17 de agosto de 2009 20:37
  • Olá,

    Case "1"
    'aqui ele está com SP1, então, instala o SP2 e não o SP1 (como está)
    WSHSHELL.run "cmd /c \\servidor\patch\patchs\sp\sp2.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "2"
    'aqui ele está com SP2, então, instala o SP3 e não o SP1 (como está)
    WSHSHELL.run "cmd /c \\servidor\patch\patchs\sp\sp3.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "3"
    instalaKB




    Verifique modificando as linhas acima, acredito que funcione.


    Até mais,

    Jesiel

    Obs.: Se útil, classifique



    • Marcado como Resposta Marcelo TI segunda-feira, 17 de agosto de 2009 21:35
    segunda-feira, 17 de agosto de 2009 20:59
  • Jesiel..

    E como se ele nao estivesse fazendo a seleção, para saber se a maquina tem ou nao service pack e qual é para saber qual instalar ou nao instalar nenhum para nesse caso so instalar os kbs,,,

    segunda-feira, 17 de agosto de 2009 21:00
  • Jesiel

    E se bater em uma maquina que nao tem sp como ele ira se comportar por isso que criei aquela linha a mais ??
    segunda-feira, 17 de agosto de 2009 21:02
  • Ba assim legal ele nao faz nada na maquina com sp 3 instalado e vai dereto para o kb, mais na questão que lhe comentei quando a maquina estiver sem kb a linha de logica nao seria a criaçao da outra linha como havia colocado, porem assim ele instala o sp3 na maquina que ja tem, e se a linha for comentada ele passa batido a do kb.

    Case "1"
    WSHSHELL.run "cmd /c \\servidor\patch\patchs\sp\sp1.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "2"
    WSHSHELL.run "cmd /c \\servidor\patch\patchs\sp\sp2.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "3"
    WSHSHELL.run "cmd /c \\servidor\patch\patchs\sp\sp3.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
    Case "4"
    instalaKB
    segunda-feira, 17 de agosto de 2009 21:05
  • Olá,

    Dá um wscript.echo strServicePack antes do case, em uma maquina que não tem SP instalado...

    Eu não sei qual é o valor que retorna...

    Descobrindo o valor, aí é só adicionar no case....

    Exemplo: Imaginamos que o valor seja 0 ou null

    Então adiciona no case...

    Case "0"


    Até mais,

    Jesiel

    Obs.: Se útil, classifique



    segunda-feira, 17 de agosto de 2009 21:06
  • Ba Jesiel.

    Agora ficou claro, eu estava aqui me perguntando como ele estava fazendo pra saber que sp esta la, ou seja quando o valor é 1 quer dizer que o sp 1 ja esta instalado e por isso que ele instala o 2, e se o valor for 2 isso quer dizer que o sp2 ja esta instalado, e com isso ele instala o sp3, e se o valor for 3 ele vai pro kb legal matou meu amigo, vou fazero echo em uma sem o sp para ver o valor e crio o case aqui.. valeu mais uma vez pela força..

    Um grande abraço.

    segunda-feira, 17 de agosto de 2009 21:34