Tìm kiếm trang web

Cách tự động hóa tập lệnh PowerShell bằng Trình lập lịch tác vụ


Bộ lập lịch tác vụ Microsoft Windows có thể giúp bạn tự động khởi chạy một chương trình hoặc tập lệnh PowerShell tại một thời điểm nhất định hoặc khi đáp ứng một số điều kiện nhất định. Bạn cũng có thể lên lịch gửi email và thậm chí hiển thị một số tin nhắn nhất định. Trong blog này, chúng tôi sẽ hướng dẫn bạn cách chạy tập lệnh PowerShell từ Trình lập lịch tác vụ để cảnh báo về mọi cài đặt phần mềm trên máy tính cục bộ.

Chúng tôi cũng sẽ tạo các tác vụ theo lịch trình bằng cách sử dụng tập lệnh PowerShell. Bạn sẽ học cách:

  • Tạo tác vụ với Trình lập lịch tác vụ
  • Sửa đổi hoặc xóa các tác vụ đã lên lịch
  • Tạo tác vụ theo lịch trình với tập lệnh PowerShell.

Tạo tác vụ với Trình lập lịch tác vụ

Mở Trình lập lịch tác vụ bằng cách nhấn “Windows + R” rồi nhập “taskchd.msc” vào cửa sổ mở ra. Sau đó thực hiện các bước sau:

1. Nhấp vào “Tạo tác vụ” rồi nhập tên và mô tả cho tác vụ mới. Để chạy chương trình với đặc quyền của quản trị viên, hãy chọn hộp “Chạy với đặc quyền cao nhất”. Trong ví dụ của chúng tôi, chúng tôi sẽ chỉ định một tài khoản dịch vụ để chạy tác vụ và chạy nó bất kể người dùng có đăng nhập hay không.

2. Chuyển sang tab Kích hoạt và nhấp vào nút “Mới…”. Tại đây bạn có thể chỉ định các điều kiện kích hoạt tác vụ được thực thi. Ví dụ: bạn có thể thực thi nó theo lịch trình, khi đăng nhập, khi không hoạt động, khi khởi động hoặc bất cứ khi nào một sự kiện cụ thể xảy ra. Chúng tôi muốn tác vụ của mình được kích hoạt bởi bất kỳ cài đặt phần mềm mới nào, vì vậy chúng tôi chọn “Trên một sự kiện” từ menu thả xuống và chọn “Ứng dụng” từ cài đặt Nhật ký. Để trống tham số “Nguồn” và đặt EventID thành “11707”. Nhấp vào “OK” để lưu các thay đổi.

3. Điều hướng đến tab “Hành động” và nhấp vào “Mới…”. Tại đây bạn có thể chỉ định các hành động sẽ được thực thi bất cứ khi nào các điều kiện kích hoạt được đáp ứng. Ví dụ: bạn có thể gửi email hoặc hiển thị tin nhắn. Trong trường hợp của chúng tôi, chúng tôi muốn bắt đầu một chương trình, vì vậy chúng tôi cần tạo tập lệnh PowerShell mà chúng tôi muốn chạy và lưu nó với phần mở rộng “ps1”. Bạn có thể tìm thấy kịch bản ở đây; nó sẽ gửi thông báo kèm theo chi tiết sự kiện về phần mềm đã cài đặt.

Để lên lịch cho tập lệnh PowerShell, hãy chỉ định các tham số sau:

  • Hành động: Bắt đầu một chương trình
  • Tập lệnh chương trình: powershell
  • Thêm đối số (tùy chọn): -File [Chỉ định đường dẫn tệp tới tập lệnh tại đây]

Nhấp vào “OK” để lưu các thay đổi của bạn.

4. Tab “Điều kiện” cho phép bạn chỉ định các điều kiện cùng với trình kích hoạt sẽ xác định xem tác vụ có nên chạy hay không. Trong trường hợp của chúng tôi, chúng tôi nên để cài đặt mặc định trên tab này.

5. Bạn cũng có thể thiết lập các tham số bổ sung cho tác vụ đã lên lịch của mình trên tab “Cài đặt”. Tuy nhiên, đối với ví dụ của chúng tôi, chúng tôi sẽ không thay đổi chúng.

6. Khi tác vụ được thiết lập hoàn tất, hệ thống sẽ hỏi bạn mật khẩu tài khoản dịch vụ. Lưu ý tài khoản này phải có quyền “Đăng nhập làm công việc hàng loạt”. Nhập mật khẩu và nhấp vào “OK” để lưu tác vụ.
7. Để Trình lập lịch tác vụ hoạt động bình thường, dịch vụ Trình lập lịch công việc phải được đặt để bắt đầu Chạy “Services.msc”. Trong danh sách dịch vụ, tìm Trình lập lịch tác vụ và bấm đúp vào nó. Trên tab Chung, đặt loại khởi động thành “Tự động” và nhấp vào OK để lưu thay đổi của bạn.

