Beveiligingspatch 824146 (MS03-039) of 823980 (MS03-026) op externe hostcomputers installeren met behulp van een Visual Basic-script

De ondersteuning voor Windows XP is beëindigd

De ondersteuning voor Office 2003 is door Microsoft beëindigd op 8 april. Deze wijziging heeft gevolgen voor software-updates en beveiligingsopties. Meer informatie over wat voor gevolgen dit voor u heeft en hoe u beveiligd blijft.

De ondersteuning voor Windows Server 2003 is op 14 juli 2015 beëindigd

De ondersteuning voor Windows Server 2003 is door Microsoft op 14 juli 2015 beëindigd. Deze wijziging heeft gevolgen voor software-updates en beveiligingsopties. Meer informatie over wat voor gevolgen dit voor u heeft en hoe u beveiligd blijft.

Samenvatting
Dit artikel bevat een voorbeeldscript met de naam Patchinstall.vbs dat is geschreven in Microsoft Visual Basic Scripting Edition. Dit voorbeeldscript laat zien hoe netwerkbeheerders gebruik kunnen maken van Windows Management Instrumentation-scripts (WMI) voor de installatie van beveiligingspatch 824146 (MS03-039) of 823980 (MS03-026) op externe hostcomputers, wanneer de patch niet is geïnstalleerd in een Microsoft Windows NT-, Windows 2000- of Windows Server 2003-domein. Het script Patchinstall.vbs gebruikt een bestand (IP-bestand.txt) met IP-adressen als invoer en installeert beveiligingspatch 824146 (MS03-039) of 823980 (MS03-026) vanaf een bekende locatie op de externe hostcomputer (C:\Patchinst.exe). Klik voor meer informatie over beveiligingspatch 824146 (MS03-039) op het volgende artikelnummer in de Microsoft Knowledge Base:
824146 MS03-039: Bufferoverschrijding in RPCSS kan leiden tot uitvoering van code
Klik voor meer informatie over beveiligingspatch 823980 op het volgende artikelnummer in de Microsoft Knowledge Base:
823980 MS03-026: Bufferoverschrijding in RPC kan leiden tot uitvoering van code
Klik op het volgende artikelnummer in de Microsoft Knowledge Base voor meer informatie over een hulpprogramma waarmee netwerkbeheerders in hun netwerk kunnen zoeken naar computers waarop deze beveiligingspatches niet zijn geïnstalleerd:
827363 Het hulpprogramma voor scannen uit KB824146 gebruiken om hostcomputers te identificeren waarop niet de beveiligingspatches 823980 (MS03-026) of 824146 (MS03-039) zijn geïnstalleerd

Opmerkingen

  • U moet beheerdersrechten op de externe doelcomputers hebben om beveiligingspatch 824146 of 823980 te kunnen installeren.
  • Externe Microsoft Windows XP-computers moeten deel uitmaken van een Windows NT-, Windows 2000- of Windows Server 2003-domein om gebruik te kunnen maken van het script Patchinstall.vbs.
  • Patchinstall.vbs maakt gebruik van Windows Management Instrumentation (WMI). WMI is afhankelijk van het Distributed Component Object Model (DCOM). Daarom werkt Patchinstall.vbs niet op doelcomputers waarop DCOM is uitgeschakeld om het beveiligingslek te omzeilen dat wordt beschreven in de Microsoft-beveiligingsbulletins MS03-039 en MS03-026.
  • Beveiligingspatch 824146 of 823980 moet zich in een lokale map bevinden van de computer waarop u het script Patchinstall.vbs uitvoert en de naam van de pakketten moet worden gewijzigd in Patch_XP.exe (voor Windows XP), Patch_W2K.exe (voor Windows 2000) en Patch_W2K3.exe (voor Windows Server 2003).
  • U kunt het script Patchinstall.vbs wijzigen om andere patches te installeren.
Meer informatie
Patchinstall.vbs voert de volgende taken uit:
  • Het script leest een lijst IP-adressen voor de externe hostcomputers waarop u beveiligingspatch 824146 of 823980 wilt installeren. Het script haalt deze gegevens op uit een ASCII-tekstbestand (IPbestand.txt) dat deze lijst met IP-adressen bevat (één IP-adres per regel). U kunt bijvoorbeeld het logbestand Vulnerable.txt van het hulpprogramma voor scannen KB824146 gebruiken als IP-bestand.txt.
  • Het script haalt het eerste IP-adres op uit de lijst.
  • Het script bepaalt de Windows-versie van de doelcomputer.
  • Het script wijst station Z op de scriptcomputer toe aan C$ op de doelcomputer.
  • Het script kopieert de juiste versie van de patch (voor Windows XP, Windows 2000 of Windows Server 2003) naar C:\Patchinst.exe op de doelcomputer (via de station Z-toewijzing).
  • Via het script wordt de patch geïnstalleerd, waarna de doelcomputers automatisch opnieuw worden gestart door het gebruik van de schakelopties -q -f (installatie zonder toezicht).
  • Het script wacht totdat de installatie is voltooid.
  • Het script verwijdert het bestand C:\Patchinst.exe van de doelcomputer.
  • Het script verwijdert de station Z-toewijzing.
  • Het script gaat verder met het volgende IP-adres uit de lijst.
