Máy Tính

Tự Động Cập Nhật Windows 11 Bằng PowerShell: Hướng Dẫn Chi Tiết Để Tránh Gián Đoạn

Giao diện Notepad đang hiển thị một script PowerShell, menu File với tùy chọn Save As được đánh dấu

Windows Update là một phần không thể thiếu của Windows 11, thường xuyên nhận về nhiều chỉ trích từ người dùng. Những bản cập nhật và khởi động lại bắt buộc có thể xảy ra vào những thời điểm tồi tệ nhất, gây ra không ít phiền toái. Tuy nhiên, không thể phủ nhận đây là một thành phần thiết yếu giúp máy tính của bạn luôn được bảo mật và hoạt động ổn định. Nếu bạn không muốn các bản cập nhật làm gián đoạn công việc của mình, có một giải pháp hiệu quả. PowerShell cung cấp các công cụ mạnh mẽ để tự động hóa quá trình cập nhật Windows, giúp mọi thứ trở nên ít phiền toái hơn rất nhiều. Nếu điều này nghe có vẻ hấp dẫn, blogcongnghe.net sẽ hướng dẫn bạn cách thực hiện chi tiết từng bước. Mọi thao tác liên quan đến PowerShell cần được chạy với quyền quản trị (administrator privileges) để đảm bảo hoạt động chính xác.

Chuẩn Bị Thiết Lập Môi Trường Tự Động Cập Nhật

Để tự động hóa các bản cập nhật Windows, bạn chỉ cần phiên bản Windows PowerShell mới nhất, vốn đã được tích hợp sẵn trong các phiên bản Windows hiện đại, và một tài khoản người dùng có quyền quản trị. Với các yêu cầu đó, bạn sẽ cần cài đặt module PSWindowsUpdate, một công cụ mạnh mẽ cho phép quản lý cập nhật dễ dàng hơn. Module này cung cấp nhiều lệnh để quản lý Windows Updates, nhưng trong hướng dẫn này, chúng ta sẽ tập trung vào cách tự động hóa quá trình, nên việc thiết lập tương đối đơn giản.

Để cài đặt module này, bạn chỉ cần mở PowerShell với quyền quản trị và nhập lệnh sau:

Install-Module PSWindowsUpdate

Khi được nhắc, nhấn Y để chấp nhận cài đặt NuGet provider (bước này có thể không xuất hiện nếu bạn đã có phiên bản mới nhất), sau đó nhấn A để chọn Yes to all.

Tiếp theo, bạn cần nhập module này để có thể sử dụng các lệnh của nó. Hãy sử dụng lệnh sau:

Import-Module PSWindowsUpdate

Nếu được nhắc, nhấn A để luôn tin cậy module này. Đây là điều cần thiết để quá trình tự động hóa hoạt động sau này.

Trong trường hợp bước này không hoạt động, bạn có thể cần phải thiết lập chính sách thực thi (execution policy) trên máy tính của mình. Hãy chạy lệnh sau:

Set-ExecutionPolicy Unrestricted

Sau đó, thử chạy lại lệnh nhập module và nó sẽ hoạt động. Tuy nhiên, hãy lưu ý rằng việc sử dụng chính sách Unrestricted có thể tiềm ẩn rủi ro về bảo mật.

Tự Động Hóa Windows Update Với PowerShell

Tạo Script Cập Nhật Windows Tự Động

