วิธีติดตั้ง Windows Updates จากบรรทัดคำสั่ง


17

เป็นไปได้หรือไม่ที่จะติดตั้ง windows updates จาก command-line? เครื่องมืออัพเดตแบบกราฟิกดูเหมือนว่าจะทำงานได้ไม่ดีนักใน Windows 7 บางครั้งมันทำบางครั้งก็ไม่ได้ ... ปัญหาของฉันคือฉันไม่เห็นการปรับปรุงใด ๆ เมื่อฉันคลิกเพื่อดูรายการรายละเอียด ดังนั้นเมื่อมีการอัพเดทที่ไม่ได้ทำเครื่องหมายไว้เป็นค่าเริ่มต้นฉันไม่สามารถติดตั้ง ...

ดังนั้นมีวิธีอื่นที่ฉันสามารถติดตั้งเหล่านั้นได้หรือไม่

คำตอบ:


12

ไม่แน่ใจเกี่ยวกับ Windows 7 แต่ด้วย XP / Vista คุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อตรวจจับและดาวน์โหลดการอัพเดต:

wuauclt /detectnow /reportnow

หากคุณมีปัญหาได้รับมันในการทำงานตรวจสอบWSUS วิกิพีเดีย

มิฉะนั้นหากคุณมีการอัปเดตเฉพาะที่คุณต้องการเพียงดาวน์โหลดจากเว็บไซต์ Microsoft หากมีปัญหาบางอย่างที่ทำให้คุณไม่สามารถติดตั้งได้นั่นเป็นวิธีที่ดีที่สุดในการค้นหาเพราะบันทึกของ Windows Update เป็นสิ่งที่น่ายินดีสำหรับการจัดการ


1
ฉันไม่คิดว่าลิงก์นั้นใช้ได้อีกต่อไป
Natalie Adams

ใช้งานไม่ได้กับฉันใน Windows 8.1 หรือ Windows Server 2012
nu everest

คำสั่งที่คุณกำหนดจะตรวจสอบการอัปเดตและรายงานสถานะการอัปเดตไปยังเซิร์ฟเวอร์ WSUS มันไม่อนุมัติดาวน์โหลดหรือติดตั้งการปรับปรุงใด ๆ คุณต้องเพิ่มพารามิเตอร์ / updatenow เพื่อบังคับให้ติดตั้งการอัปเดตที่มีอยู่
duct_tape_coder

นอกจากนี้ในบันทึกย่อใน Win10 / 2016 คำสั่ง wuauclt ถูกคัดค้านด้วย usoclient โปรดดูomgdebugging.com/2017/10/09/ …
duct_tape_coder

4

คุณสามารถใช้สคริปต์เพื่อตรวจสอบดาวน์โหลดและติดตั้งการอัปเดตพร้อมกัน ฉันมักจะใช้เวอร์ชันที่แก้ไขของvbscript นี้สำหรับการแพตช์เซิร์ฟเวอร์ 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

ดูเหมือนว่าจะทำงานได้อย่างมีเสน่ห์สำหรับสิ่งนั้น แต่ฉันไม่ได้ทดสอบภายใต้ Windows 7 แน่นอน นอกจากนี้ยังมีลิงก์ไปยังบทความอื่นเพื่อกำหนดเป้าหมายการอัพเดทเฉพาะหากจำเป็น

นอกจากนี้ยังมีโมดูล Powershellที่แสดงประสบการณ์ที่คล้ายกัน

หลังจากดูอย่างรวดเร็วฉันก็พบแอปพลิเคชันบุคคลที่สามนี้ซึ่งใช้อัปเดต API แต่มีตัวเลือกเพิ่มเติม (แม้ว่าคุณจะต้องเชื่อถือรหัสบุคคลที่สาม)


2

Windows Update จาก Command Line:

www.sysadminsoftware.com/udc.html

เครื่องมือ (Commander Deployment Commander) สามารถทำสิ่งที่คุณต้องการได้ นอกจากนี้คุณยังสามารถส่งพารามิเตอร์เพื่อหลีกเลี่ยงแพทช์บางอย่างกำหนดเป้าหมายอัปเดตเฉพาะรีบูต N นาทีหลังจากเสร็จสิ้นสร้างรายงานใน CSV และอื่น ๆ .. มันมาพร้อมกับยูทิลิตี GUI สองสามตัว


2

หากคุณมีการแก้ไขระบบปฏิบัติการ Windows, especailly หลังจากติดตั้งสดใช้เวลาดูอย่างที่ออฟไลน์ Updater

มันใช้สคริปต์เพื่อดาวน์โหลดแพตช์ทั้งหมดที่คุณแนะนำ (ดังนั้น Win2000, Win XP, Win 2003, Vista, Win2008, Win2012 32 และ 64 บิตตามความเหมาะสม), หลายภาษา, เซอร์วิสแพ็ค,. NET Framework และ Office แพตช์ (XP, 2000 , 2003, 2007)

