Tietoturvakorjauksen 824146 (MS03-039) tai 823980 (MS03-026) asentaminen etätietokoneisiin Visual Basic -komentosarjan avulla

Artikkeleiden käännökset Artikkeleiden käännökset
Artikkelin tunnus: 827227 - Näytä tuotteet, joita tämä artikkeli koskee.
Laajenna kaikki | Kutista kaikki

Tällä sivulla

Yhteenveto

Tässä artikkelissa on Microsoft Visual Basic Scripting Edition -mallikomentosarja, jonka nimi on Patchinstall.vbs. Tämä komentosarja on esimerkki siitä, miten verkonvalvoja voi asentaa Microsoft Windows NT-, Windows 2000- Windows Server 2003 -toimialueympäristössä tietoturvakorjauksen 824146 (MS03-039) tai 823980 (MS03-026) WMI:n (Windows Management Instrumentation) avulla etätietokoneisiin, joissa tietoturvakorjausta ei ole asennettuna. Patchinstall.vbs-komentosarja ottaa IP-osoitteita sisältävän tiedoston (Ipfile.txt) ja asentaa tietoturvakorjauksen 824146 (MS03-039) tai 823980 (MS03-026) etätietokoneen tunnetusta sijainnista (C:\Patchinst.exe). Saat lisätietoja tietoturvakorjauksesta 824146 (MS03-039) napsauttamalla seuraavaa artikkelin numeroa, jolloin pääset lukemaan artikkelin Microsoft Knowledge Base -tietokannassa:
824146 MS03-039: RPCSS:n puskurin ylivuoto saattaa antaa hyökkääjän suorittaa haitallisiksi suunniteltuja ohjelmia
Saat lisätietoja tietoturvakorjauksesta 823980 napsauttamalla seuraavaa artikkelin numeroa, jolloin pääset lukemaan artikkelin Microsoft Knowledge Base -tietokannassa:
823980 MS03-026: RPC:n puskuriylivuoto saattaa sallia koodin suorittamisen
Saat lisätietoja työkalusta, jonka avulla verkonvalvojat voivat skannata verkkonsa ja etsiä sellaisia tietokoneita, joissa näitä tietoturvakorjauksia ei ole asennettuna, napsauttamalla seuraavaa artikkelin numeroa, jolloin pääset lukemaan artikkelin Microsoft Knowledge Base -tietokannassa:
827363 KB 824146 -skannaustyökalun käyttäminen tunnistamaan isäntätietokoneet, joissa ei ole asennettuna suojauskorjauksia 823980 (MS03-026) ja 824146 (MS03-039)

Huomautuksia

  • Sinulla on oltava järjestelmänvalvojan oikeudet etätietokoneisiin, jotta voit onnistuneesti asentaa tietoturvakorjauksen 824146 tai 823980.
  • Microsoft Windows XP -tietokoneet on liitettävä Windows NT-, Windows 2000- tai Windows Server 2003 -toimialueeseen, jotta Patchinstall.vbs-komentosarjaa voidaan käyttää oikein.
  • Patchinstall.vbs-komentosarja käyttää WMI:tä (Windows Management Instrumentation). WMI tarvitsee DCOMin (Distributed Component Object Model). Siksi Patchinstall.vbs ei toimi kohdetietokoneissa, joissa DCOM on poistettu käytöstä Microsoftin tietoturvatiedotteissa MS03-039 tai MS03-026 käsiteltyjen heikkouksien kiertämiseksi.
  • Tietoturvakorjauspakettien 824146 tai 823980 on sijaittava sen tietokoneen paikallisessa kansiossa, jossa suoritat Patchinstall.vbs-komentosarjan, ja paketit on nimettävä uudelleen nimillä Patch_XP.exe (Windows XP), Patch_W2K.exe (Windows 2000) ja Patch_W2K3.exe (Windows Server 2003).
  • Voit muokata Patchinstall.vbs-komentosarjaa muiden korjaustiedostojen asentamista varten.

Enemmän tietoa

Patchinstall.vbs-komentosarja suorittaa seuraavat tehtävät:
  • Komentosarja lukee luettelon niiden etätietokoneiden IP-osoitteista, joihin haluat asentaa tietoturvakorjauksen 824146 tai 823980. Komentosarja hakee tämän luettelon ASCII-tekstitiedostosta (Ipfile.txt), joka sisältää luettelon IP-osoitteista (yksi IP-osoite riviä kohden). Voit esimerkiksi käyttää KB824146-skannaustyökalun Vulnerable.txt-lokitiedostoa Ipfile.txt -tiedostona.
  • Komentosarja hakee luettelon ensimmäisen IP-osoitteen.
  • Komentosarja määrittää kohdetietokoneen Windows-version.
  • Komentosarja yhdistää sitä suorittavan tietokoneen aseman Z kohdetietokoneen asemaan C$.
  • Komentosarja kopioi korjaustiedoston oikean version (Windows XP, Windows 2000 tai Windows Server 2003) kohdetietokoneen C:\Patchinst.exe-kansioon (aseman Z yhdistämismäärityksen avulla).
  • Komentosarja asentaa korjaustiedoston ja käynnistää kohdetietokoneet uudelleen automaattisesti ilman käyttäjän toimia tai näyttämättä valintaikkunoita -q -f -valitsinten avulla (valvomaton asennustila).
  • Komentosarja odottaa asennuksen valmistumista.
  • Komentosarja yrittää poistaa C:\Patchinst.exe-tiedoston kohdetietokoneesta.
  • Komentosarja poistaa aseman Z yhdistämismäärityksen.
  • Komentosarja käsittelee luettelon seuraavan IP-osoitteen.
