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
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?”) .
- 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\
; - 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
; - Định cấu hình chính sách thực thi tập lệnh PowerShell:
Set-ExecutionPolicy –ExecutionPolicy RemoteSigned -force
- Giờ đây, bạn có thể nhập mô-đun vào phiên PowerShell của mình:
Import-Module PSWindowsUpdate
| 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 và 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.
Để 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é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.
Để 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 FalseNhư 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.
Để 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
Để 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
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 IgnoreLệ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="[email protected]";To="[email protected]";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.
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
Để 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
Kiểm tra giá trị của RebootRequired và 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-GridViewGỡ 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
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.
Để 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.