Sau khi đã cài đặt module cần thiết, cách tốt nhất là bạn nên tạo một script PowerShell kiểm tra các bản cập nhật và cài đặt chúng khi có sẵn. May mắn thay, script này đã được phát triển trước đó, vì vậy bạn có hai lựa chọn. Bạn có thể tải script PowerShell tại đây (liên kết đến file trên Mega.nz được cung cấp trong bài gốc), hoặc làm theo các bước dưới đây để tự tạo:

  1. Đầu tiên, hãy tạo một thư mục có tên Scripts trong thư mục gốc của ổ đĩa C: của bạn. Sau đó, bên trong thư mục Scripts này, tạo một thư mục con có tên Logs. Việc này sẽ giúp bạn dễ dàng xem các file nhật ký (log) của script. Ngoài ra, bạn có thể chỉnh sửa script trong Notepad để tạo nhật ký trong một thư mục khác đã tồn tại, nhưng script không thể ghi vào một thư mục chưa được tạo.
  2. Mở ứng dụng Notepad.
  3. Sao chép toàn bộ khối văn bản trên trang này (liên kết đến pastebin được cung cấp trong bài gốc) và dán vào Notepad.
  4. Nhấp vào File > Save As (Lưu dưới dạng).
    Giao diện Notepad đang hiển thị một script PowerShell, menu File với tùy chọn Save As được đánh dấuGiao diện Notepad đang hiển thị một script PowerShell, menu File với tùy chọn Save As được đánh dấu
  5. Điều hướng đến thư mục bạn muốn lưu file (ví dụ, chúng ta sẽ sử dụng C:UsersTên_người_dùngDocuments).
  6. Thay đổi tùy chọn Save as type (Lưu dưới dạng) thành All files (Tất cả các file).
  7. Chọn bất kỳ tên nào cho file của bạn và thêm đuôi .ps1 vào cuối. Ví dụ: RunWindowsUpdate.ps1.
    Lưu script PowerShell với tùy chọn "Save as type" là All files và tên file có đuôi .ps1Lưu script PowerShell với tùy chọn "Save as type" là All files và tên file có đuôi .ps1
  8. Nhấp vào Save (Lưu).

Script này về cơ bản sẽ kiểm tra tất cả các bản cập nhật Windows có sẵn, và nếu tìm thấy, nó sẽ tự động cài đặt chúng và khởi động lại PC sau đó nếu cần. Điều này có nghĩa là bạn nên chạy script vào thời điểm bạn không ngại máy tính khởi động lại. Nó cũng tự động ghi lại mọi đầu ra vào một file với thời gian và ngày hiện tại, giúp bạn dễ dàng theo dõi lịch sử cập nhật trên PC của mình.

Tự Động Hóa Chạy Script Bằng Task Scheduler

Bước tiếp theo là làm cho script chạy tự động, nhưng trước đó, chúng ta cần đảm bảo rằng nó sẽ không yêu cầu thêm quyền. Theo mặc định, các script PowerShell bị chặn chạy tự động, vì vậy bạn phải mở khóa file thủ công. Để thực hiện việc này, hãy sử dụng lệnh Unblock-File trong PowerShell, sau đó là đường dẫn đến script PowerShell mà chúng ta vừa tạo. Ví dụ:

Unblock-File "C:UsersTên_người_dùngDocumentsRunWindowsUpdate.ps1"

Lệnh này sẽ cho phép script tự động hóa chạy mà không bị hạn chế, vì vậy bạn không phải phê duyệt hoặc thực hiện bất cứ điều gì thủ công.