Belangrijk Microsoft raadt u aan eerst het voorbeeldscript voor uw netwerkomgeving te wijzigen en het script te testen in een testomgeving voordat u het gebruikt in een productieomgeving.

Als u Patchinstall.vbs wilt gebruiken, plakt u het volgende script in een tekstbestand met de naam Patchinstall.vbs. Vervolgens start u Patchinstall.vbs met de volgende opdrachtregel:
cscript patchinstall.vbs IP-bestand.txt LokaalPadNaarPatches
In deze opdracht is IP-bestand.txt een tekstbestand met een lijst IP-adressen voor de externe hostcomputers waarop u beveiligingspatch 824146 of 823980 wilt installeren. LokaalPadNaarPatches is het volledige pad van een map die beveiligingspatch 824146 of 823980 bevat (met de naam Patch_XP.exe voor Windows XP, Patch_W2k.exe voor Windows 2000 en Patch_W2k3.exe voor Windows Server 2003).

Het script Patchinstall.vbs

Microsoft verstrekt deze code zonder enige expliciete of impliciete garantie, daaronder mede begrepen, maar niet beperkt tot impliciete garanties met betrekking tot de verkoopbaarheid en/of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend bent met de programmeertaal VBScript, alsmede met de hulpprogramma's waarmee procedures worden gemaakt en waarmee fouten in procedures worden opgespoord. U kunt desgewenst contact opnemen met Microsoft Product Support Services voor uitleg over de functie van een bepaalde procedure. Microsoft Product Support Services is echter niet bereid de voorbeelden aan te passen om extra functies toe te voegen of om procedures te maken die aan uw specifieke eisen voldoen.
' Patchinstall.vbs'Patch-installatiescript voor MS03-026 en MS03-039' (c) Microsoft 2003' v1.03 clon error resume nextconst XP_Patch = "Patch_XP.exe"const W2k_Patch = "Patch_W2k.exe"const W2k3_Patch = "Patch_W2k3.exe"If right(ucase(wscript.FullName),11)="WSCRIPT.EXE" then     wscript.echo "ERROR: Voer dit script uit met behulp van cscript, bijvoorbeeld 'cscript " & wscript.scriptnaam & "'."     wscript.quit 0end if'GEBRUIKif wscript.arguments.count <> 2 then     wscript.echo "Usage: cscript " & wscript.scriptname & " <IpFile.txt> <LocalPathToPatches>" & vbCrLf & vbCrLf & _     "  <LocalPathToPatches> moet het volledige pad zijn naar een map die al deze bestanden bevat:" & vbCrLf & _     "      " & XP_Patch & vbCrLf & _     "      " & W2k_Patch & vbCrLf & _     "      " & W2k3_Patch     wscript.quitend ifipFile = wscript.arguments(0)localPathToPatches = wscript.arguments(1)set onet = createobject("wscript.network")set ofs = createobject("scripting.filesystemobject")' Controleren of ipfile toegankelijk is.set oipFile = ofs.opentextfile(ipFile, 1, false)if (Err.Number <> 0) then     wscript.echo "Cannot open " & ipFile     wscript.quitend if' Controleren of het laatste teken een backslash (\) is.if right(localPathToPatches, 1) <> "\" then     localPathToPatches = localPathToPatches & "\"end if'Houd er rekening mee dat in cim_datafile geen UNC-paden worden ondersteund.'Alles moet dus via toegewezen stations verlopen.if left(localPathToPatches, 2) = "\\" then     wscript.echo "<pathToExecutable> kan geen UNC-pad zijn, wijs een station lokaal toe"     wscript.quitend ifexeWinXP = ofs.getfile(localPathToPatches + XP_Patch).nameexeW2k = ofs.getfile(localPathToPatches + W2k_Patch).nameexeW2k3 = ofs.getfile(localPathToPatches + W2k3_Patch).name' Controleren of de patches toegankelijk zijn.if ((len(exeWinXP) = 0) OR (len(exeW2k) = 0) OR (len(exeW2k3) = 0)) then     wscript.echo "Kan geen patchbestanden vinden."     wscript.echo "Controleer of de map <LocalPathToPatches> al deze bestanden bevat:" & vbCrLf & _     "      " & XP_Patch & vbCrLf & _     "      " & W2k_Patch & vbCrLf & _     "      " & W2k3_Patch     wscript.quitend ifset osvcLocal = getobject("winmgmts:root\cimv2")'De foutafhandelingscode staat onder de functie die er een kan veroorzaken - voer deze uit.on error resume nextwhile not oipFile.atEndOfStream     ip = oipFile.ReadLine()     wscript.echo vbCrLf & "Verbinding maken met " & ip & "..."     Err.Clear     set osvcRemote = GetObject("winmgmts:\\" & ip & "\root\cimv2")     if (Err.Number <> 0) then          wscript.echo "Kan geen verbinding maken met " & ip & "."     else          exeCorrectPatch = detectOSPatch(osvcRemote)          if (exeCorrectPatch <> "") then               ' De onderdelen overbrengen naar de externe computer.               wscript.echo "Installing patch " & exeCorrectPatch & "..."               onet.mapnetworkdrive "z:", "\\" & ip & "\C$"               set osourceFile = osvcLocal.get("cim_datafile=""" & replace(localPathToPatches, "\", "\\") & exeCorrectPatch & """")               ret = osourceFile.Copy("z:\\Patchinst.exe")               if (ret <> 0 and ret <> 10) then                    ' Er is een fout ontdekt en de fout was niet 'bestand bestaat al'.                    wscript.echo "Kan niet kopiëren naar " & ip & " - fout: " & ret               else                    set oprocess = osvcRemote.Get("win32_process")                         ' De installatie starten zonder tussenkomst van de gebruiker en de computer opnieuw opstarten na voltooiing.                    ret = oprocess.create("c:\\Patchinst.exe -q -f")                    if (ret <> 0) then                         wscript.echo "Kan proces niet starten voor " & ip & ": " & ret                    else                         ' Een referentie naar het gekopieerde bestand verkrijgen.                         set odestFile = osvcLocal.get("cim_datafile=""z:\\Patchinst.exe""")                         ' Wachten tot de installatie is voltooid.                         for waitTime = 0 to 120     ' Wacht maximaal twee minuten tot de installatie is voltooid.                              wscript.Sleep 1000     ' Eén seconde slaapstand.                              ' Tijdelijk bestand zo snel mogelijk verwijderen nadat het niet meer nodig is.                              if (odestFile.Delete() = 0) then                                   exit for                              end if                         next 'Anders een nieuwe lus starten en blijven wachten...                         wscript.echo "Installatie geslaagd."                    end if     'Aanmaakproces is voltooid.               end if     'Kopiëren is voltooid.               onet.removenetworkdrive "z:", true          end if      ' Het script weet welke patch moet worden geïnstalleerd.     end if ' Verdergaan met het volgende IP-adres, en dan het volgende IP-adres... wendoipFile.close()'Opschonen, stationstoewijzing verwijderen (nu controleren, omdat het station mogelijk niet is toegewezen).if ofs.folderexists("z:\") then     onet.removenetworkdrive "z:", trueend ifwscript.echo vbCrLf & "Patching voltooid. Wordt afgesloten."function detectOSPatch(osvcRemote)     set oOSInfo = osvcRemote.InstancesOf("Win32_OperatingSystem")     'Er wordt maar één exemplaar geretourneerd (het actieve besturingssysteem), ook als het volgende een foreach-constructie is.     for each objOperatingSystem in oOSInfo          if (objOperatingSystem.OSType <> 18) then               ' Controleren of dit een computer met Windows NT is.               wscript.echo ip & " is geen computer met Windows XP, Windows 2000 of Windows 2003 Server."          else               if (objOperatingSystem.Version = "5.0.2195") then                    ' Windows 2000 SP2, SP3, SP4.                    if (objOperatingSystem.ServicePackMajorVersion = 2) or (objOperatingSystem.ServicePackMajorVersion = 3) or _			(objOperatingSystem.ServicePackMajorVersion = 4) then                         systemType = exeW2k                    end if               elseif (objOperatingSystem.Version = "5.1.2600") then                    ' Windows XP RTM, SP1.                    if (objOperatingSystem.ServicePackMajorVersion = 0) or (objOperatingSystem.ServicePackMajorVersion = 1) then                         systemType = exeWinXP                    end if               elseif (objOperatingSystem.Version = "5.2.3790") then                    ' Windows Server 2003 RTM                    if (objOperatingSystem.ServicePackMajorVersion = 0) then                         systemType = exeW2k3                    end if               end if               if (systemType = "") then                    'Dit is een computer met Windows NT, maar zonder geldig Service Pack.                    wscript.echo "Kan geen patch uitvoeren voor " & ip & " - niet-verwerkte versie besturingssysteem: " & objOperatingSystem.Caption & " SP" & _				objOperatingSystem.ServicePackMajorVersion & "("& objOperatingSystem.Version & ")"               end if          end if     next     detectOSPatch = systemTypeend function
Eigenschappen

Artikel-id: 827227 - Laatst bijgewerkt: 08/08/2005 17:08:32 - Revisie: 5.4

Microsoft Windows Server 2003, Datacenter Edition (32-bit x86), Microsoft Windows Server 2003, Enterprise Edition (32-bit x86), Microsoft Windows Server 2003, Standard Edition (32-bit x86), Microsoft Windows Server 2003, Web Edition, Microsoft Windows XP Professional, Microsoft Windows XP Tablet PC Edition, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Professional Edition, Microsoft Windows® 2000 Server

  • kbinfo KB827227
Feedback