Cara menginstal Pembaruan Windows dari baris perintah

17

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?

Svish
sumber

Jawaban:

12

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.

duffbeer703
sumber
1
Saya pikir tautan itu tidak berlaku lagi.
Natalie Adams
Tidak bekerja untuk saya di Windows 8.1 atau Windows Server 2012.
nu everest
Perintah yang Anda berikan akan memeriksa pembaruan dan melaporkan status pembaruan ke server WSUS. Ini TIDAK menyetujui, mengunduh, atau menginstal pembaruan apa pun. Anda perlu menambahkan parameter / updatenow untuk memaksa pemasangan pembaruan yang tersedia.
duct_tape_coder
Sebagai catatan, pada Win10 / 2016, perintah wuauclt tidak digunakan lagi oleh usoclient, lihat omgdebugging.com/2017/10/09/09 ...
duct_tape_coder
4

Anda dapat menggunakan skrip untuk memeriksa, mengunduh, dan menginstal pembaruan secara sinkron. Saya sering menggunakan versi modifikasi dari 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).

Oskar Duveborn
sumber
2

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.

sysadmin
sumber
2

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

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, .NET frameworks, dan Office patch (XP, 2000 , 2003, 2007).

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

Setelah Anda mengunduh file di mesin 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 memasukkan 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 dipercaya (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.

Dengan demikian mungkin masih memerlukan 1+ jam untuk memperbarui mesin WinXP ke SP dan tambalan 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 membuat CD patch, yang mendistribusikan gambar CD. Alat ini memperbarui skrip, dan Anda harus mendapatkan semua tambalan di workstation Windows berlisensi Anda.

geoffc
sumber
1

Saat ini saya tidak dapat menambahkan komentar ke jawaban oleh duffbeer703 , jadi di sini sebagai jawaban terpisah:

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

Olaf Mandel
sumber
Apakah Anda sadar tentang apa yang diperlukan untuk mendapatkan "sedikit" poin reputasi untuk mendapatkan hak istimewa berkomentar? Cukup sarankan beberapa (relevan) suntingan. jika disetujui, Anda akan mendapatkan +2 perwakilan untuk masing-masing dari mereka ... coba!
Pierre.Vriens
-2

Saya tidak percaya begitu, Pembaruan Windows memerlukan ActiveX dan integrasi lainnya dengan Internet Explorer agar berfungsi dengan baik.

Karena Windows 7 masih merupakan kandidat pelepas, Anda harus mengharapkan bug semacam ini.

Mungkin bijaksana untuk mengirimkan bug spesifik yang Anda miliki ke tim pengembang jika Anda adalah anggota MSDN.

WerkkreW
sumber
ya aku tahu. Sudah mengajukan bug di MSDN. Hanya mencari metode alternatif sampai diperbaiki =)
: Svish