Tärkeää Microsoft suosittelee, että muokkaat tätä mallikomentosarjaa verkkoympäristösi mukaiseksi ja testaat komentosarjaa testiympäristössä ennen sen käyttämistä tuotantoympäristössä.

Jos haluat käyttää Patchinstall.vbs-komentosarjaa, liitä seuraava komentosarja tekstitiedostoon nimeltä Patchinstall.vbs. Suorita sitten Patchinstall.vbs-komentosarja seuraavan komennon avulla:
cscript patchinstall.vbs Ipfile.txt KorjaustiedostojenPaikallinenPolku
Tässä komennossa Ipfile.txt on tekstitiedosto, joka sisältää luettelon niiden etätietokoneiden IP-osoitteista, joihin haluat asentaa tietoturvakorjauksen 824146 tai 823980. KorjaustiedostojenPaikallinenPolku on sen kansion täysi polku, joka sisältää tietoturvakorjauspaketit 824146 tai 823980 (nimetty uudelleen nimillä Patch_XP.exe Windows XP:tä varten, Patch_W2k.exe Windows 2000:ta varten ja Patch_W2k3.exe Windows Server 2003:ta varten).

Patchinstall.vbs-komentosarja

Microsoftin tarjoamat ohjelmointiesimerkit ovat vain ohjeellisia, eikä niihin liity mitään nimenomaisesti ilmaistua tai oletettua takuuta, mukaan lukien oletettu takuu tuotteen soveltuvuudesta kaupankäynnin kohteeksi tai sopivuudesta johonkin tiettyyn tarkoitukseen. Tässä artikkelissa oletetaan, että olet perehtynyt käytettyyn ohjelmointikieleen sekä työkaluihin, joita käytetään prosessien luomisessa sekä virheiden jäljittämisessä ja korjaamisessa. Microsoftin tukipalvelun asiantuntijat voivat auttaa tietyn toiminnon toteuttamisessa, mutta he eivät muokkaa näitä esimerkkejä niiden kuvaamien toimintojen parantamiseksi eivätkä esitä ratkaisuja erityistarpeita varten.
' Patchinstall.vbs
' Korjaustiedoston asennuskomentosarja päivityksille MS03-026 ja MS03-039
' (c) Microsoft 2003
' v1.03 cl

on error resume next

const 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: Sinun on suoritettava tämä komentosarja cscript-komennolla, esimerkiksi 'cscript " & wscript.scriptname & "'."
     wscript.quit 0
end if

' USAGE
if wscript.arguments.count <> 2 then
     wscript.echo "Käyttö: cscript " & wscript.scriptname & " <IpFile.txt> <LocalPathToPatches>" & vbCrLf & vbCrLf & _
     "  <LocalPathToPatches> on oltava täydellinen kaikki nämä tiedostot sisältävän kansion polku:" & vbCrLf & _
     "      " & XP_Patch & vbCrLf & _ 
     "      " & W2k_Patch & vbCrLf & _ 
     "      " & W2k3_Patch
     wscript.quit
end if

ipFile = wscript.arguments(0)
localPathToPatches = wscript.arguments(1)

set onet = createobject("wscript.network")
set ofs = createobject("scripting.filesystemobject")

' Tarkista, että ipfile on käytettävissä.
set oipFile = ofs.opentextfile(ipFile, 1, false)
if (Err.Number <> 0) then
     wscript.echo "Ei voi avata: " & ipFile
     wscript.quit
end if

' Muista päättää merkkiin \.
if right(localPathToPatches, 1) <> "\" then
     localPathToPatches = localPathToPatches & "\"
end if

' Huomaa, että cim_datafile ei tue UNC-polkuja.
' Kaikki on siis käsiteltävä yhdistettyjen asemien avulla.

if left(localPathToPatches, 2) = "\\" then
     wscript.echo "<pathToExecutable> ei voi olla UNC-polku, yhdistä asema paikallisesti."
     wscript.quit
end if

exeWinXP = ofs.getfile(localPathToPatches + XP_Patch).name
exeW2k = ofs.getfile(localPathToPatches + W2k_Patch).name
exeW2k3 = ofs.getfile(localPathToPatches + W2k3_Patch).name

