A 824146 (MS03-039), illetve a 823980 (MS03-026) jelű biztonsági javítás telepítése Visual Basic parancsfájl segítségével távoli állomás-számítógépekre
A cikk egy Patchinstall.vbs nevű Microsoft Visual Basic Scripting Edition parancsfájlt is tartalmaz. A parancsfájl bemutatja, hogy a hálózati rendszergazdák miként telepíthetik a 824146 (MS03-039) és a 823980 (MS03-026) jelű biztonsági javításokat Microsoft Windows NT, Windows 2000 és Windows Server 2003 alapú tartományi környezetben a Windows Management Instrumentation (WMI) parancsnyelvi lehetőségeinek kihasználásával olyan távoli állomás számítógépeken, amelyek nem rendelkeznek ezekkel a javításokkal. A Patchinstall.vbs parancsfájl argumentuma egy olyan fájlt (Ipfile.txt), amely bemenetként IP-címeket tartalmaz. A parancsfájl a távoli állomás-számítógép egy előre megadott útvonaláról (C:\Patchinst.exe) telepíti a 824146 (MS03-039) vagy a 823980 (MS03-026) jelű biztonsági javítást.
További információt a 824146-os (MS03-039) biztonsági javításról a Microsoft Tudásbázis következő cikkében talál a cikk számára kattintva:
MS03-026: Az RPC-felület puffertúlcsordulása programkód végrehajtására adhat lehetőséget
A rendszergazdák számára készült, a tárgyalt biztonsági javításokat nem tartalmazó számítógépeket a hálózat vizsgálatával azonosító eszközről további információt a Microsoft Tudásbázis következő cikkében talál a cikk számára kattintva:
A 823980-as (MS03-026) és a 824146-os (MS03-039) számú biztonsági javítást nem tartalmazó gazdaszámítógépek azonosítása a KB 824146 keresőeszközzel
Megjegyzések
A 824146 és 823980 jelű biztonsági javítások sikeres telepítéséhez rendszergazdai jogosultságokkal kell rendelkeznie a távoli célszámítógépeken.
Patchinstall.vbs parancsfájl sikeres futtatásához a Microsoft Windows XP alapú célszámítógépeket Windows NT, Windows 2000 vagy Windows Server 2003 tartományba kell csatlakoztatni.
A Patchinstall.vbs parancsfájl a Windows Management Instrumentation (WMI) szolgáltatásait használja. A WMI a Distributed Component Object Model (DCOM) technológiára épül. Emiatt a Patchinstall.vbs parancsfájl nem fut le azokon a számítógépeken, melyeken a DCOM szolgáltatást letiltották a Microsoft Security Bulletin MS03-039 vagy MS03-026 jelű cikkében tárgyalt biztonsági rések elleni védelemre szolgáló megoldásként.
Azokon a számítógépeken, amelyeken futtatni kívánja a Patchinstall.vbs parancsfájlt, a 824146 vagy a 823980 biztonsági javításnak helyi mappában kell elhelyezkednie, és ezt a mappát a Patch_XP.exe (Windows XP esetén), Patch_W2K.exe (Windows 2000 esetén) vagy Patch_W2K3.exe (Windows Server 2003 esetén) névre kell átnevezni.
A Patchinstall.vbs parancsfájl módosításával más javítások is telepíthetők.
A Patchinstall.vbs parancsfájl az alábbi feladatokat hajtja végre:
Beolvassa azon távoli állomás-számítógépek IP-címeinek listáját, melyeken telepíteni kívánja a 824146-os vagy 823980-as biztonsági javítást. A listát a parancsfájl egy ASCII formátumú szövegfájlból (Ipfile.txt) olvassa be, amely egy IP-címlistát tartalmaz (soronként egy IP-címmel). AzIpfile.txt fájl lehet például a KB824146 keresőeszköz által létrehozott Vulnerable.txt naplófájl.
Beolvassa a listában szereplő első IP-címet.
Megállapítja a célszámítógépen futó Windows rendszer verzióját.
A parancsfájlt futtató számítógép Z meghajtóját a célszámítógép C$ megosztásához rendeli.
A javítás megfelelő verzióját (a Windows XP, Windows 2000 vagy Windows Server 2003 rendszerre készült verziót) a Z meghajtó-hozzárendelés által a célszámítógép C:\Patchinst.exe elérési útvonalára másolja.
Telepíti a javítást, majd automatikusan újraindítja a célszámítógépet. Ehhez semmilyen felhasználói beavatkozásra nincs szükség, és párbeszédpanelek sem jelennek meg, amire a -q -f kapcsolók (felügyelet nélküli telepítési mód) adnak lehetőséget.
Megvárja a telepítés befejezését.
Megpróbálja törölni a célszámítógépen a C:\Patchinst.exe fájlt.
Megszűnteti a Z meghajtó-hozzárendelést.
Folytatja az eljárást a listában szereplő következő IP-címmel.
Fontos! A Microsoft javasolja, hogy a parancsfájlt hálózati környezetének megfelelően módosítsa, és a hálózati alkalmazása előtt megfelelő tesztkörnyezetben tesztelje.
A Patchinstall.vbs parancsfájl használatához illessze be az alábbiakban közreadott kódot egy Patchinstall.vbs nevű szövegfájlba, majd futtassa a parancsfájlt az alábbi parancssor szerint:
A fenti parancsban az Ipfile.txt az azon távoli állomás-számítógépek IP-címeinek listáját tartalmazó szövegfájl, amelyeken telepíteni kívánja a 824146 vagy a 823980 jelű biztonsági javítást, a javítások_helyi_elérési_útja argumentum pedig a 824146 vagy a 823980 jelű biztonsági javítás átnevezett csomagjait – Windows XP esetén Patch_XP.exe, Windows 2000 esetén Patch_W2k.exe, míg Windows Server 2003 esetén Patch_W2k3.exe – tartalmazó mappa teljes elérési útja.
A Patchinstall.vbs parancsfájl
A Microsoft csak szemléltetési célból ad közre programozási példákat, és azokra sem közvetlen, sem közvetett jótállást nem vállal. Ebbe beleértendő a forgalomba hozhatóságra és az adott célra való megfelelőségre vonatkozó jótállás is. A cikk feltételezi, hogy az olvasó jártas a szemléltetésre szolgáló programozási nyelvben, valamint az eljárások létrehozására és a velük kapcsolatos hibakeresésre szolgáló eszközök használatában. A Microsoft támogatási szakemberei segítséget nyújthatnak egy-egy adott eljárás funkcionalitásának megértésében, de további funkcionalitás hozzáadása céljából nem módosítják a példákat, és nem készítenek az egyéni követelményeknek megfelelő eljárásokat.
' Patchinstall.vbs
' Telepítő parancsfájl az MS03-026 és MS03-039 jelű javításokhoz
' (c) Microsoft 2003
' v1.03 cl
on error resume next
const XP_Patch = "Patch_XP.exe"
const W2k_Patch = "Patch_W2k.exe"
const W2k_Patch = "Patch_W2k.exe"
If right(ucase(wscript.FullName),11)="WSCRIPT.EXE" then
wscript.echo "HIBA: Ezt a parancsfájlt a cscript parancsértelmezővel kell futtatni, például: 'cscript " & wscript.scriptname & "'."
wscript.quit 0
end if
' HASZNÁLAT
if wscript.arguments.count <> 2 then
wscript.echo "Használat: cscript " & wscript.scriptname & " <IpFile.txt> <javítások_helyi_elérési_útja>" & vbCrLf & vbCrLf & _
" A <javítások_helyi_elérési_útja> argumentum az alábbi fájlokat tartalmazó mappa teljes elérési útja kell legyen:" & 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")
' Az ipfile elérhetőségének ellenőrzése
set oipFile = ofs.opentextfile(ipFile, 1, false)
if (Err.Number <> 0) then
wscript.echo "Nem nyitható meg a következő fájl: " & ipFile
wscript.quit
end if
' A záró \ karakter hozzáadása, ha hiányzik.
if right(localPathToPatches, 1) <> "\" then
localPathToPatches = localPathToPatches & "\"
end if
' Figyelem! A cim_datafile változó nem támogatja az UNC elérési útvonalakat,
' így mindent meghajtó-hozzárendeléssel kell kezelni.
if left(localPathToPatches, 2) = "\\" then
wscript.echo "A <javítások_helyi_elérési_útjának_meghajtójele> nem lehet UNC elérési útvonal. Csatlakoztasson egy helyi meghajtót az elérési úthoz."
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
' A javítások elérhetőségének ellenőrzése
if ((len(exeWinXP) = 0) OR (len(exeW2k) = 0) OR (len(exeW2k3) = 0)) then
wscript.echo "Nem találhatók a javításokat tartalmazó fájlok."
wscript.echo "Ellenőrizze, hogy a <javítások_helyi_elérési_útja> mappában megtalálható-e az alábbi fájlok mindegyike:" & vbCrLf & _
" " & XP_Patch & vbCrLf & _
" " & W2k_Patch & vbCrLf & _
" " & W2k3_Patch
wscript.quit
end if
set osvcLocal = getobject("winmgmts:root\cimv2")
' A hibakezelési kód mindig abban a függvényben található, amely a hibát generálhatja.
on error resume next
while not oipFile.atEndOfStream
ip = oipFile.ReadLine()
wscript.echo vbCrLf & "Csatlakozás a következő IP-címhez: " & ip & "..."
Err.Clear
set osvcRemote = GetObject("winmgmts:\\" & ip & "\root\cimv2")
if (Err.Number <> 0) then
wscript.echo vbCrLf & "Nem sikerült kapcsolódni a következő IP-címhez: " & ip & "..."
else
exeCorrectPatch = detectOSPatch(osvcRemote)
if (exeCorrectPatch <> "") then
' Telepítés a távoli számítógépen.
wscript.echo "A következő javítás telepítése: " & 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
' Hiba történt, de annak típusa nem "a fájl már létezik".
wscript.echo "Nem sikerült a másolás a következő címre: " & ip & " – a hiba: " & ret
else
set oprocess = osvcRemote.Get("win32_process")
' A telepítés elkezdése felhasználói beavatkozás nélkül, és az újraindítás kényszerítése a folyamat végén.
ret = oprocess.create("c:\\Patchinst.exe -q -f")
if (ret <> 0) then
wscript.echo "Folyamatindítási hiba a következő IP-címen: " & ip & ": " & ret
else
' A már átmásolt fájlra való hivatkozás tárolása.
set odestFile = osvcLocal.get("cim_datafile=""z:\\Patchinst.exe""")
' Megvárja a telepítés befejezését.
for waitTime = 0 to 120 ' Várakozás a telepítés befejezésére legfeljebb 2 percig
wscript.Sleep 1000 ' Egy másodpercnyi várokazás.
' Az ideiglenes fájl törlése, amint az felszabadult.
if (odestFile.Delete() = 0) then
exit for
end if
next ' Különben újabb ciklus, a várakozás folytatása...
wscript.echo "A telepítés sikeresen befejeződött."
end if ' A folyamat létrehozása sikerült
end if ' A másolás sikerült.
onet.removenetworkdrive "z:", true
end if ' A parancsfájl tudja, mely javítást kell telepíteni.
end if ' Folytatás a következő, majd az azt követő IP-címmel...
wend
oipFile.close()
' Tisztítás, a meghajtó-hozzárendelés eltávolítása (az ellenőrzés most szükséges, mivel lehet, hogy a csatlakoztatás meg sem történt).
if ofs.folderexists("z:\") then
onet.removenetworkdrive "z:", true
end if
wscript.echo vbCrLf & "A javítás telepítése befejeződött. Kilépés."
function detectOSPatch(osvcRemote)
set oOSInfo = osvcRemote.InstancesOf("Win32_OperatingSystem")
' Mindig csupán egyetlen példány kerül visszaadásra (a jelenleg aktív operációs rendszeré), függetlenül attól, hogy az alábbi egy foreach ciklus:
for each objOperatingSystem in oOSInfo
if (objOperatingSystem.OSType <> 18) then
' Győződjön meg arról, hogy a számítógép Windows NT alapú.
wscript.echo "A(z) " & ip & " címen nem Windows XP, Windows 2000 vagy Windows 2003 Server számítógép található."
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
' A számítógép Windows NT alapú, de a rajta lévő szervizcsomag érvénytelen.
wscript.echo "A javítás nem telepíthető a következő IP-címre: " & ip & " –- nem támogatott operációs rendszer verzió: " & objOperatingSystem.Caption & " SP" & _
objOperatingSystem.ServicePackMajorVersion & "("& objOperatingSystem.Version & ")"
end if
end if
next
detectOSPatch = systemType
end function
Cikk azonosítója: 827227 - Utolsó ellenőrzés: 2005. augusztus 9. - Verziószám: 5.4
A cikkben található információ a következő(k)re vonatkozik:
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
Kulcsszavak:
kbinfo KB827227
A Microsoft tudásbázisban szolgáltatott információkat "az adott állapotban", bárminemű szavatosság vagy garancia nélkül biztosítjuk. A Microsoft kizár mindennemű, akár kifejezett, akár vélelmezett szavatosságot vagy garanciát, ideértve a forgalomképességre és az adott célra való alkalmasságra vonatkozó szavatosságot is. A Microsoft Corporation és annak beszállítói semmilyen körülmények között nem felelősek semminemű kárért, így a közvetlen, a közvetett, az üzleti haszon elmaradásából származó vagy speciális károkért, illetve a kár következményeként felmerülő költségek megtérítéséért, még abban az esetben sem, ha a Microsoft Corporationt vagy beszállítóit az ilyen károk bekövetkeztének lehetőségére figyelmeztették. Egyes államok joga nem teszi lehetővé bizonyos károkért a felelősség kizárását vagy korlátozását, ezért a fenti korlátozások az ön esetében esetleg nem alkalmazhatók.
Köszönjük! Ez az információ segítséget nyújt számunkra, hogy fejlesszük a támogatási tartalmat. További támogatási lehetőségekért keresse fel a következő webhelyet: Súgó és támogatási webhely.