使用任務排程器實現 PowerShell 指令碼的自動化

Marion Paul Kenneth Mendoza 2023年1月30日 2022年5月14日
  1. 使用任務計劃程式執行 PowerShell 指令碼
  2. 在 PowerShell 中建立計劃任務
使用任務排程器實現 PowerShell 指令碼的自動化

Windows 任務計劃程式可以幫助我們在特定時間或滿足特定條件和觸發器時自動啟動程式或 PowerShell 指令碼。

本文將向我們展示如何從任務計劃程式執行 PowerShell 指令碼並使用 Windows PowerShell 建立計劃任務。

使用任務計劃程式執行 PowerShell 指令碼

Windows+R 開啟任務計劃程式控制臺,然後在開啟的視窗中鍵入 taskschd.msc。執行後,請按照以下步驟操作。

首先,單擊建立任務並輸入新任務的名稱和描述。接下來,選中以最高許可權執行框以使用管理員許可權執行程式。

執行任務時,最好分配一個單獨的服務帳戶來執行任務,無論使用者當前是否處於會話中。

建立任務

其次,單擊觸發器選項卡,然後單擊新建... 按鈕。這裡我們可以指定觸發任務執行的條件。

有多種方法可以開始一項任務。

  • 按計劃
  • 登入時
  • 啟動時
  • 空閒時
  • 在一個事件上
  • 在任務建立/修改
  • 在連線到使用者會話時
  • 與使用者會話斷開連線
  • 在工作站鎖定
  • 在工作站解鎖

選擇適合情況的觸發器。

任務觸發器

第三,單擊 Actions 選項卡,然後單擊 New…。在這裡,我們可以指定在滿足觸發條件時將執行的操作。

必須完全遵循此步驟才能正確執行 PowerShell。要自動安排系統將執行的 PowerShell 指令碼,請填寫以下欄位:

  • 行動:啟動程式
  • 程式\指令碼:powershell(或 powershell.exe
  • 新增引數(可選):-File(在此處指定檔案的路徑)(此處也放置任何其他引數)

單擊確定以應用更改。

任務操作

第四,Conditions 選項卡使我們能夠指定與觸發器一起確定系統應如何執行任務的條件。

任務條件

第五,我們還可以在設定選項卡上為你的計劃任務設定附加引數。

任務設定

六、配置任務時,系統會詢問我們第一步提供的賬號密碼。輸入密碼並點選 OK 儲存任務。

完成後,如果系統已通過設定觸發器啟動該任務,則該任務應成功執行 PowerShell 檔案。

在 PowerShell 中建立計劃任務

現在我們已經討論了使用任務計劃程式設定任務,讓我們討論如何使用 PowerShell 建立計劃任務。

PowerShell 3.0 和 4.0 引入了用於建立計劃任務的 cmdlet,例如 New-ScheduledTaskTriggerRegister-ScheduledTask

# Specify the trigger settings
$Trigger= New-ScheduledTaskTrigger -At 10:00am -Daily

# Specify the account to run the script
$User= "NT AUTHORITY\SYSTEM" 

# Specify program to run (PowerShell)
$Action= New-ScheduledTaskAction -Execute "PowerShell" -Argument "-file C:\PS\PSScript.ps1" 

# Specify the name of the task
Register-ScheduledTask -TaskName "Test Script" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force 

其他可能對設定新任務有用的觸發選項包括:

  • -AtStartup 在 Windows 啟動時觸發我們的任務。
  • -AtLogon 在使用者登入時觸發我們的任務。
  • -Once 觸發我們的任務一次。我們可以使用 -RepetitionInterval 引數設定重複間隔。
  • -Weekly 每週觸發一次我們的任務。

請注意,在使用這些 cmdlet 時,不可能像我們使用任務計劃程式工具那樣觸發事件執行。

帶有 on an event 觸發器的 PowerShell 指令碼要複雜得多,因此這是使用 PowerShell 而不是 Task Scheduler 的缺點。

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

相關文章 - PowerShell Task Scheduler