' Tarkista, että korjaustiedostot ovat käytettävissä.
if ((len(exeWinXP) = 0) OR (len(exeW2k) = 0) OR (len(exeW2k3) = 0)) then
     wscript.echo "Korjaustiedostoja ei löydy."
     wscript.echo "Varmista, että kansio <LocalPathToPatches> sisältää kaikki nämä tiedostot:" & vbCrLf & _
     "      " & XP_Patch & vbCrLf & _ 
     "      " & W2k_Patch & vbCrLf & _ 
     "      " & W2k3_Patch
     wscript.quit
end if


set osvcLocal = getobject("winmgmts:root\cimv2")

' Virheenkäsittelykoodi sijaitsee mahdollisen virheen aiheuttavan funktion jälkeen - suorita se.
on error resume next

while not oipFile.atEndOfStream
     ip = oipFile.ReadLine()
     wscript.echo vbCrLf & "Muodostetaan yhteyttä: " & ip & "..."

     Err.Clear
     set osvcRemote = GetObject("winmgmts:\\" & ip & "\root\cimv2")

     if (Err.Number <> 0) then
          wscript.echo "Yhteyden muodostaminen epäonnistui: " & ip & "."
     else

          exeCorrectPatch = detectOSPatch(osvcRemote)
          if (exeCorrectPatch <> "") then
               ' Teet toimet etätietokoneeseen.
               wscript.echo "Asennetaan korjaustiedostoa: " & 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
                    ' Havaittiin virhe, joka ei johtunut siitä, että tiedosto oli jo olemassa.
                    wscript.echo "Kopiointi kohteeseen epäonnistui: " & ip & " - error: " & ret
               else
                    set oprocess = osvcRemote.Get("win32_process")
     
                    ' Aloita asennus ilman käyttäjän toimia. Pakota uudelleenkäynnistys asennuksen jälkeen.
                    ret = oprocess.create("c:\\Patchinst.exe -q -f")
                    if (ret <> 0) then
                         wscript.echo "Prosessin käynnistäminen epäonnistui: " & ip & ": " & ret
                    else
                         ' Hae viittaus kopioituun tiedostoon.
                         set odestFile = osvcLocal.get("cim_datafile=""z:\\Patchinst.exe""")

                         ' Odota asennuksen valmistumista.
                         for waitTime = 0 to 120     ' Odota asennuksen valmistumista enintään kaksi minuuttia.
                              wscript.Sleep 1000     ' Odota sekunti.
                              ' Poista tilapäistiedosto heti, kun sitä ei enää tarvita.
                              if (odestFile.Delete() = 0) then
                                   exit for
                              end if
                         next ' Tee muutoin silmukka uudelleen ja odota...

                         wscript.echo "Asennus onnistui."

                    end if     ' Luontiprosessi onnistui.
               end if     ' Kopiointi onnistui.

               onet.removenetworkdrive "z:", true
          end if      ' Komentosarja tietää, mikä korjaustiedosto asennetaan.
     end if ' Käsittele seuraava IP-osoite, sitten seuraava... 
wend

oipFile.close()

' Siivoa, poista asemien yhdistäminen (tarkista, sillä yhdistämistä ei välttämättä ole tehty).
if ofs.folderexists("z:\") then
     onet.removenetworkdrive "z:", true
end if

wscript.echo vbCrLf & "Korjaus on valmis. Lopetetaan."

function detectOSPatch(osvcRemote)

     set oOSInfo = osvcRemote.InstancesOf("Win32_OperatingSystem")
     ' Vain yksi esiintymä palautetaan (parhaillaan aktiivinen käyttöjärjestelmä), vaikka seuraava on tarkoitettu kaikille niille.
     for each objOperatingSystem in oOSInfo

          if (objOperatingSystem.OSType <> 18) then
               ' Varmista, että käytössä on Windows NT -tietokone.
               wscript.echo ip & " ei ole Windows XP-, Windows 2000- tai Windows 2003 Server -tietokone."
          else
               if (objOperatingSystem.Version = "5.0.2195") then
                    ' Windows 2000 SP2, SP3 ja 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 ja 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 
                    ' Tämä oli Windows NT -tietokone, mutta siinä ei ole kelvollista Service Packia.
                    wscript.echo "Ei voi korjata: " & ip & " - käyttöjärjestelmän versio ei kelpaa: " & objOperatingSystem.Caption & " SP" & _
				objOperatingSystem.ServicePackMajorVersion & "("& objOperatingSystem.Version & ")"
               end if
          end if

     next

     detectOSPatch = systemType

end function

Ominaisuudet

Artikkelin tunnus: 827227 - Viimeisin tarkistus: 8. elokuuta 2005 - Versio: 5.4
Artikkelin tiedot koskevat seuraavia tuotteita:
  • 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
Hakusanat: 
kbinfo KB827227

Anna palautetta

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com