Tiếp theo, bạn có thể tạo tự động hóa bằng một script PowerShell khác để tự động hóa quá trình, hoặc bạn có thể sử dụng Task Scheduler để làm điều đó. Chúng ta sẽ sử dụng phương pháp thứ hai vì nó dễ thực hiện hơn.

  1. Mở menu Start và gõ Task Scheduler vào thanh tìm kiếm. Chọn tùy chọn đầu tiên.

  2. Sử dụng menu ở phía bên phải của cửa sổ để chọn Create Basic Task (Tạo tác vụ cơ bản). (Nếu bạn muốn sắp xếp các tác vụ của mình tốt hơn, bạn có thể tạo một thư mục mới trước).
    Giao diện Task Scheduler với nút Create Basic Task được đánh dấu để tạo tác vụ cơ bảnGiao diện Task Scheduler với nút Create Basic Task được đánh dấu để tạo tác vụ cơ bản

  3. Đặt tên cho tác vụ là Cập nhật Windows tự động (hoặc bất kỳ tên nào bạn thích) và thêm mô tả nếu muốn. Nhấp vào Next (Tiếp theo).

  4. Trong phần Trigger (Kích hoạt), chọn tần suất script nên chạy. Tùy chọn tốt nhất ở đây có lẽ là đặt nó thành Daily (Hàng ngày) để bạn có thể chắc chắn rằng mình sẽ cài đặt mọi bản cập nhật trước khi chúng có thể làm phiền bạn. Nhấp vào Next.

  5. Trên trang tiếp theo, chọn thời điểm tác vụ nên chạy lần đầu tiên. Tại đây, hãy đảm bảo bạn chọn một thời điểm mà bạn không cần sử dụng máy tính của mình. Ví dụ, 3 giờ sáng sẽ cho phép tác vụ chạy qua đêm. Nhưng máy tính của bạn cũng có thể tắt vào thời điểm đó, vì vậy hãy đảm bảo chọn một thời điểm phù hợp với bạn.
    Hộp thoại tạo tác vụ mới trong Task Scheduler, hiển thị cài đặt thời gian và ngày chạy tác vụ lần đầuHộp thoại tạo tác vụ mới trong Task Scheduler, hiển thị cài đặt thời gian và ngày chạy tác vụ lần đầu

    Bạn cũng có thể chọn số ngày giữa mỗi lần chạy. Mặc định là 1. Nhấp vào Next.

  6. Trong tab Action (Hành động), chọn Start a program (Khởi động chương trình) và nhấp vào Next.

  7. Trên trang tiếp theo, dưới Program/Script (Chương trình/Script), nhập PowerShell.exe.

  8. Bên cạnh Add arguments (optional) (Thêm đối số (tùy chọn)), nhập lệnh sau (thay thế đường dẫn file bằng đường dẫn bạn đang sử dụng trên máy tính của mình):

    -NoProfile -WindowStyle Hidden -File "C:UsersTên_người_dùngDocumentsRunWindowsUpdate.ps1"
  9. Nhấp vào Next và sau đó là Finish (Hoàn tất).

  10. Sau khi tạo tác vụ, đi tới Task Scheduler Library (Thư viện Task Scheduler) ở phía bên trái của cửa sổ.

  11. Nhấp chuột phải vào tác vụ bạn đã tạo và chọn Properties (Thuộc tính).
    Thuộc tính của một tác vụ trong Task Scheduler, hiển thị nút Change User or Group để thay đổi người dùng chạy tác vụThuộc tính của một tác vụ trong Task Scheduler, hiển thị nút Change User or Group để thay đổi người dùng chạy tác vụ

  12. Nhấp vào Change User or Group… (Thay đổi Người dùng hoặc Nhóm…).

  13. Nhập System vào hộp văn bản và sau đó nhấp vào Check Names (Kiểm tra Tên).
    Hộp thoại lựa chọn người dùng trong Task Scheduler, với trường văn bản để nhập tên người dùng và nút Check NamesHộp thoại lựa chọn người dùng trong Task Scheduler, với trường văn bản để nhập tên người dùng và nút Check Names

  14. Nhấp vào OK.

  15. Đánh dấu vào ô Run with highest privileges (Chạy với quyền cao nhất).
    Thuộc tính tác vụ trong Task Scheduler, với tùy chọn Run with highest privileges được đánh dấu để chạy tác vụ với quyền cao nhấtThuộc tính tác vụ trong Task Scheduler, với tùy chọn Run with highest privileges được đánh dấu để chạy tác vụ với quyền cao nhất

  16. (Tùy chọn) Bạn cũng có thể muốn chuyển đến tab Conditions (Điều kiện) và bỏ chọn ô “Start the task only if the computer is on AC power” (Chỉ khởi động tác vụ nếu máy tính đang sử dụng nguồn điện AC). Điều này sẽ cho phép tác vụ chạy ngay cả khi máy tính xách tay không được cắm sạc.

  17. Nhấp vào OK để hoàn tất thiết lập.

Script sẽ chạy tự động hàng ngày vào thời gian bạn đã đặt (trừ khi bạn chọn một lịch trình lặp lại khác). Ngoài ra, nếu bạn muốn sử dụng PowerShell cho việc này, bạn có thể sử dụng một script để tạo tác vụ theo lịch trình. Đối với điều đó, bạn sẽ sử dụng Notepad một lần nữa như đã làm ở trên, nhưng sau đó sao chép ví dụ văn bản này (liên kết đến pastebin được cung cấp trong bài gốc) thay thế. Bạn có thể sửa đổi các biến thời gian cho phù hợp với nhu cầu của mình. Thực hiện các bước tổng thể tương tự để tạo file PS1 và sau đó chạy nó thủ công (bạn chỉ cần nó một lần). Đồng thời, hãy đảm bảo thay đổi đường dẫn đến script để khớp với nơi bạn đã lưu trữ file PS1.

