it-swarm-vi.tech

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

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 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?

17
Svish

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, vì nhật ký Windows Update là hợp lý để giải quyết.

12
duffbeer703

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 tìm thấy ứng dụng của 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).

4
Oskar Duveborn

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
sysadmin

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 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ó một 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 Office đều được xây dựng trên đó, 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 thiết bị của mình bị nhiễm) khi biết thiết bị của mình đượ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 đó, vẫn có thể mất hơn 1 giờ để cập nhật máy WinXP lên SP và bản vá lỗi mới nhất, nhưng không có lưu lượng mạng nào trên đường đi và bạn có thể thực hiện hoàn toàn 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.

2
geoffc

Hiện tại tôi không thể thêm nhận xét vào câu trả lời by duffbeer7 , 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à this . 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 .

1
Olaf Mandel