將 Windows PowerShell 指令碼作為已排程的工作建立並執行

已完成

已排程的工作為 Windows PowerShell 背景工作及 Windows 工作排程器工作的組合。 與背景工作類似,您可以在 Windows PowerShell 中定義排程工作。 此外,與工作一樣,工作結果會儲存至磁碟,而且即使 Windows PowerShell 未執行,排程工作仍可執行。

排定的工作

已排程的工作是 Windows 核心基礎結構元件的一部分。 在 Windows 上執行的其他 Windows 元件和產品會大量使用已排程的工作。 其通常比排程工作簡單。 工作排程器可讓您在各種系統事件或特定日期或時間觸發的任何資訊安全性內容中,設定幾乎執行任何程式或流程的排程。

不過,已排程的工作無法擷取及操控工作輸出。 已排程的工作幾乎可以在 Windows 裝置上執行任何可執行檔專案,因此不可能預期並擷取已排程工作的輸出。 不過,因為 Windows PowerShell 已排程的工作一律是Windows PowerShell 指令碼,所以即使該指令碼執行非 Windows PowerShell 程式,系統仍能夠擷取輸出。 在此情況下,指令碼區塊結尾將傳回 Windows PowerShell 物件。 排程的工作包含:

  • 動作,指定要執行的程式。
  • 主體,識別要用來執行動作的內容。
  • 觸發程序,定義決定何時要執行程式的時間或系統事件。
  • 其他設定,進一步設定工作並控制動作的執行方式。

使用已排程工作的命令位於隨附於 Windows 10 和 Windows Server 2019 的 ScheduledTasks 模組中。 若要檢閱完整的命令清單,請執行下列命令:

Get-Command –Module ScheduledTasks

例如,透過執行 Get-ScheduledTask 命令來檢查可用的已排程工作。 這將列出所有可用的已排程工作,不論其是否已啟用或停用。

使用 -TaskPath 參數執行 Get-ScheduledTask,以取得特定工作的資訊。 如需最佳做法,請確定您將實際路徑放在引號中。 使用 Get-ScheduledTaskInfo 命令取得特定工作的進一步資訊。 然後,您可以使用管線來合併這些命令,以取得其他資訊。 例如,輸入下列命令以擷取在系統上執行的自動更新工作詳細資訊:

Get-ScheduledTask -TaskPath "\Microsoft\Windows\WindowsUpdate\" | Get-ScheduledTaskInfo

您也可以從工作排程器建立和執行已排程的工作。 不過,如果您正在執行 Windows PowerShell 命令或指令碼,或未將其輸出寫入檔案的 Windows 工具,該怎麼辦? 如果輸出對您很重要,則最好選擇使用 Windows PowerShell 排程工作。 在該作業位於工作排程器之後,您可以進一步操控。 您可以在工作排程器中啟動或停止。 如果您想要在本機或甚至是在遠端電腦上建立多個排程工作或工作,請使用排程工作或已排程的工作命令,自動建立和維修。

將 Windows PowerShell 指令碼新增為工作排程器中的排程工作可大幅改善您的生產力。 PowerShell 資源庫包含數千個指令碼,您可以針對特定用途使用或修改,而且這些指令碼會分成各種類別。

例如,您可以針對 Active Directory Domain Services (AD DS) 和其他 Active Directory 服務執行數百個可用的指令碼。 其中一些指令碼非常有用。 例如,指令碼會尋找尚未使用超過 90 天的使用者帳戶,然後將其停用,這有助於加強網域安全性。 您可以將此指令碼修改為特定網域,然後將其建立為排程工作。 設定此工作之後,您就可以在工作排程器中尋找及操控工作。 將其排程為每週執行,並提供有關已停用 (如果有) 哪些帳戶的報告。