Giờ đây, bất cứ khi nào phần mềm mới được cài đặt trên Microsoft Windows Server của bạn, bạn sẽ được thông báo qua email nêu chi tiết thời gian cài đặt, tên phần mềm và ID người dùng (SID) của người đã cài đặt phần mềm đó.

Sửa đổi hoặc xóa các tác vụ đã lên lịch

Để sửa đổi tác vụ hiện có, nhấp chuột phải vào tác vụ đó trong danh sách, chọn Thuộc tính, chỉnh sửa cài đặt cần thiết và nhấp vào OK. Để xóa một tác vụ đã lên lịch, hãy nhấp chuột phải vào tác vụ đó, chọn Xóa và xác nhận hành động.

Tạo tác vụ theo lịch trình bằng tập lệnh PowerShell

Bây giờ bạn đã biết cách tạo tác vụ bằng Trình lập lịch tác vụ, hãy cùng tìm hiểu cách tạo tác vụ theo lịch trình bằng PowerShell. Giả sử chúng ta muốn tác vụ của mình được khởi chạy hàng ngày vào lúc 10 giờ sáng và nó phải thực thi tập lệnh PowerShell mà bạn có thể tìm thấy ở đây, tập lệnh này sẽ giám sát các thay đổi đối với tư cách thành viên nhóm trong trang Active Directory.

Trong Windows Powershell 2.0 (Windows 7, Windows Server 2008 R2), để tạo công việc đã lên lịch, bạn phải sử dụng mô-đun TaskScheduler. Cài đặt mô-đun bằng cách chạy lệnh “Import-Module TaskScheduler” và sử dụng tập lệnh sau để tạo một tác vụ sẽ thực thi tập lệnh PowerShell có tên GroupMembershipChanges.ps1 hàng ngày lúc 10 giờ sáng :

Import-Module TaskScheduler $task = New-Task
$task.Settings.Hidden = $true
Add-TaskAction -Task $task -Path C:Windowssystem32WindowsPowerShellv1.0powershell.exe –Arguments “-File C:ScriptsGroupMembershipChanges.ps1”
Add-TaskTrigger -Task $task -Daily -At “10:00”
Register-ScheduledJob –Name ”Monitor Group Management” -Task $task

Windows PowerShell 4.0 (Windows Server 2012 R2 trở lên) không bao gồm mô-đun Trình lập lịch tác vụ, vì vậy tập lệnh này sẽ không hoạt động. Thay vào đó, PowerShell 3.0 và 4.0 đã giới thiệu các lệnh ghép ngắn mới để tạo tác vụ theo lịch trình, New-ScheduledTaskTrigger và Register-ScheduledTask, giúp tạo tác vụ theo lịch trình dễ dàng và thuận tiện hơn nhiều. Vì vậy, hãy tạo một tác vụ sẽ thực thi tập lệnh của chúng tôi hàng ngày vào lúc 10 giờ sáng bằng tài khoản hệ thống (HỆ THỐNG). Nhiệm vụ này sẽ được thực hiện bởi một tài khoản có đặc quyền nâng cao.

$Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily # Specify the trigger settings
$User= "NT AUTHORITYSYSTEM" # Specify the account to run the script
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:PSStartupScript.ps1" # Specify what program to run and with its parameters
Register-ScheduledTask -TaskName "MonitorGroupMembership" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force # Specify the name of the task

Các tùy chọn kích hoạt khác có thể hữu ích trong việc tạo tác vụ mới bao gồm:

  • -AtStartup — Kích hoạt tác vụ của bạn khi khởi động Windows.
  • -AtLogon — Kích hoạt tác vụ của bạn khi người dùng đăng nhập.
  • -Once — Kích hoạt nhiệm vụ của bạn một lần. Bạn có thể đặt khoảng thời gian lặp lại bằng cách sử dụng tham số -RepetitionInterval .
  • -Hàng tuần — Kích hoạt nhiệm vụ của bạn mỗi tuần một lần.

Lưu ý rằng, khi sử dụng các lệnh ghép ngắn này, không thể kích hoạt thực thi “trên một sự kiện” như chúng tôi đã làm với công cụ Lập lịch tác vụ. Các tập lệnh PowerShell có trình kích hoạt “trong một sự kiện” phức tạp hơn nhiều, vì vậy đây thực sự là một bất lợi khi sử dụng PowerShell thay vì Trình lập lịch tác vụ.

Phần kết luận

Như bạn có thể thấy, thật dễ dàng để tạo các tác vụ theo lịch trình bằng cách sử dụng Trình lập lịch tác vụ hoặc PowerShell. Nhưng hãy nhớ rằng những thay đổi không thích hợp đối với các tác vụ đã lên lịch của bạn có thể gây gián đoạn dịch vụ và làm giảm hiệu suất máy chủ. Do đó, điều cần thiết là phải theo dõi tất cả các thay đổi đối với các nhiệm vụ đã lên lịch của bạn.

Bài viết liên quan