Uzak ana bilgisayarlara 824146 (MS03-039) veya 823980 (MS03-026) yüklemek için Visual Basic komut dosyası nasıl kullanılır

™zet

Bu makale, Patchinstall.vbs adlı bir Microsoft Visual Basic Scripting Edition komut dosyası örneği içerir. Bu komut dosyası, güvenlik düzeltme eki yüklenmemiş Microsoft Windows NT, Windows 2000 veya Windows Server 2003 etki alanı ortamındaki uzak ana bilgisayarlara ağ yöneticisinin Windows Yönetim Araçları (WMI) komut dosyasını kullanarak 824146 (MS03-039) veya 823980 (MS03-026) güvenlik düzeltme ekini nasıl yükleyeceklerine bir örnektir. Patchinstall.vbs komut dosyası, girdi olarak IP adreslerini içeren ve uzak ana bilgisayardaki bilinmeyen bir konumdan (C:\Patchinst.exe) 824146 (MS03-039) veya 823980 (MS03-026) güvenlik düzeltme ekini yükleyen bir dosyayı (Ipdosyası.txt) alır. 824146 (MS03-039) güvenlik düzeltme eki hakkında ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:

824146 MS03-039: RPCSS'de Önbellek Taşması Bir Saldırganın Zararlı Programlar Çalıştırmasına İzin Verebilir

823980 güvenlik düzeltme eki hakkında ek bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere şu makale numarasını tıklatın:

823980 MS03-026: RPC'de Arabellek Taşması Kod Yürütülmesine İzin Verebilir

Ağ yöneticilerinin güvenlik düzeltme ekleri yüklenmemiş bilgisayarların varlığı konusunda ağı taramak için kullanabileceği bir araç hakkında ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:

827363 823980 (MS03-026) ve 824146 (MS03-039) Güvenlik Düzeltme Ekleri Yüklenmemiş Ana Bilgisayarları Tanımlamak İçin KB 824146 Tarama Aracı Nasıl Kullanılır

Notlar

  • 824146 veya 823980 güvenlik düzeltme ekini başarıyla yüklemek için, uzak hedef bilgisayarda yönetici izinleriniz olmalıdır.
  • Patchinstall.vbs komut dosyasının başarıyla kullanılabilmesi için Microsoft Windows XP tabanlı hedef bilgisayarlar Windows NT, Windows 2000 veya Windows Server 2003 etki alanına katılmış olmalıdır.
  • Patchinstall.vbs komut dosyası, Windows Yönetim Araçları'nı (WMI) kullanır. WMI, Dağıtılmış Bileşen Nesnesi Modeli'ne (Distributed Component Object Model, DCOM) bağımlıdır. Bu nedenle, Patchinstall.vbs dosyası Microsoft Güvenlik Bültenleri MS03-039 veya MS03-026'da belirtilen açığa geçici çözümler üretmek amacıyla DCOM'un devre dışı bırakıldığı hedef bilgisayarlarda çalışmaz.
  • 824146 veya 823980 güvenlik düzeltme eki paketleri, Patchinstall.vbs komut dosyasını çalıştırdığınız bilgisayardaki bir yerel klasörde bulunmalı ve paketler Patch_XP.exe (Windows XP için), Patch_W2K.exe (Windows 2000 için) ve Patch_W2K3.exe (Windows Server 2003 için) olarak yeniden adlandırılmalıdır.
  • Patchinstall.vbs komut dosyasını, diğer düzeltme eklerini de yükleyecek biçimde değiştirebilirsiniz.

Daha fazla bilgi

