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

Makale çevirileri Makale çevirileri
Makale numarası: 827227 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

™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 numarası: 827227 - Last Review: 8 Ağustos 2005 Pazartesi - Gözden geçirme: 5.4
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Web Edition
  • Microsoft Windows XP Professional Edition
  • Microsoft Windows XP Tablet PC Edition
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
Anahtar Kelimeler: 
kbinfo KB827227

Geri Bildirim Ver

 

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