pengembangan-web-mp-pd.com

Cara menginstal Pembaruan Windows dari baris perintah

Apakah mungkin untuk menginstal pembaruan windows dari command-line? Alat pembaruan grafis sepertinya tidak berfungsi dengan baik di Windows 7. Kadang-kadang tidak, kadang-kadang tidak ... Masalah saya adalah bahwa saya tidak dapat melihat pembaruan ketika saya mengklik untuk melihat daftar detail. Jadi ketika ada pembaruan yang tidak dicentang secara default, saya tidak dapat menginstalnya ...

Jadi, apakah ada cara lain saya bisa menginstalnya?

17
Svish

Tidak yakin tentang Windows 7, tetapi dengan XP/Vista, Anda bisa menjalankan perintah berikut untuk mendeteksi dan mengunduh pembaruan:

wuauclt /detectnow /reportnow

Jika Anda memiliki masalah untuk membuatnya berfungsi, periksa WSUS Wiki .

Kalau tidak, jika Anda memiliki pembaruan spesifik yang Anda inginkan, cukup unduh dari situs web Microsoft. Jika ada beberapa masalah yang mencegah Anda menginstal, itu cara terbaik untuk mengetahuinya, karena log Pembaruan Windows sangat bagus untuk ditangani.

12
duffbeer703

Anda dapat menggunakan skrip untuk memeriksa, mengunduh, dan menginstal pembaruan secara sinkron. Saya sering menggunakan versi modifikasi vbscript ini untuk menambal manual server Windows Core.

Set updateSession = CreateObject("Microsoft.Update.Session")
updateSession.ClientApplicationID = "MSDN Sample Script"

Set updateSearcher = updateSession.CreateUpdateSearcher()

WScript.Echo "Searching for updates..." & vbCRLF

Set searchResult = _
updateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0")

WScript.Echo "List of applicable items on the machine:"

For I = 0 To searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    WScript.Echo I + 1 & "> " & update.Title
Next

If searchResult.Updates.Count = 0 Then
    WScript.Echo "There are no applicable updates."
    WScript.Quit
End If

WScript.Echo vbCRLF & "Creating collection of updates to download:"

Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")

For I = 0 to searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    addThisUpdate = false
    If update.InstallationBehavior.CanRequestUserInput = true Then
        WScript.Echo I + 1 & "> skipping: " & update.Title & _
        " because it requires user input"
    Else
        If update.EulaAccepted = false Then
            WScript.Echo I + 1 & "> note: " & update.Title & _
            " has a license agreement that must be accepted:"
            WScript.Echo update.EulaText
            WScript.Echo "Do you accept this license agreement? (Y/N)"
            strInput = WScript.StdIn.Readline
            WScript.Echo 
            If (strInput = "Y" or strInput = "y") Then
                update.AcceptEula()
                addThisUpdate = true
            Else
                WScript.Echo I + 1 & "> skipping: " & update.Title & _
                " because the license agreement was declined"
            End If
        Else
            addThisUpdate = true
        End If
    End If
    If addThisUpdate = true Then
        WScript.Echo I + 1 & "> adding: " & update.Title 
        updatesToDownload.Add(update)
    End If
Next

If updatesToDownload.Count = 0 Then
    WScript.Echo "All applicable updates were skipped."
    WScript.Quit
End If

WScript.Echo vbCRLF & "Downloading updates..."

Set downloader = updateSession.CreateUpdateDownloader() 
downloader.Updates = updatesToDownload
downloader.Download()

Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl")

rebootMayBeRequired = false

WScript.Echo vbCRLF & "Successfully downloaded updates:"

For I = 0 To searchResult.Updates.Count-1
    set update = searchResult.Updates.Item(I)
    If update.IsDownloaded = true Then
        WScript.Echo I + 1 & "> " & update.Title 
        updatesToInstall.Add(update) 
        If update.InstallationBehavior.RebootBehavior > 0 Then
            rebootMayBeRequired = true
        End If
    End If
Next

If updatesToInstall.Count = 0 Then
    WScript.Echo "No updates were successfully downloaded."
    WScript.Quit
End If

If rebootMayBeRequired = true Then
    WScript.Echo vbCRLF & "These updates may require a reboot."
End If

WScript.Echo  vbCRLF & "Would you like to install updates now? (Y/N)"
strInput = WScript.StdIn.Readline
WScript.Echo 

