Windows Güncelleştirmelerini komut satırından yükleme


17

Windows güncellemelerini komut satırından yüklemek mümkün müdür? Grafik güncelleme aracı Windows 7'de çok iyi çalışmıyor gibi görünüyor. Bazen çalışıyor, bazen çalışmıyor ... Sorunum, ayrıntılar listesini görmek için tıkladığımda herhangi bir güncelleme göremiyorum. Bu nedenle, varsayılan olarak işaretlenmemiş güncellemeler olduğunda, bunları yükleyemiyorum ...

Bunları kurmanın başka bir yolu var mı?

Yanıtlar:


12

Windows 7'den emin değilsiniz, ancak XP / Vista ile, güncellemeleri algılamak ve indirmek için aşağıdaki komutu çalıştırabilirsiniz:

wuauclt /detectnow /reportnow

Çalıştırırken sorun yaşıyorsanız WSUS Wiki'ye bakın .

Aksi takdirde, istediğiniz belirli bir güncelleştirmeniz varsa, Microsoft web sitesinden indirmeniz yeterlidir. Yüklemenizi engelleyen bir sorun varsa, bunu öğrenmenin en iyi yolu budur, çünkü Windows Update günlükleri başa çıkmak için godawful'dur.


1
Artık bağlantının geçerli olduğunu düşünmüyorum.
Natalie Adams

Windows 8.1 veya Windows Server 2012'de benim için çalışmıyor.
nu everest

Verdiğiniz komut, güncellemeleri kontrol eder ve güncelleme durumunu WSUS sunucusuna bildirir. Herhangi bir güncellemeyi onaylamaz, indirmez veya yüklemez. Kullanılabilir güncelleştirmelerin yüklenmesini zorlamak için / updatenow parametresini eklemeniz gerekir.
duct_tape_coder

Ayrıca, Win10 / 2016'da, wuauclt komutu usoclient lehine kullanımdan kaldırıldı, bkz. Omgdebugging.com/2017/10/09/…
duct_tape_coder

4

Güncellemeleri eşzamanlı olarak kontrol etmek, indirmek ve yüklemek için bir komut dosyası kullanabilirsiniz. Windows Core sunucularının el ile yaması için genellikle bu vbscript'in değiştirilmiş bir sürümünü kullanıyorum .

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

Bunun için bir cazibe gibi çalışıyor gibi görünüyor ama tabii ki Windows 7 altında test etmedim. Gerekirse belirli bir güncellemeyi hedeflemek için başka bir makaleye de bağlantı vardır.

Benzer bir deneyimi ortaya çıkaran bir Powershell modülü de var .

Hızlı bir bakıştan sonra güncelleme API'sını da kullanan bu üçüncü taraf uygulamasını da buldum , ancak bazı daha fazla seçenekle (üçüncü taraf koduna güvenmenizi gerektiriyor olsa da).


2

Komut Satırından Windows Update:

www.sysadminsoftware.com/udc.html

Araç (Güncelleştirme Dağıtım Komutanı) tam olarak istediğinizi yapabilir. Ayrıca belirli yamalardan kaçınmak, belirli güncellemeleri hedeflemek, tamamladıktan N dakika sonra yeniden başlatmak, CSV'de raporlar oluşturmak vb. İçin parametreler de iletebilirsiniz.


2

Windows işletim sistemlerini, yeni yüklemelerden sonra, özellikle Çevrimdışı Güncelleştirici'ye ciddi bir şekilde bakmanız gerekiyorsa .

Önerdiğiniz tüm yamaları indirmek için komut dosyaları kullanır (bu nedenle Win2000, Win XP, Win 2003, Vista, Win2008, Win2012 32 ve 64 bit uygunsa), çoklu dil, hizmet paketleri, .NET çerçeveleri ve Office yamaları (XP, 2000 , 2003, 2007).

Hepsini indirdikten sonra, her yamayı Salı güncellendi ve sadece değişiklikleri al. Kataloğu alır ve her gün daha uzun sürüyor olsa da (şimdi OS / Office devir başına birçok mega).

Yerel makinenizdeki dosyaları indirdikten sonra, bunların CD / DVD görüntülerini yapmak için bir komut dosyası vardır (isterseniz bunu otomatik olarak işletim sistemi başına DVD görüntüleri için yapar).

Benim yaptığım, yazmaya karşı koruma sekmesini onurlandıran bir SD kart okuyucusunda 4GB SD bellek kartı kullanmak. Eskiden 2GB kartlar kullanıyordum, ancak Win XP'ye zar zor sığabiliyorum ve Office'in çoğu şu an üzerine kurulu, bu yüzden 4GB kartlara geçtim.

Bu nedenle, bir makinede sorun giderirken, cihazımın yazmaya karşı korumalı olduğunu bilerek, daha önce yazılabilir bu cihazı güvenilmeyen, muhtemelen virüs bulaşmış bir makineye yerleştirmeye güveniyorum (bu konuda hiçbir şey bilmediğim için, virüslü olduğunu varsayıyorum).

Böylece ilk adım olarak bugüne kadar yama yapabilirim.

Otomatik çalıştırma özelliğini kullanır veya yürütülebilir dosyayı aygıtta başlatırsanız (anahtar, harici HD, CD, DVD, yazdığınız her yerde), tüm güncelleştirmeleri uygulamak için yerel makinedeki Windows Update hizmetini kullanan bir komut dosyası başlatır, ancak bunun yerine onları indirmek için tel üzerinden gitmek sadece yerel kopyasını kullanır.

Bu nedenle, bir WinXP makinesini en son SP ve yamalara güncellemek 1 saatten fazla sürebilir, ancak yol boyunca sıfır ağ trafiği vardır ve bunu tamamen takılı olmayan Ethernet kablosuyla yapabilirsiniz.

İnanılmaz kullanışlı bir araç!

Önceden bir yama CD'si oluşturan AutoUpdate adamları gibi, CD görüntüsünü dağıtan Microsoft gibi bir aksaklık olmamalı. Bu araç komut dosyalarını günceller ve lisanslı Windows iş istasyonunuzdaki tüm düzeltme eklerini almanız gerekir.


1

Şu anda bir yorum ekleyemezsiniz cevap tarafından duffbeer703 ayrı cevap olarak, işte:

Internet Archive arşivlenir olarak WSUSwiki bağlantının son "iyi" versiyonudur bu . Orijinal cevapta verilen seçenekler bu SSS girişinde açıklanmıştır .


Yorum ayrıcalığını elde etmek için "biraz" itibar puanı kazanmak için ne gerektiğini biliyor musunuz? Bazı (alakalı) düzenlemeler önermeniz yeterlidir. onaylanırlarsa her biri için +2 temsilci alırsınız ... deneyin!
Pierre.Vriens

-2

Buna inanmıyorum, Windows Update'in düzgün çalışması için bazı ActiveX ve Internet Explorer ile diğer tümleştirme gerekiyor.

Windows 7 hala bir yayın adayı olduğundan, bu tür hataları beklemelisiniz.

MSDN üyesiyseniz geliştirdiğiniz belirli bir hatayı geliştirici ekibine göndermeniz akıllıca olabilir.


Evet biliyorum. Zaten MSDN'de bir hata yaptınız. Düzeltilene kadar sadece alternatif bir yöntem arıyorum =)
Svish
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.