Usuário com melhor resposta
Como sair desse dilema.

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
'NextIf 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",strValue2If IsNull(strValue2) Then
objshell.run "cmd /c \\servidor\patch\patchs\MS09-010\KB923561.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
End If
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
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
-
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. -
-
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
NextSelect Case BldNum
Case "2600"
subXP
Case "2195"
subWin2000()
End SelectSub 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.ServicePackMinorVersionNext
Sub instalaSP(servicepack)
strServicePack = MID(servicepack,1,1)
Select Case strServicePackCase "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"
instalaKBEnd select
End sub
'Hot Fix
sub instalaKBConst 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",strValue2If IsNull(strValue2) Then
objshell.run "cmd /c \\servidor\patch\patchs\MS09-010\KB923561.exe /quiet /passive /norestart /overwriteoem /nobackup /nodialog"
End IfEnd 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 subSub 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
-
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
-
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 -
-
-
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.... -
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
-
-
-
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 -
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
-
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.