Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module

Bạn có thể sử dụng PSWindowsUpdate Mô-đun PowerShell để quản lý các bản cập nhật Windows từ dòng lệnh. Mô-đun PSWindowsUpdate không được tích hợp sẵn trong Windows và có sẵn để cài đặt từ kho lưu trữ PowerShell Gallery. PSWindowsUpdate cho phép quản trị viên kiểm tra, cài đặt, gỡ bỏ và ẩn các bản cập nhật từ xa trên máy chủ và máy trạm Windows. Mô-đun PSWindowsUpdate đặc biệt có giá trị để quản lý các bản cập nhật trên Windows Server Core hoặc Hyper-V Server (không có GUI) và khi định cấu hình hình ảnh Windows ở chế độ kiểm tra.

Cài đặt Mô-đun PSWindowsUpdate

Bạn có thể cài đặt mô-đun PSWindowsUpdate trên Windows 10/11 và Windows Server 2022/2019/2016 từ kho lưu trữ trực tuyến (PSGallery) bằng cách sử dụng PackageManagement với một lệnh duy nhất:

Install-Module -Name PSWindowsUpdate -Force

Sau khi cài đặt xong, bạn cần kiểm tra gói:

Get-Package -Name PSWindowsUpdate

Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module

Khi cài đặt mô-đun PowerShell trên các phiên bản cũ hơn của Windows 2012R2 / Windows 8.1 trở xuống, bạn có thể gặp lỗi:

 Install-Module:Không thể tải xuống từ URI. Không thể tải xuống danh sách các nhà cung cấp có sẵn. Kiểm tra kết nối internet của bạn. 

Để cài đặt mô-đun, bạn cần sử dụng giao thức TLS 1.2 để kết nối. Bật nó cho phiên PowerShell hiện tại bằng lệnh:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Nếu bạn có phiên bản Windows cũ hơn (Windows 7 / 8.1 / Windows Server 2008 R2 / 2012 R2) hoặc bạn không có quyền truy cập Internet trực tiếp, bạn có thể cài đặt PSWindowsUpdate theo cách thủ công (xem hướng dẫn “Cách cài đặt mô-đun PowerShell ngoại tuyến?”) .

  1. Tải xuống mô-đun PSWindowsUpdate xuống bất kỳ máy tính trực tuyến nào:Save-Module –Name PSWindowsUpdate –Path C:\ps\;
  2. Sao chép mô-đun vào thư mục sau trên máy tính mục tiêu %WINDIR%\System32\WindowsPowerShell\v1.0\Modules; Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module
  3. Định cấu hình chính sách thực thi tập lệnh PowerShell:Set-ExecutionPolicy –ExecutionPolicy RemoteSigned -force
  4. Giờ đây, bạn có thể nhập mô-đun vào phiên PowerShell của mình:Import-Module PSWindowsUpdate
Lưu ý . Trong Windows 7 / Windows Server 2008 R2, khi nhập mô-đun PSWindowsUpdate, lỗi sau có thể xuất hiện: Thuật ngữ “Unblock-File” không được nhận dạng là tên của lệnh ghép ngắn . Nguyên nhân là do mô-đun sử dụng một số chức năng chỉ xuất hiện trong PowerShell 3.0. Để sử dụng các chức năng này, bạn sẽ phải cập nhật phiên bản PowerShell hoặc xóa | Unblock-File từ tệp PSWindowsUpdate.psm1 theo cách thủ công.

Sau khi cài đặt mô-đun PSWindowsUpdate trên máy tính của bạn, bạn có thể cài đặt từ xa mô-đun đó trên các máy tính hoặc máy chủ khác bằng cách sử dụng Update-WUModule cmdlet. Ví dụ:để sao chép mô-đun PSWindowsUpdate từ máy tính của bạn sang hai máy chủ từ xa, hãy chạy các lệnh (bạn cần quyền truy cập vào máy chủ từ xa thông qua giao thức WinRM):

$Targets = "lon-fs02", "lon-db01"
Update-WUModule -ComputerName $Targets –Local

Để lưu (xuất) mô-đun PoSh vào một thư mục mạng chia sẻ để nhập thêm trên các máy tính khác, hãy chạy:

Save-Module -Name PSWindowsUpdate –Path \\lon-fs02\psmodules\

PSWindowsUpdate Danh sách Cmdlets

Bạn có thể hiển thị danh sách các lệnh ghép ngắn có sẵn trong mô-đun PSWindowsUpdate như sau:

get-command -module PSWindowsUpdate

