Τρόπος χρήσης μιας δέσμης ενεργειών visual basic για να εγκαταστήσετε το 824146 (MS03-039) ή ενημερωμένη έκδοση κώδικα ασφαλείας 823980 (MS03-026) σε απομακρυσμένους κεντρικούς υπολογιστές

Σύνοψη

Αυτό το άρθρο περιλαμβάνει ένα δείγμα δέσμης ενεργειών της Microsoft Visual Basic Scripting Edition που ονομάζεται Patchinstall.vbs. Αυτή η δέσμη ενεργειών είναι ένα παράδειγμα για το πώς ένας διαχειριστής δικτύου μπορεί να χρησιμοποιήσετε τα Windows οργάνων διαχείρισης (WMI) δέσμες ενεργειών για να εγκαταστήσετε το 824146 (MS03-039) ή την ενημερωμένη έκδοση κώδικα ασφαλείας 823980 (MS03-026) σε απομακρυσμένους κεντρικούς υπολογιστές που δεν διαθέτουν την ενημερωμένη έκδοση κώδικα που εγκαθίσταται σε ένα περιβάλλον τομέα Microsoft Windows NT, Windows 2000 ή Windows Server 2003. Η δέσμη ενεργειών Patchinstall.vbs παίρνει ένα αρχείο (Ipfile.txt) το οποίο περιέχει διευθύνσεις IP ως είσοδο και εγκαθιστά το 824146 (MS03-039) ή την ενημερωμένη έκδοση κώδικα ασφαλείας 823980 (MS03-026) από μια γνωστή τοποθεσία στον απομακρυσμένο κεντρικό υπολογιστή (C:\Patchinst.exe). Για πρόσθετες πληροφορίες σχετικά με την ενημερωμένη έκδοση κώδικα ασφαλείας 824146 (MS03-039), κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

824146 MS03-039: η υπέρβαση Buffer στο RPCSS ενδέχεται να επιτρέψει την εκτέλεση κώδικα

Για πρόσθετες πληροφορίες σχετικά με την ενημερωμένη έκδοση κώδικα ασφαλείας 823980, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

823980 MS03-026: η υπέρβαση Buffer στο RPC ενδέχεται να επιτρέψει την εκτέλεση κώδικα

Για πρόσθετες πληροφορίες σχετικά με ένα εργαλείο το οποίο μπορούν να χρησιμοποιήσουν οι διαχειριστές δικτύου για να σαρώσουν το δίκτυό τους για υπολογιστές που δεν έχουν εγκατεστημένες αυτές τις ενημερωμένες εκδόσεις κώδικα ασφαλείας, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:

827363 τρόπος για να χρησιμοποιήσετε το εργαλείο σάρωσης KB 824146 για τον εντοπισμό κεντρικών υπολογιστών οι οποίοι δεν διαθέτουν 823980 (MS03-026) ή 824146 (MS03-039) ενημερωμένες εκδόσεις κώδικα ασφαλείας εγκαθίσταται

Σημειώσεις

  • Πρέπει να έχετε δικαιώματα διαχειριστή σε απομακρυσμένους υπολογιστές προορισμού για να εγκαταστήσετε με επιτυχία την ενημερωμένη έκδοση κώδικα ασφαλείας 823980 ή 824146.
  • Microsoft υπολογιστές προορισμού με τα Windows XP πρέπει να συμμετέχει με επιτυχία σε έναν τομέα των Windows NT, Windows 2000 ή Windows Server 2003 για να χρησιμοποιήσετε τη δέσμη ενεργειών Patchinstall.vbs.
  • Η δέσμη ενεργειών Patchinstall.vbs χρησιμοποιεί των οργάνων διαχείρισης των Windows (WMI). WMI βασίζεται σε το κατανεμημένο στοιχείο αντικείμενο μοντέλο DCOM. Επομένως, το Patchinstall.vbs δεν λειτουργεί σε υπολογιστές προορισμού όπου έχει απενεργοποιηθεί DCOM για να αντιμετωπίσετε το θέμα ευπάθειας που αντιμετωπίζεται από τα ενημερωτικά δελτία ασφαλείας MS03-039 ή MS03-026.
  • Το 824146 ή τα πακέτα ενημερωμένης έκδοσης κώδικα ασφαλείας 823980 πρέπει να βρίσκεται σε έναν τοπικό φάκελο στον υπολογιστή όπου εκτελείτε τη δέσμη ενεργειών Patchinstall.vbs και τα πακέτα πρέπει να μετονομαστεί σε Patch_XP.exe (για τα Windows XP), Patch_W2K.exe (για τα Windows 2000) και Patch_W2K3.exe (για τον Windows Server 2003).
  • Μπορείτε να τροποποιήσετε τη δέσμη ενεργειών Patchinstall.vbs για να εγκαταστήσετε άλλες ενημερωμένες εκδόσεις κώδικα.