Patchinstall.vbs komut dosyası, şu görevleri gerçekleştirir:
  • Komut dosyası, 824146 veya 823980 güvenlik düzeltme ekini yüklemek istediğiniz uzak ana bilgisayarların IP adresleri listesini okur. Komut dosyası, bu listeyi IP adreslerinin bir listesini (her satırda bir IP adresi) içeren bir ASCII metin dosyasından (Ipdosyası.txt) alır. Örneğin, KB824146 tarama aracındaki Vulnerable.txt günlük dosyasını Ipdosyası.txt dosyası için kullanabilirsiniz.
  • Komut dosyası, ilk IP adresini listeden alır.
  • Komut dosyası, hedef bilgisayardaki Windows sürümünü belirler.
  • Komut dosyası, komut dosyası bilgisayarındaki Z sürücüsünü hedef bilgisayardaki C$ ile eşleştirir.
  • Komut dosyası, doğru düzeltme eki sürümünü (Windows XP, Windows 2000 veya Windows Server 2003 için) hedef bilgisayardaki C:\Patchinst.exe dosyasına (Z eşleştirmesini kullanarak) kopyalar.
  • Komut dosyası, düzeltme ekinin yüklenmesini sağlar ve sonra da kullanıcı girdisi veya iletişim kutuları olmadan, -q -f anahtarlarını kullanarak (Katılımsız yükleme modu) hedef bilgisayarların otomatik olarak yeniden başlatılmasını sağlar.
  • Komut dosyası, yükleme işleminin tamamlanmasını bekler.
  • Komut dosyası, hedef bilgisayarda C:\Patchinst.exe dosyasını silmeye çalışır.
  • Komut dosyası, Z sürücü eşleştirmesini kaldırır.
  • Komut dosyası, listedeki sonraki IP adresini işler.
Önemli Microsoft, bu örnek komut dosyasını kendi ağ ortamınız için değiştirdiğinizde, üretim ortamından önce bir sınama ortamında sınamanızı önerir.

Patchinstall.vbs komut dosyasını kullanmak için, aşağıdaki komut dosyasını Patchinstall.vbs adlı bir metin dosyasına yapıştırın. Ardından, aşağıdaki komut satırını kullanarak Patchinstall.vbs komut dosyasını çalıştırın:
cscript patchinstall.vbs Ipdosyası.txt DüzeltmelerinYerelYolu
Bu komutta, Ipdosyası.txt, 824146 veya 823980 güvenlik düzeltme ekini yüklemek istediğiniz uzak ana bilgisayarların IP adresleri listesini içeren bir metin dosyasıdır. DüzeltmelerinYerelYolu, 824146 veya 823980 düzeltme eki paketlerini (Windows XP için Patch_XP.exe, Windows 2000 için Patch_W2k.exe ve Windows Server 2003 için Patch_W2k3.exe olarak yeniden adlandırılmış) içeren klasörün tam yoludur.

Patchinstall.vbs Komut Dosyası

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Örtük garantiler, satılabilirlik veya belirli bir amaca uygunluk da buna dahil olup, ancak bununla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler.
' Patchinstall.vbs
' MS03-026 ve MS03-039 için düzeltme eki yüklemesi
' (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 "HATA: Bu komut dosyasını cscript kullanarak çalıştırmalısınız, örneğin 'cscript " & wscript.scriptname & "'."
wscript.quit 0
end if

' KULLANIM
if wscript.arguments.count <> 2 then
wscript.echo "Kullanım: cscript " & wscript.scriptname & " <Ipdosyası.txt> <DüzeltmelerinYerelYolu>" & vbCrLf & vbCrLf & _
" <DüzeltmelerinYerelYolu>, bu dosyaların tümünün bulunduğu tam bir yol olmalıdır:" & 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")

' ipfile dosyasının erişilebilir olduğunu doğrulayın.
set oipFile = ofs.opentextfile(ipFile, 1, false)
if (Err.Number <> 0) then
wscript.echo ipFile & " açılamadı"
wscript.quit
end if

' Bir \ karakteri ile bitirdiğinizden emin olun.
if right(localPathToPatches, 1) <> "\" then
localPathToPatches = localPathToPatches & "\"
end if

'cim_datafile'ın UNC yolları desteklemediğini unutmayın
'bu nedenle tüm işlemler sürücü eşlemeleri ile yapılmalıdır.
if left(localPathToPatches, 2) = "\\" then
wscript.echo "<pathToExecutable> bir UNC yolu olamaz, lütfen bir sürücüyü yerel olarak eşleyin"
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