Hãy mô tả ngắn gọn cách sử dụng các lệnh mô-đun:

  • Clear-WUJob - sử dụng Get-WUJob để xóa WUJob trong Trình lập lịch tác vụ;
  • Tải xuống-WindowsUpdate (bí danh cho Get-WindowsUpdate –Download ) - nhận danh sách các bản cập nhật và tải xuống;
  • Get-WUInstall, Install-WindowsUpdate (bí danh cho Get-WindowsUpdate –Install ) - cài đặt các bản cập nhật Windows;
  • Hide-WindowsUpdate (bí danh cho Get-WindowsUpdate -Hide:$false ) - ẩn cập nhật;
  • Uninstall-WindowsUpdate - xóa bản cập nhật bằng cách sử dụng Remove-WindowsUpdate;
  • Add-WUServiceManager - đăng ký máy chủ cập nhật (Windows Update Service Manager) trên máy tính;
  • Bật-WURemoting - bật các quy tắc tường lửa của Bộ bảo vệ Windows để cho phép sử dụng từ xa các lệnh ghép ngắn PSWindowsUpdate;
  • Get-WindowsUpdate (Get-WUList) - hiển thị danh sách các bản cập nhật phù hợp với các tiêu chí đã chỉ định, cho phép bạn tìm và cài đặt các bản cập nhật. Đây là lệnh ghép ngắn chính của mô-đun PSWindowsUpdate. Cho phép tải xuống và cài đặt các bản cập nhật từ máy chủ WSUS hoặc Microsoft Update. Cho phép bạn chọn danh mục cập nhật, các bản cập nhật cụ thể và đặt quy tắc khởi động lại máy tính khi cài đặt các bản cập nhật;
  • Get-WUApiVersion - tải phiên bản Windows Update Agent trên máy tính;
  • Get-WUHistory - hiển thị danh sách các bản cập nhật đã cài đặt (lịch sử cập nhật);
  • Get-WUInstallerStatus - kiểm tra trạng thái dịch vụ Windows Installer;
  • Get-WUJob - kiểm tra các tác vụ cập nhật WUJob trong Bộ lập lịch tác vụ;
  • Get-WULastResults - ngày tìm kiếm cuối cùng và cài đặt các bản cập nhật ( LastSearchSuccessDate LastInstallationSuccessDate );
  • Get-WURebootStatus - cho phép bạn kiểm tra xem có cần khởi động lại để áp dụng một bản cập nhật cụ thể hay không;
  • Get-WUServiceManager - liệt kê các nguồn cập nhật;
  • Get-WUSettings - tải cài đặt máy khách Windows Update;
  • Gọi-WUJob - Gọi tác vụ WUJobs từ xa trong Bộ lập lịch tác vụ để thực hiện ngay các lệnh PSWindowsUpdate;
  • Remove-WindowsUpdate - cho phép gỡ cài đặt bản cập nhật theo KB ID;
  • Remove-WUServiceManager - vô hiệu hóa Windows Update Service Manager;
  • Set-PSWUSettings - lưu cài đặt mô-đun PSWindowsUpdate vào tệp XML;
  • Thiết lập-WUSettings - cấu hình cài đặt máy khách Windows Update;
  • Cập nhật-WUModule - cập nhật mô-đun PSWindowsUpdate (bạn có thể cập nhật mô-đun trên một máy tính từ xa bằng cách sao chép nó từ máy hiện tại hoặc cập nhật từ PSGallery);
  • Reset-WUComponents - cho phép bạn đặt lại tác nhân Windows Update trên máy tính về trạng thái mặc định.

Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module

Để kiểm tra cài đặt máy khách Windows Update hiện tại, hãy chạy lệnh:

Get-WUSettings

 ComputerName:WKS5S2N39S2WUServer:https:// MN-WSUS:8530WUStatusServer:https:// MN-WSUS:8530AcceptTrustedPublisherCerts:1ElevateNonAdmins:1DoNotConnectToWindowsUpdateInternetLocations:1TargetGroupEnabled:1TargetGroup:ServersProdNoAutoUpdate:0AUOptions:3 - Thông báo trước installationScheduledInstallDay:0 - Mỗi DayScheduledInstallTime:3UseWUServer:1AutoInstallMinorUpdates:0AlwaysAutoRebootAtSchedisedTime:0DetectionFrequencyEnabled:1DetectionFrequency:4 

Trong ví dụ này, tác nhân Windows Update trên máy tính được định cấu hình bằng GPO để nhận các bản cập nhật từ máy chủ WSUS cục bộ.

