Windows update script

Pagina: 1
Acties:
  • 653 views

Acties:
  • 0 Henk 'm!

  • sander.jansen
  • Registratie: April 2012
  • Laatst online: 27-09-2023
Ik had vanmiddag al een post gemaakt maar helaas is deze geblockt vanwege te weinig informatie. Ik hoop dat ik het deze keer wel goed doe...

Ik heb helaas geen ervaring met VBS scripts, maar van wat ik begrijp is het een heel klein dingetje op één regel... ik zou het fijn vinden als iemand me hier toch mee zou willen helpen.

Als ik het script draai, wordt alles goed gedaan totdat het stuk waar Windows opnieuw moet opstarten. Ik krijg dan een foutmelding met code: 80041021 in regel 33... Ik heb het volgende gevonden op deze foutcode maar ik kom er niet uit.

http://www.computerperfor...on/code/code_80041021.htm

In het voorbeeld is het net even anders dan wat ik in mijn script heb en weet niet precies tot in hoe ver ik dingen moet aanpassen en wat ik moet laten staan...

Hieronder de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Set fso = CreateObject("Scripting.FileSystemObject")
Set objAutomaticUpdates = CreateObject("Microsoft.Update.AutoUpdate")
objAutomaticUpdates.EnableService
objAutomaticUpdates.DetectNow

Set objSession = CreateObject("Microsoft.Update.Session")
Set objSearcher = objSession.CreateUpdateSearcher()
Set objResults = objSearcher.Search("IsInstalled=0 and Type='Software'")
Set colUpdates = objResults.Updates

Set objUpdatesToDownload = CreateObject("Microsoft.Update.UpdateColl")
intUpdateCount = 0
For i = 0 to colUpdates.Count - 1
   intUpdateCount = intUpdateCount + 1
   Set objUpdate = colUpdates.Item(i)
   objUpdatesToDownload.Add(objUpdate)
Next

If intUpdateCount = 0 Then
   WScript.Echo "Geen updates meer."
   WScript.Quit
Else
   Set objDownloader = objSession.CreateUpdateDownloader()
   objDownloader.Updates = objUpdatesToDownload
   objDownloader.Download()

   Set objInstaller = objSession.CreateUpdateInstaller()
   objInstaller.Updates = objUpdatesToDownload
   Set installationResult = objInstaller.Install()
        
   Set objSysInfo = CreateObject("Microsoft.Update.SystemInfo")
   If objSysInfo.RebootRequired Then
     Set objWMIService = GetObject ("winmgmts:{impersonationLevel=impersonate(Shutdown)}!\\localhost\root\cimv2")[/b]imv2")
     Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
     For Each objOperatingSystem in colOperatingSystems
        objOperatingSystem.Reboot()
     Next
   End If
End If

Acties:
  • 0 Henk 'm!

  • sander.jansen
  • Registratie: April 2012
  • Laatst online: 27-09-2023
Ik heb het al opgelost, er moest een "," tussen... hieronder de goede regel:

Set objWMIService = GetObject ("winmgmts:{impersonationLevel=impersonate(Shutdown)}!\\localhost\root\cimv2")[/b]imv2")

Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 07:06

Damic

Tijd voor Jasmijn thee

En waar staat die , nu?

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • sander.jansen
  • Registratie: April 2012
  • Laatst online: 27-09-2023
Lol sorry... ik had nog de oude regel in me copy past... de "," moet voor (shutdown):

Set objWMIService = GetObject ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\localhost\root\cimv2")[/b]imv2")

Ik heb echter het script nog een beetje aangepast naar mijn wensen, dat er geen berichten komen voor of tijdens updaten zodat alles in een keer door kan gaan... dat je het script in de opstart folder kan plaatsen en vervolgens weg kan gaan.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Set updateSession = CreateObject("Microsoft.Update.Session")
updateSession.ClientApplicationID = "MSDN Sample Script"

Set updateSearcher = updateSession.CreateUpdateSearcher()

Set searchResult = _
updateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0")



For I = 0 To searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)

Next


If searchResult.Updates.Count = 0 Then
    WScript.Echo "Geen updates konden worden gevonden! - klaar met updaten."
    WScript.Quit
End If

Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")
For I = 0 to searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
 
    updatesToDownload.Add(update)
    If update.EulaAccepted = False Then 
        update.AcceptEula

    End If

    If addThisUpdate = true Then

        updatesToDownload.Add(update)
    End If
Next

If updatesToDownload.Count = 0 Then
    WScript.Echo "Updates konden niet succesvol worden geinstalleerd!"
    WScript.Quit
End If
    

Set downloader = updateSession.CreateUpdateDownloader() 
downloader.Updates = updatesToDownload
downloader.Download()

Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl")

rebootMayBeRequired = false


For I = 0 To searchResult.Updates.Count-1
    set update = searchResult.Updates.Item(I)
    If update.IsDownloaded = true Then

        updatesToInstall.Add(update) 
        If update.InstallationBehavior.RebootBehavior > 0 Then
            rebootMayBeRequired = true
        End If
    End If
Next

If updatesToInstall.Count = 0 Then
    WScript.Echo "Geen updates konden succesvol worden gedownload!"
    WScript.Quit
End If

If rebootMayBeRequired = true Then
End If


    Set installer = updateSession.CreateUpdateInstaller()
    installer.Updates = updatesToInstall
    Set installationResult = installer.Install()


If installationResult.RebootRequired = True Then
  strCmd = "shutdown -r -t 60 -f" 
  set objShell = CreateObject("WScript.Shell") 
  objShell.Run strCmd 
End If

[ Voor 12% gewijzigd door sander.jansen op 19-06-2015 23:07 ]


Acties:
  • 0 Henk 'm!

  • sander.jansen
  • Registratie: April 2012
  • Laatst online: 27-09-2023
Ik was wel nog een het kijken of er misschien iemand is die een "batch limiet" hierin kan maken... dat er bijvoorbeeld max 30 updates per keer gedaan worden en dan opnieuw wordt opgestart en vervolgens na het opstarten opnieuw gezocht wordt en de volgende 30 gedaan worden... Het script wordt al vanzelf geopend bij het opstarten omdat ik het plaats in de opstart map van windows. Ik zou het fijn vinden als iemand mij hier nog mee kan helpen. Ik heb wel deze site gevonden waar het max 30 wordt toegepast maar ik krijg het niet verwerkt in mijn script...

http://www.symantec.com/c...ndows-update-vbscript-v12

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 23:09

Creepy

Tactical Espionage Splatterer

Eeh, dat zul je in eerste instantie toch echt zelf moeten maken/proberen. PRG draait om het zelf programmeren, niet om dat iemand maar voor je te laten doen. Als je iemand zoekt die het voor je moet gaan oplossen dan kan je beter in http://tweakers.net/aanbod/#highlightCat:892 zijn

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.