If (strInput = "Y" or strInput = "y") Then
    WScript.Echo "Installing updates..."
    Set installer = updateSession.CreateUpdateInstaller()
    installer.Updates = updatesToInstall
    Set installationResult = installer.Install()

    'Output results of install
    WScript.Echo "Installation Result: " & _
    installationResult.ResultCode 
    WScript.Echo "Reboot Required: " & _ 
    installationResult.RebootRequired & vbCRLF 
    WScript.Echo "Listing of updates installed " & _
    "and individual installation results:" 

    For I = 0 to updatesToInstall.Count - 1
        WScript.Echo I + 1 & "> " & _
        updatesToInstall.Item(i).Title & _
        ": " & installationResult.GetUpdateResult(i).ResultCode   
    Next
End If

Tampaknya berfungsi seperti pesona untuk itu tetapi saya belum mengujinya di bawah Windows 7 tentu saja. Ada juga tautan ke artikel lain untuk menargetkan pembaruan tertentu jika diperlukan.

Ada juga modul Powershell yang memperlihatkan pengalaman serupa.

Setelah melihat sekilas saya juga menemukan aplikasi pihak ketiga ini yang juga menggunakan pembaruan API, tetapi dengan beberapa opsi lagi (meskipun mengharuskan Anda mempercayai kode pihak ketiga).

4
Oskar Duveborn

Pembaruan Windows dari Command Line:

www.sysadminsoftware.com/udc.html

Alat (Updates Deployment Commander) dapat melakukan apa yang Anda minta. Anda juga dapat melewatkan parameter untuk menghindari tambalan tertentu, menargetkan pembaruan spesifik, me-reboot N menit setelah selesai, membuat laporan dalam CSV, dan sebagainya .. Muncul dengan beberapa utilitas GUI juga.

2
sysadmin

Jika Anda harus menambal sistem operasi Windows, terutama setelah instalasi baru, perhatikan serius Pembaru Offline .

Ia menggunakan skrip untuk mengunduh semua tambalan yang Anda sarankan (jadi Win2000, Win XP, Win 2003, Vista, Win2008, Win2012 32 dan 64 bit jika sesuai), multi bahasa, paket layanan, kerangka .NET, dan tambalan Office (XP, 2000 , 2003, 2007).

Setelah semuanya diunduh, Anda cukup memperbarui setiap tambalan pada hari Selasa, dan hanya mendapatkan perubahannya. Meskipun itu mendapatkan catalouges dan mereka semakin lama setiap hari (banyak MB sekarang per OS/Office rev).

Setelah Anda mengunduh file di komputer lokal Anda, ada skrip untuk membuat gambar CD/DVD dari mereka (ini akan secara otomatis untuk gambar DVD per OS sekarang jika Anda mau).

Apa yang saya lakukan adalah menggunakan kartu memori SD 4GB, pada pembaca kartu SD yang menghormati tab proteksi tulis. Saya dulu menggunakan kartu 2GB, tapi saya hampir tidak bisa memuat Win XP dan sebagian besar Office membuatnya sekarang, jadi saya beralih ke kartu 4GB.

Jadi ketika memecahkan masalah sebuah mesin, saya percaya memasukkan perangkat yang sebelumnya bisa ditulisi ini ke dalam mesin yang terinfeksi virus, yang mungkin tidak terpercaya (karena saya tidak tahu apa-apa tentang itu, saya menganggapnya terinfeksi) mengetahui bahwa perangkat saya dilindungi dari penulisan.

Dengan demikian saya dapat menambalnya sebagai langkah pertama.

Jika Anda menggunakan autorun, atau meluncurkan executable pada perangkat (kunci, HD eksternal, CD, DVD, di mana pun Anda menulisnya) itu mulai skrip yang menggunakan layanan Pembaruan Windows pada mesin lokal untuk menerapkan semua pembaruan, tetapi alih-alih pergi melintasi kawat untuk mengunduhnya mereka hanya menggunakan salinan lokal.

Jadi mungkin masih membutuhkan 1+ jam untuk memperbarui mesin WinXP ke SP dan tambalan yang terbaru, tetapi tidak ada lalu lintas jaringan di sepanjang jalan, dan Anda dapat melakukannya dengan kabel Ethernet yang dicabut seluruhnya .

Alat luar biasa berguna!

Seharusnya tidak bertabrakan dengan Microsoft, seperti yang dilakukan AutoUpdate, yang sedang membuat CD patch, yang mendistribusikan gambar CD. Alat ini memperbarui skrip, dan Anda harus mendapatkan semua tambalan di workstation Windows berlisensi Anda.

2
geoffc

Saat ini saya tidak dapat menambahkan komentar ke answer by duffbeer7 , jadi di sini sebagai jawaban terpisah:

Versi "baik" terakhir dari tautan ke WSUSwiki yang diarsipkan di The Internet Archive adalah ini . Opsi yang diberikan dalam jawaban asli dijelaskan dalam --- entri FAQ .

1
Olaf Mandel