Reset-WUComponents -Verbose cmdlet cho phép bạn đặt lại tất cả cài đặt Windows Update Agent, đăng ký lại thư viện và khôi phục wususerv dịch vụ về trạng thái mặc định của nó.

Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module

Quét và tải xuống các bản cập nhật Windows bằng PowerShell

Bạn có thể liệt kê các bản cập nhật có sẵn cho máy tính hiện tại trên máy chủ cập nhật bằng cách sử dụng Get-WindowsUpdate hoặc Get-WUList lệnh.

Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module

Để kiểm tra danh sách các bản cập nhật có sẵn trên một máy tính từ xa, hãy chạy lệnh sau:

Get-WUList –ComputerName server2

Bạn có thể kiểm tra xem Windows của mình sẽ nhận các bản cập nhật từ đâu. Chạy lệnh sau:

Get-WUServiceManager

 ServiceID IsManaged IsDefault Name --------- --------- --------- ---- 8b24b027-1dee-babb-9a95-3517dfb9c552 False Sai DCat Flighting Prod855e8a7c-ecb4-4ca3-b045-1dfa50104289 False False Windows Store (DCat Prod) 3da21691-e39d-4da6-8a4b-b43877bcb1b7 True True Windows Server Update Service9482f4b4-e343-43b6 False False 
 Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module  

Như bạn có thể thấy, máy tính được định cấu hình để nhận các bản cập nhật từ máy chủ WSUS cục bộ ( Windows Server Update Service =True ). Trong trường hợp này, bạn sẽ thấy danh sách các bản cập nhật được phê duyệt cho máy tính của mình.

Nếu bạn muốn quét máy tính của mình đối với các máy chủ Microsoft Update trên Internet (ngoài các bản cập nhật Windows, các máy chủ này còn chứa các bản cập nhật Office và các sản phẩm khác của Microsoft), hãy chạy lệnh sau:

Get-WUlist -MicrosoftUpdate

Bạn sẽ nhận được cảnh báo này:

 Get-WUlist:Không tìm thấy dịch vụ Windows Update trên máy tính. Sử dụng Get-WUServiceManager để đăng ký dịch vụ. 

Để cho phép quét trên Microsoft Update, hãy chạy lệnh sau:

Add-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" -AddServiceFlag 7

Bây giờ bạn có thể quét Microsoft Update. Trong trường hợp này, đã tìm thấy các bản cập nhật bổ sung cho Microsoft Visual C ++ 2008 và Microsoft Silverlight.

Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module

Để kiểm tra phiên bản của Windows Update Agent trên máy tính, hãy chạy lệnh:

Get-WUApiVersion

 ComputerName PSWindowsUpdate PSWUModuleDll ApiVersion WuapiDllVersion ------------- ---------------- -------- --------------- DESKTOP-J ... 2.1.1.2 2.2.0.2 8.0 10.0.19041.1320 

Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module

Để xóa các sản phẩm hoặc KB cụ thể khỏi danh sách các bản cập nhật mà máy tính của bạn nhận được, bạn có thể loại trừ chúng bằng cách:

  • Danh mục (-NotCategory );
  • Tiêu đề (-NotCategory );
  • Cập nhật số (-NotKBArticleID ).

Ví dụ:hãy loại trừ OneDrive, các bản cập nhật trình điều khiển và KB cụ thể khỏi danh sách:

Get-WUlist -NotCategory "Drivers" -NotTitle "OneDrive" -NotKBArticleID KB4489873

Cài đặt bản cập nhật Windows bằng PowerShell (Install-WindowsUpdate)

Để tự động tải xuống và cài đặt tất cả các bản cập nhật có sẵn cho thiết bị Windows của bạn từ máy chủ Windows Update (thay vì WSUS cục bộ), hãy chạy lệnh:

Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot

Tất cả chấp nhận tham số chấp nhận cài đặt tất cả các gói cập nhật và Tự động khởi động lại cho phép Windows tự động khởi động lại sau khi cài đặt các bản cập nhật.

Bạn cũng có thể sử dụng các tùy chọn sau:

  • Bỏ qua Khởi động lại - tắt tự động khởi động lại;
  • ScheduleReboot - đặt thời gian chính xác để khởi động lại máy tính.

Bạn có thể lưu lịch sử cài đặt bản cập nhật vào tệp nhật ký (bạn có thể sử dụng nó thay vì tệp WindowsUpdate.log).

Install-WindowsUpdate -AcceptAll -Install -AutoReboot | Out-File "c:\logs\$(get-date -f yyyy-MM-dd)-WindowsUpdate.log" -force