เมื่อคุณดาวน์โหลดทั้งหมดแล้วคุณเพียงอัปเดตทุก ๆ วันอังคารและรับการเปลี่ยนแปลงเท่านั้น แม้ว่าจะได้รับ catalouges และพวกเขาจะได้รับอีกต่อไปทุกวัน (ตอนนี้หลาย megs ต่อ OS / Office rev)

เมื่อคุณดาวน์โหลดไฟล์ในเครื่องท้องถิ่นของคุณแล้วจะมีสคริปต์เพื่อสร้างอิมเมจ CD / DVD ของพวกเขา (ไฟล์นี้จะทำการอิมเมจโดยอัตโนมัติสำหรับภาพ DVD ต่อระบบปฏิบัติการในตอนนี้หากคุณต้องการ)

สิ่งที่ฉันทำคือใช้การ์ดหน่วยความจำ 4GB SD ในเครื่องอ่านการ์ด SD ที่ให้เกียรติแท็บการป้องกันการเขียน ฉันเคยใช้การ์ด 2GB แต่ฉันแทบจะไม่พอดีกับ Win XP และ Office ส่วนใหญ่ก็สร้างมันขึ้นมาแล้วดังนั้นฉันจึงย้ายไปใช้การ์ด 4GB

ดังนั้นเมื่อการแก้ไขปัญหาเครื่องฉันเชื่อว่าการใส่อุปกรณ์ที่สามารถเขียนได้ก่อนหน้านี้ลงในเครื่องที่ติดไวรัสซึ่งอาจไม่น่าเชื่อถือ (เนื่องจากฉันไม่รู้อะไรเลยฉันถือว่ามันติดไวรัส) การรู้ว่าอุปกรณ์ของฉันได้รับการป้องกันการเขียน

ดังนั้นฉันสามารถแก้ไขให้ทันสมัยเป็นขั้นตอนแรก

หากคุณใช้การทำงานอัตโนมัติหรือเปิดใช้งานการเรียกใช้งานบนอุปกรณ์ (คีย์, HD ภายนอก, CD, DVD, ไม่ว่าคุณจะเขียนไว้ที่ใด) ก็จะเริ่มต้นสคริปต์ที่ใช้บริการ Windows Update บนเครื่องท้องถิ่นเพื่อใช้การปรับปรุงทั้งหมด แต่แทน จะข้ามเส้นลวดเพื่อดาวน์โหลดพวกเขาเพียงแค่ใช้สำเนาในเครื่อง

ดังนั้นอาจต้องใช้เวลา 1 ชั่วโมงในการอัปเดตเครื่อง WinXP เป็น SP และแพทช์ล่าสุด แต่ไม่มีการรับส่งข้อมูลเครือข่ายตลอดเส้นทางและคุณสามารถทำได้โดยถอดสายเคเบิลอีเธอร์เน็ตออกทั้งหมด

เครื่องมือที่มีประโยชน์น่าอัศจรรย์!

ไม่ควรเรียกใช้ Microsoft ของ Microsoft อย่างเช่น AutoUpdate พวกนั้นซึ่งกำลังสร้างแผ่นซีดีปะแก้อยู่ก่อนที่จะแจกจ่ายอิมเมจซีดี เครื่องมือนี้อัปเดตสคริปต์และคุณต้องไปรับ patch ทั้งหมดในเวิร์กสเตชัน Windows ที่ได้รับอนุญาตของคุณ


1

ขณะนี้ฉันไม่สามารถเพิ่มความคิดเห็นในคำตอบโดยduffbeer703ดังนั้นนี่เป็นคำตอบแยกต่างหาก:

ล่าสุด "ดี" รุ่นของการเชื่อมโยงไปยัง WSUSwiki เป็นที่เก็บไว้บนอินเทอร์เน็ตเอกสารเก่าเป็นนี้ ตัวเลือกที่ให้ไว้ในคำตอบดั้งเดิมอธิบายไว้ในรายการคำถามที่พบบ่อยนี้


คุณทราบเกี่ยวกับสิ่งที่จะได้รับคะแนนเล็กน้อยเพื่อรับสิทธิการแสดงความคิดเห็น? เพียงแนะนำการแก้ไขบางส่วน (ที่เกี่ยวข้อง) ถ้าพวกเขาได้รับการอนุมัติคุณจะได้รับ +2 ตัวแทนสำหรับแต่ละคน ... ลอง!
Pierre.Vriens

-2

ฉันไม่เชื่อว่า Windows Update ต้องการ ActiveX และการรวมอื่น ๆ กับ Internet Explorer เพื่อให้ทำงานได้อย่างถูกต้อง

เนื่องจาก Windows 7 ยังไม่ได้รับการเปิดตัวดังนั้นคุณควรคาดหวังข้อผิดพลาดประเภทนี้

อาจเป็นการดีที่จะส่งบั๊กเฉพาะที่คุณมีให้กับทีม dev หากคุณเป็นสมาชิกของ MSDN


ใช่ฉันรู้. ได้ยื่นข้อผิดพลาดที่ MSDN แล้ว เพียงแค่มองหาวิธีการอื่นจนกว่าจะได้รับการแก้ไข =)
Svish
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.