Περισσότερες πληροφορίες

Η δέσμη ενεργειών Patchinstall.vbs εκτελεί αυτές τις εργασίες:
  • Η δέσμη ενεργειών διαβάζει μία λίστα διευθύνσεων IP για τους υπολογιστές του απομακρυσμένου κεντρικού υπολογιστή στον οποίο θέλετε να εγκαταστήσετε την ενημερωμένη έκδοση κώδικα ασφαλείας 823980 ή 824146. Η δέσμη ενεργειών αποκτά τη λίστα από ένα αρχείο κειμένου ASCII (Ipfile.txt) που περιέχει μια λίστα διευθύνσεων IP (μια διεύθυνση IP σε κάθε γραμμή). Για παράδειγμα, μπορείτε να χρησιμοποιήσετε το αρχείο καταγραφής Vulnerable.txt από το KB824146 εργαλείο για το αρχείο Ipfile.txt σάρωσης.
  • Η δέσμη ενεργειών αποκτά την πρώτη διεύθυνση IP από τη λίστα.
  • Η δέσμη ενεργειών καθορίζει την έκδοση των Windows στον υπολογιστή προορισμού.
  • Η δέσμη ενεργειών αντιστοιχίζει τη μονάδα δίσκου Z του υπολογιστή δέσμης ενεργειών C $ του υπολογιστή προορισμού.
  • Η δέσμη ενεργειών αντιγράφει τη σωστή έκδοση της ενημερωμένης έκδοσης κώδικα (για τα Windows XP, Windows 2000 ή Windows Server 2003) στο C:\Patchinst.exe του υπολογιστή προορισμού (χρησιμοποιώντας την αντιστοίχιση μονάδας δίσκου Z).
  • Η δέσμη ενεργειών προκαλεί την ενημερωμένη έκδοση κώδικα για να εγκατασταθούν, και στη συνέχεια αυτόματα επανεκκίνηση των υπολογιστών προορισμού χωρίς οποιονδήποτε χρήστη εισόδου ή παράθυρα διαλόγου, χρησιμοποιώντας το -q-f μεταβαίνει (λειτουργία εγκατάστασης χωρίς παρακολούθηση).
  • Η δέσμη ενεργειών περιμένει την ολοκλήρωση της εγκατάστασης.
  • Η δέσμη ενεργειών προσπαθεί να διαγράψει το αρχείο C:\Patchinst.exe στον υπολογιστή προορισμού.
  • Η δέσμη ενεργειών διαγράφει την αντιστοίχηση της μονάδας δίσκου Z.
  • Η δέσμη ενεργειών επεξεργάζεται την επόμενη διεύθυνση IP στη λίστα.
Σημαντικό Η Microsoft συνιστά να τροποποιήσετε το δείγμα δέσμης ενεργειών για το περιβάλλον δικτύου σας και, στη συνέχεια, ελέγξετε τη δέσμη ενεργειών σε περιβάλλον ελέγχου πριν να τη χρησιμοποιήσετε σε περιβάλλον παραγωγής.

Για να χρησιμοποιήσετε τη δέσμη ενεργειών Patchinstall.vbs, επικολλήστε την ακόλουθη δέσμη ενεργειών σε ένα αρχείο κειμένου που ονομάζεται Patchinstall.vbs. Στη συνέχεια, εκτελέστε τη δέσμη ενεργειών Patchinstall.vbs χρησιμοποιώντας την ακόλουθη γραμμή εντολών:
cscript patchinstall.vbs Ipfile.txt LocalPathToPatches
Σε αυτήν την εντολή, Ipfile.txt είναι ένα αρχείο κειμένου που περιέχει μια λίστα διευθύνσεων IP για τους απομακρυσμένους κεντρικούς υπολογιστές όπου θέλετε να εγκαταστήσετε την ενημερωμένη έκδοση κώδικα ασφαλείας 823980 ή 824146. LocalPathToPatches είναι η πλήρης διαδρομή ενός φακέλου που περιέχει το 824146 ή τα πακέτα ενημερωμένης έκδοσης κώδικα ασφαλείας 823980 (μετονομαστεί σε Patch_XP.exe για τα Windows XP, Patch_W2k.exe για τα Windows 2000 και Patch_W2k3.exe για τον Windows Server 2003).

Η δέσμη ενεργειών Patchinstall.vbs