' Düzeltme eklerine erişilebildiğini doğrulayın.
if ((len(exeWinXP) = 0) OR (len(exeW2k) = 0) OR (len(exeW2k3) = 0)) then
wscript.echo "Düzeltme eki dosyaları bulunamıyor."
wscript.echo "<DüzeltmelerinYerelYolu> klasörünün tüm bu dosyaları içerdiğiden emin olun:" & vbCrLf & _
" " & XP_Patch & vbCrLf & _
" " & W2k_Patch & vbCrLf & _
" " & W2k3_Patch
wscript.quit
end if


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

'Hata işleme kodu hata verebilecek işlevin altındadır - çalıştır.
on error resume next

while not oipFile.atEndOfStream
ip = oipFile.ReadLine()
wscript.echo vbCrLf & "Bağlanıyor " & ip & "..."

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

if (Err.Number <> 0) then
wscript.echo "Bağlantı kurulamadı " & ip & "."
else

exeCorrectPatch = detectOSPatch(osvcRemote)
if (exeCorrectPatch <> "") then
' Parçaları uzak bilgisayara yerleştir.
wscript.echo "Düzeltme eki yükleniyor " & 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
' Hata algılandı ve bu hata "dosya zaten var" hatası değil
wscript.echo "Kopyalanamadı: " & ip & " - error: " & ret
else
set oprocess = osvcRemote.Get("win32_process")

' Yüklemeyi kullanıcı etkileşimi olmadan başlat ve bitince bilgisayarı yeniden başlatmayı zorla.
ret = oprocess.create("c:\\Patchinst.exe -q -f")
if (ret <> 0) then
wscript.echo "İşlemin başlatılamadığı adres: " & ip & ": " & ret
else
' Kopyalanan dosyalara bir başvuru al.
set odestFile = osvcLocal.get("cim_datafile=""z:\\Patchinst.exe""")

' Yüklemenin tamamlanmasını bekle.
for waitTime = 0 to 120 ' Bekle--yüklemenin tamamlanması için, en çok iki dakika.
wscript.Sleep 1000 ' Bir saniye uyu.
' Geçiçi dosyayı serbest kaldığında hemen sil.
if (odestFile.Delete() = 0) then
exit for
end if
next ' Aksi halde dön ve beklemeye devam et...

wscript.echo "Kaldırma başarılı."

end if 'İşlem başarıyla oluşturuldu.
end if 'Kopyalama başarılı.

onet.removenetworkdrive "z:", true
end if ' Komut hangi düzeltme ekinin yükleneceğini biliyor.
end if ' Sonraki IP adresini yap ve sonra sonraki IP adresini yap...
wend

oipFile.close()

'Temizle, sürücü eşlemesini kaldır (bu defa denetle, çünkü eşlenmemiş olabilir).
if ofs.folderexists("z:\") then
onet.removenetworkdrive "z:", true
end if

wscript.echo vbCrLf & "Düzeltme ekini uygulama tamamlandı. Çıkılıyor."

function detectOSPatch(osvcRemote)

set oOSInfo = osvcRemote.InstancesOf("Win32_OperatingSystem")
'Aşağıdaki bir foreach olsa da yalnızca bir örnek döndürülür (şu anda etkin olan işletim sistemi).
for each objOperatingSystem in oOSInfo

if (objOperatingSystem.OSType <> 18) then
' Bu bilgisayarın Windows NT tabanlı olduğundan emin olun.
wscript.echo ip & " Windows XP, Windows 2000 veya Windows 2003 Server bilgisayarı değil."
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
'Bu Windows NT tabanlı bir bilgisayardı, geçerli bir hizmet paketi yoktu.
wscript.echo "Düzeltme uygulanamadı " & ip & " - işlenmeyen işletim sistemi sürümü: " & objOperatingSystem.Caption & " SP" & _
objOperatingSystem.ServicePackMajorVersion & "("& objOperatingSystem.Version & ")"
end if
end if

next

detectOSPatch = systemType

end function

Özellikler

Makale No: 827227 - Son İnceleme: 9 Haz 2009 - Düzeltme: 1

Geri bildirim