Cách cài đặt Windows Updates từ dòng lệnh


17

Có thể cài đặt các bản cập nhật windows từ dòng lệnh không? Công cụ cập nhật đồ họa dường như không hoạt động tốt trong Windows 7. Đôi khi, đôi khi không, ... Vấn đề của tôi là tôi không thể thấy bất kỳ bản cập nhật nào khi tôi nhấp để xem danh sách chi tiết. Vì vậy, khi có các bản cập nhật không được kiểm tra theo mặc định, tôi không thể cài đặt chúng ...

Vì vậy, có cách nào khác để tôi có thể cài đặt chúng không?

Câu trả lời:


12

Không chắc chắn về Windows 7, nhưng với XP / Vista, bạn có thể chạy lệnh sau để phát hiện và tải xuống các bản cập nhật:

wuauclt /detectnow /reportnow

Nếu bạn gặp sự cố khiến nó hoạt động, hãy xem WSUS Wiki .

Mặt khác, nếu bạn có một bản cập nhật cụ thể mà bạn muốn, chỉ cần tải xuống từ trang web của Microsoft. Nếu có một số vấn đề ngăn bạn cài đặt, đó là cách tốt nhất để tìm hiểu, bởi vì nhật ký Windows Update là hợp lý để giải quyết.


1
Tôi không nghĩ rằng liên kết đó là hợp lệ nữa.
Natalie Adams

Không hoạt động với tôi trên Windows 8.1 hoặc Windows Server 2012.
nu everest

Lệnh bạn đã đưa ra sẽ kiểm tra các bản cập nhật và báo cáo trạng thái cập nhật cho máy chủ WSUS. Nó KHÔNG phê duyệt, tải xuống hoặc cài đặt bất kỳ bản cập nhật nào. Bạn cần thêm tham số / updatenow để buộc cài đặt các bản cập nhật có sẵn.
duct_tape_coder

Cũng cần lưu ý, trong Win10 / 2016, lệnh wuauclt không được dùng để ủng hộ chúng tôi, hãy xem omgdebugging.com/2017/10/09/ Lỗi
duct_tape_coder

4

Bạn có thể sử dụng tập lệnh để kiểm tra, tải xuống và cài đặt các bản cập nhật đồng bộ. Tôi thường sử dụng một phiên bản sửa đổi của vbscript này để vá thủ công các máy chủ 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

Nó dường như hoạt động như một cơ duyên cho điều đó nhưng tất nhiên tôi đã không thử nghiệm nó trong Windows 7. Ngoài ra còn có một liên kết đến một bài viết khác để nhắm mục tiêu một bản cập nhật cụ thể nếu cần.

Ngoài ra còn có một mô-đun Powershell cho thấy trải nghiệm tương tự.

Sau khi xem nhanh, tôi cũng thấy ứng dụng bên thứ ba này cũng sử dụng API cập nhật, nhưng với một số tùy chọn khác (mặc dù yêu cầu bạn phải tin tưởng mã của bên thứ ba).


2

Cập nhật Windows từ Dòng lệnh:

www.sysadminsoftware.com/udc.html

Công cụ (Cập nhật chỉ huy triển khai) có thể làm những gì bạn đang yêu cầu. Bạn cũng có thể truyền tham số để tránh các bản vá nhất định, nhắm mục tiêu cập nhật cụ thể, khởi động lại N phút sau khi hoàn thành, tạo báo cáo trong CSV, v.v. Nó cũng đi kèm với một vài tiện ích GUI.


2

Nếu bạn phải vá các hệ điều hành Windows, đặc biệt sau khi cài đặt mới, hãy xem xét nghiêm túc về Trình cập nhật ngoại tuyến .

Nó sử dụng các tập lệnh để tải xuống tất cả các bản vá mà bạn đề xuất (vì vậy Win2000, Win XP, Win 2003, Vista, Win2008, Win2012 32 và 64 bit khi thích hợp), đa ngôn ngữ, gói dịch vụ, khung .NET và bản vá Office (XP, 2000 , 2003, 2007).