Các Tùy Chọn Mở Rộng Cho Script Cập Nhật Windows

Script trên là một script tương đối cơ bản sẽ kiểm tra và cài đặt các bản cập nhật Windows, nhưng chỉ dừng lại ở đó. Nó không có logic để xử lý các lỗi tiềm ẩn và sẽ không phát hiện các bản cập nhật không phải của Windows, ví dụ. Có một số thay đổi bạn có thể thực hiện để khắc phục một số hạn chế này nếu cần.

Nếu bạn muốn bao gồm các bản cập nhật phần mềm Microsoft khác khi cài đặt cập nhật, bạn có thể thêm -MicrosoftUpdate làm đối số bên cạnh -Install-WindowsUpdate trong script chúng ta đã tạo. Về cơ bản, dòng mới sẽ trông như thế này:

Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot -Verbose | Tee-Object -FilePath $LogPath -Append

Nếu bạn đang ở trong một tổ chức lớn và chạy script này trên nhiều PC, bạn cũng có thể muốn giới hạn băng thông cho mỗi máy. Bạn có thể thêm đối số -ThrottleDownload để thực hiện điều này. Một lần nữa, nếu bạn đang sửa đổi script cơ sở, dòng mới sẽ trông như thế này (ví dụ):

Install-WindowsUpdate -ThrottleDownload 5Mbps -AcceptAll -AutoReboot -Verbose | Tee-Object -FilePath $LogPath -Append

Cũng có thể sử dụng script này trên các máy từ xa với PowerShell Remoting, vì vậy đó là một cân nhắc khác cần thực hiện. Trong trường hợp này, trước tiên bạn sẽ phải bật PowerShell Remoting bằng lệnh Enable-PSRemoting -Force, và sau đó sửa đổi script của mình để chạy trên các máy mong muốn. Bạn có thể tìm thấy một script ví dụ cho điều này tại đây (liên kết đến pastebin và Medium post được cung cấp trong bài gốc). Tuy nhiên, bạn sẽ phải sửa đổi nó với các tên máy tính thích hợp mà bạn muốn nhắm mục tiêu.

Nếu có bất kỳ lỗi nào với các bản cập nhật, bạn có thể sử dụng Event Viewer để xem điều gì đã xảy ra hoặc duyệt đến vị trí lưu trữ các file nhật ký của bạn để xem những gì được hiển thị ở đó.

Tận Hưởng Trải Nghiệm Cập Nhật Windows Dễ Dàng Hơn

Windows Update chắc chắn có thể gây phiền toái vào những thời điểm nhất định, nhưng script PowerShell này giúp mọi thứ dễ dàng hơn rất nhiều. Bạn sẽ không còn phải lo lắng về việc máy tính cài đặt cập nhật và khởi động lại vào những lúc bạn không muốn. Vì mọi thứ xảy ra theo một lịch trình đã định, bạn sẽ không phải lo lắng về bất kỳ bất ngờ nào bị buộc phải xảy ra với mình. Ngay cả khi bạn không phải là người am hiểu kỹ thuật, các bước này đủ dễ để làm theo, vì vậy rất đáng để thử.

Bạn đã từng gặp rắc rối với Windows Update chưa? Bạn có mẹo hay thủ thuật nào để quản lý chúng tốt hơn không? Hãy chia sẻ kinh nghiệm của bạn trong phần bình luận bên dưới nhé!

Related posts

Mua GPU Cũ (Pre-owned): Giải Pháp Tối Ưu Cho Game Thủ Việt Nam Trong Bối Cảnh Thị Trường Hiện Tại

Administrator

8 Thách Thức Đe Dọa Tương Lai PC Gaming và Ngành Phần Cứng Máy Tính Hiện Nay

Administrator

So sánh FTTH và FTTC: Đâu là lựa chọn tối ưu cho bạn?

Administrator