Bạn chỉ có thể cài đặt các gói cập nhật cụ thể theo số KB:

Get-WindowsUpdate -KBArticleID KB2267602, KB4533002 -Install

Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module

Trong trường hợp này, bạn cần xác nhận cài đặt từng bản cập nhật theo cách thủ công.

Nếu bạn muốn loại trừ các bản cập nhật nhất định khỏi danh sách cài đặt, hãy chạy lệnh sau:

Install-WindowsUpdate -NotCategory "Drivers" -NotTitle OneDrive -NotKBArticleID KB4011670 -AcceptAll -IgnoreReboot

Cài đặt Windows Update trên Máy tính Từ xa với PowerShell

Mô-đun PSWindowsUpdate cho phép bạn cài đặt các bản cập nhật từ xa trên nhiều máy trạm hoặc máy chủ cùng một lúc (PSWindowsUpdate phải được cài đặt / nhập trên các máy tính này). Điều này rất thuận tiện vì quản trị viên không phải đăng nhập thủ công vào các máy chủ Windows từ xa để cài đặt các bản cập nhật. WinRM phải được bật và định cấu hình trên máy tính từ xa (thủ công hoặc thông qua GPO).

Hầu hết tất cả các lệnh ghép ngắn mô-đun PSWindowsUpdate đều cho phép bạn quản lý và cài đặt các bản cập nhật Windows trên máy tính từ xa với –Computername thuộc tính.

Cài đặt mô-đun PSWindowsUpdate trên máy tính từ xa và cho phép truy cập qua cổng RPC động vào quy trình dllhost.exe trong Tường lửa của Bộ bảo vệ Windows. Bạn có thể sử dụng lệnh ghép ngắn Invoke-Command để định cấu hình mô-đun PSWindowsUpdate trên máy tính từ xa:

$Targets = "lon-fs02", "lon-db01"
Invoke-Command -ComputerName $Target -ScriptBlock {Set-ExecutionPolicy RemoteSigned -force }
Invoke-Command -ComputerName $Target -ScriptBlock {Import-Module PSWindowsUpdate; Enable-WURemoting}

Mô-đun PSWindowsUpdate có thể được sử dụng để quản lý từ xa các bản cập nhật Windows trên cả máy tính trong miền AD và trong nhóm làm việc (yêu cầu cấu hình PowerShell Remoting cho môi trường nhóm làm việc).

Để quản lý các bản cập nhật trên máy tính từ xa, bạn cần thêm tên máy chủ vào danh sách máy chủ đáng tin cậy của winrm hoặc định cấu hình PowerShell Remoting (WinRM) qua HTTPS:

winrm set winrm/config/client '@{TrustedHosts="server1,server2,…"}'

Hoặc với PowerShell:
Set-Item wsman:\localhost\client\TrustedHosts -Value server1 -Force

Lệnh sau sẽ cài đặt tất cả các bản cập nhật có sẵn trên ba máy chủ Windows từ xa:

$ServerNames = "server1, server2, server3"
Invoke-WUJob -ComputerName $ServerNames -Script {ipmo PSWindowsUpdate; Install-WindowsUpdate -AcceptAll | Out-File C:\Windows\PSWindowsUpdate.log } -RunNow -Confirm:$false -Verbose -ErrorAction Ignore

Lệnh ghép ngắn Invoke-WUJob (trước đây được gọi là Invoke-WUInstall) sẽ tạo tác vụ lập lịch trên máy tính từ xa chạy trong tài khoản HỆ THỐNG cục bộ.

Bạn có thể chỉ định thời gian chính xác để cài đặt các bản cập nhật Windows:

Invoke-WUJob -ComputerName $ServerNames -Script {ipmo PSWindowsUpdate; Install-WindowsUpdate –AcceptAll -AutoReboot | Out-File C:\Windows\PSWindowsUpdate.log } -Confirm:$false -TriggerDate (Get-Date -Hour 22 -Minute 0 -Second 0)

Bạn có thể kiểm tra trạng thái của tác vụ cài đặt bản cập nhật bằng Get-WUJob:

Get-WUJob -ComputerName $ServerNames

Nếu lệnh trả về một danh sách trống, thì tác vụ cài đặt cập nhật trên tất cả các máy tính đã được hoàn thành.

Bạn có thể cài đặt các bản cập nhật trên một máy tính từ xa và gửi báo cáo qua email cho quản trị viên:

Install-WindowsUpdate -ComputerName nysrv1 -MicrosoftUpdate -AcceptAll - IgnoreReboot -SendReport –PSWUSettings @{SmtpServer="smtp.woshub.com";From="update_alert@woshub.com";To="wsus_admin@woshub.com";Port=25} -Verbose

Kiểm tra Lịch sử cập nhật Windows bằng PowerShell (Get-WUHistory)

Sử dụng Get-WUHistory cmdlet, bạn có thể tải danh sách các bản cập nhật được cài đặt trên máy tính sớm hơn một cách tự động hoặc thủ công.

Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module

Bạn có thể nhận được thông tin về ngày cài đặt của một bản cập nhật cụ thể:

Get-WUHistory| Where-Object {$_.Title -match "KB4517389"} | Select-Object *|ft

Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module

Để tìm hiểu xem bản cập nhật cụ thể đã được cài đặt trên nhiều máy tính từ xa hay chưa, bạn có thể sử dụng mã PowerShell sau:

"server1","server2" | Get-WUHistory| Where-Object {$_.Title -match "KB4011634"} | Select-Object *|ft

Kiểm tra xem máy tính có cần được khởi động lại sau khi cài đặt bản cập nhật hay không (đang chờ khởi động lại):

Get-WURebootStatus –ComputerName WKS21TJS

Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module

Kiểm tra giá trị của RebootRequired Khởi động lại đã lên lịch thuộc tính.

Bạn có thể tạo báo cáo với ngày mà các bản cập nhật được cài đặt lần cuối trên tất cả các máy tính trong miền bằng cách sử dụng lệnh ghép ngắn Get-ADComputer (từ mô-đun Active Directory cho PowerShell):

$Computers=Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows*' }
Foreach ($Computer in $Computers)
{
Get-WULastResults -ComputerName $Computer.Name|select ComputerName, LastSearchSuccessDate, LastInstallationSuccessDate
}

Bằng cách tương tự, bạn có thể tìm thấy các máy tính chưa cài đặt bản cập nhật trong hơn 60 ngày và hiển thị kết quả trong bảng tương tác Out-GridView:

$result=@()
Foreach ($Computer in $Computers) {
$result+= Get-WULastResults -ComputerName $Computer.Name
}
$result| Where-Object { $_.LastInstallationSuccessDate -lt ((Get-Date).AddDays(-60)) }| Out-GridView

Gỡ cài đặt bản cập nhật Windows bằng PowerShell (Remove-WindowsUpdate)

Bạn có thể sử dụng Remove-WindowsUpdate lệnh ghép ngắn để gỡ cài đặt chính xác các bản cập nhật với PowerShell. Chỉ cần chỉ định số KB làm đối số của tham số KBArticleID. Để trì hoãn việc khởi động lại máy tính tự động, hãy thêm tùy chọn –NoRestart:

Remove-WindowsUpdate -KBArticleID KB4489873 -NoRestart

Làm cách nào để ẩn các bản cập nhật Windows bằng PowerShell?

Bạn có thể ẩn các bản cập nhật cụ thể để chúng sẽ không bao giờ được cài đặt bởi dịch vụ Windows Update trên máy tính của bạn (thông thường bạn cần ẩn các bản cập nhật trình điều khiển). Ví dụ:để ẩn các bản cập nhật KB4489873 và KB4489243, hãy chạy các lệnh sau:
$HideList = "KB4489873", "KB4489243"
Get-WindowsUpdate -KBArticleID $HideList –Hide

Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module

Bây giờ, vào lần tiếp theo bạn quét các bản cập nhật bằng lệnh Get-WUlist, các bản cập nhật ẩn sẽ không được hiển thị trong danh sách các bản cập nhật có sẵn để cài đặt.

Đây là cách bạn có thể hiển thị danh sách các bản cập nhật bị ẩn trên máy tính này:

Get-WindowsUpdate –IsHidden

Lưu ý rằng H Thuộc tính (Ẩn) đã xuất hiện trong cột Trạng thái của các bản cập nhật ẩn.

Quản lý các bản cập nhật Windows với PSWindowsUpdate PowerShell Module

Để hiện một số cập nhật, hãy chạy lệnh sau:

Get-WindowsUpdate -KBArticleID $HideList -WithHidden -Hide:$false

hoặc:

Show-WindowsUpdate -KBArticleID $HideList

Đối với những người cảm thấy không thoải mái trong bảng điều khiển PowerShell, tôi sẽ giới thiệu một hình ảnh Windows Update MiniTool để quản lý các bản cập nhật trong Windows 10/11 và Windows Server 2022/2019.