Khi bạn đã tải xuống tất cả, bạn chỉ cần cập nhật mọi bản vá vào thứ ba và chỉ nhận được các thay đổi. Mặc dù nó có được catalouges và chúng ngày càng dài hơn mỗi ngày (nhiều megs hiện trên mỗi vòng quay OS / Office).

Khi bạn đã tải xuống các tệp trên máy cục bộ của mình, sẽ có tập lệnh tạo hình ảnh CD / DVD của chúng (nó sẽ tự động cho hình ảnh DVD trên mỗi hệ điều hành ngay bây giờ nếu bạn muốn).

Những gì tôi làm là sử dụng thẻ nhớ SD 4GB, trong đầu đọc thẻ SD nhằm tôn vinh tab bảo vệ ghi. Tôi đã từng sử dụng thẻ 2GB, nhưng tôi chỉ có thể vừa với Win XP và hầu hết các bản dựng Office hiện tại, vì vậy tôi đã chuyển sang thẻ 4GB.

Do đó, khi xử lý sự cố máy, tôi tin rằng việc chèn thiết bị trước đây có thể ghi này vào máy bị nhiễm virus không đáng tin cậy (vì tôi không biết gì về nó, tôi cho rằng nó bị nhiễm) khi biết thiết bị của tôi được bảo vệ chống ghi.

Vì vậy, tôi có thể vá nó đến nay là bước đầu tiên.

Nếu bạn sử dụng tự động chạy hoặc khởi chạy chương trình thực thi trên thiết bị (khóa, HD, CD, DVD bên ngoài, bất cứ nơi nào bạn viết), nó sẽ khởi động một tập lệnh sử dụng dịch vụ Windows Update trên máy cục bộ để áp dụng tất cả các bản cập nhật, nhưng thay vào đó khi đi qua dây để tải xuống, nó chỉ sử dụng bản sao cục bộ.

Do đó, có thể vẫn phải mất hơn 1 giờ để cập nhật máy WinXP lên SP và bản vá mới nhất, nhưng không có lưu lượng mạng trên đường đi và bạn có thể thực hiện điều đó với cáp Ethernet được rút hoàn toàn.

Công cụ hữu ích đáng kinh ngạc!

Không nên chạy afoul của Microsoft, giống như những người AutoUpdate, những người đang xây dựng một bản vá CD, đã phân phối hình ảnh CD. Công cụ này cập nhật các tập lệnh và bạn phải lấy tất cả các bản vá trên máy trạm Windows được cấp phép của mình.


1

Hiện tại tôi không thể thêm nhận xét vào câu trả lời của duffbeer703 , vì vậy đây là một câu trả lời riêng biệt:

Phiên bản "tốt" cuối cùng của liên kết đến WSUSwiki được lưu trữ trên Internet Archive là đây . Các tùy chọn được đưa ra trong câu trả lời ban đầu được mô tả trong mục Câu hỏi thường gặp này .


Bạn có biết về những gì cần có để kiếm được "một chút" điểm danh tiếng để có được đặc quyền nhận xét không? Chỉ cần đề xuất một số chỉnh sửa (có liên quan). nếu họ được chấp thuận, bạn sẽ nhận được +2 đại diện cho mỗi người trong số họ ... hãy thử!
Pierre.Vriens

-2

Tôi không tin như vậy, Windows Update yêu cầu một số ActiveX và tích hợp khác với Internet Explorer để hoạt động chính xác.

Vì Windows 7 vẫn chỉ là một ứng cử viên phát hành, bạn nên mong đợi các loại lỗi này.

Có thể là khôn ngoan để gửi lỗi cụ thể mà bạn đang có cho nhóm nhà phát triển nếu bạn là thành viên của MSDN.


Vâng, tôi biết. Đã nộp một lỗi tại MSDN. Chỉ cần tìm một phương pháp thay thế cho đến khi nó được sửa =)
Svish
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.