Η Microsoft παρέχει παραδείγματα προγραμματισμού μόνο για επεξήγηση, χωρίς καμία εγγύηση, είτε σιωπηρή είτε ρητή. Αυτό περιλαμβάνει, ενδεικτικά, τις σιωπηρές εγγυήσεις εμπορευσιμότητας ή καταλληλότητας για συγκεκριμένο σκοπό. Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού που παρουσιάζεται, καθώς και με τα εργαλεία που χρησιμοποιούνται για τη δημιουργία διαδικασιών και τον εντοπισμό σφαλμάτων σε αυτές. Οι μηχανικοί υποστήριξης της Microsoft μπορούν να σας εξηγήσουν τη λειτουργικότητα μιας συγκεκριμένης διαδικασίας, αλλά δεν θα τροποποιήσουν αυτά τα παραδείγματα για να παράσχουν πρόσθετες λειτουργίες, ούτε θα δημιουργήσουν διαδικασίες για να καλύψουν τις συγκεκριμένες απαιτήσεις σας.
' Patchinstall.vbs' Patch installation script for MS03-026 and 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: You must run this script using cscript, for example 'cscript " & wscript.scriptname & "'."
wscript.quit 0
end if

' USAGE
if wscript.arguments.count <> 2 then
wscript.echo "Usage: cscript " & wscript.scriptname & " <IpFile.txt> <LocalPathToPatches>" & vbCrLf & vbCrLf & _
" <LocalPathToPatches> must be a full path of a folder that contains all of these files:" & 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")

' Verify that ipfile is accessible.
set oipFile = ofs.opentextfile(ipFile, 1, false)
if (Err.Number <> 0) then
wscript.echo "Cannot open " & ipFile
wscript.quit
end if

' Make sure to end with a \ character.
if right(localPathToPatches, 1) <> "\" then
localPathToPatches = localPathToPatches & "\"
end if

'Note that cim_datafile does not support UNC paths
'so everything must be handled through mapped drives.
if left(localPathToPatches, 2) = "\\" then
wscript.echo "<pathToExecutable> cannot be a UNC path, please map a drive locally"
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

' Verify that the patches are accessible.
if ((len(exeWinXP) = 0) OR (len(exeW2k) = 0) OR (len(exeW2k3) = 0)) then
wscript.echo "Cannot find patch files."
wscript.echo "Please verify that the <LocalPathToPatches> folder contains all of these files:" & vbCrLf & _
" " & XP_Patch & vbCrLf & _
" " & W2k_Patch & vbCrLf & _
" " & W2k3_Patch
wscript.quit
end if


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

'The error-handling code is below the function that may throw one - execute it.
on error resume next

while not oipFile.atEndOfStream
ip = oipFile.ReadLine()
wscript.echo vbCrLf & "Connecting to " & ip & "..."

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

if (Err.Number <> 0) then
wscript.echo "Failed to connect to " & ip & "."
else

exeCorrectPatch = detectOSPatch(osvcRemote)
if (exeCorrectPatch <> "") then
' Lay the bits on the remote 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
' Failure detected and failure was not "file already exists."
wscript.echo "Failed copy to " & ip & " - error: " & ret
else
set oprocess = osvcRemote.Get("win32_process")

' Start the installation without user interaction, and force a restart after completion.
ret = oprocess.create("c:\\Patchinst.exe -q -f")
if (ret <> 0) then
wscript.echo "Failed to start process on " & ip & ": " & ret
else
' Get a reference to the file that was copied.
set odestFile = osvcLocal.get("cim_datafile=""z:\\Patchinst.exe""")

' Wait for the installation to complete.
for waitTime = 0 to 120 ' Lay and wait--up to two minutes for the installation to complete.
wscript.Sleep 1000 ' Sleep one second.
' Delete temporary file as soon as possible after it is freed.
if (odestFile.Delete() = 0) then
exit for
end if
next ' Otherwise, loop again and keep waiting...

wscript.echo "Installation successful."

end if 'Create process succeeded.
end if 'Copy succeeded.

onet.removenetworkdrive "z:", true
end if ' The script knows which patch to install.
end if ' Do the next IP address, then the next IP address...
wend

oipFile.close()

'Clean up, remove drive mapping (check this time, because it may not have been mapped).
if ofs.folderexists("z:\") then
onet.removenetworkdrive "z:", true
end if

wscript.echo vbCrLf & "Patching complete. Exiting."

function detectOSPatch(osvcRemote)

set oOSInfo = osvcRemote.InstancesOf("Win32_OperatingSystem")
'Only one instance is ever returned (the currently active OS), even though the following is a foreach.
for each objOperatingSystem in oOSInfo

if (objOperatingSystem.OSType <> 18) then
' Make sure that this computer is Windows NT-based.
wscript.echo ip & " is not a Windows XP, Windows 2000, or Windows 2003 Server computer."
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
'This was a Windows NT-based computer, but not with a valid service pack.
wscript.echo "Could not patch " & ip & " - unhandled OS version: " & objOperatingSystem.Caption & " SP" & _
objOperatingSystem.ServicePackMajorVersion & "("& objOperatingSystem.Version & ")"
end if
end if

next

detectOSPatch = systemType

end function


Ιδιότητες

Αναγνωριστικό άρθρου: 827227 - Τελευταία αναθεώρηση: 17 Ιαν 2017 - Αναθεώρηση: 2

Σχόλια