開始前先了解
示範腳本只在 C:\TutorialLab 附加時間記錄. 先用測試資料演練, 不要一開始就排程刪檔, 重開機或停服務.
排程以伺服器的時間與時區為準. 執行帳號應只有工作需要的權限, 腳本內不要保存密碼. 此篇以目前登入帳號執行本機無害工作, 選擇僅在使用者登入時執行, 不儲存密碼且不勾選最高權限. 若要在登出後仍執行, 請另行規劃專用低權限帳號及必要的批次登入權限, 不要直接照抄此演練設定.
本系列使用 Windows Server 2022 Datacenter 繁體中文真實操作畫面. 帳號, 網路設定, 磁碟與示範數值請換成自己的環境; 選項名稱可能因版本與語言不同而異.
01先手動測試腳本
以系統管理員開啟 PowerShell, 建立資料夾與記錄腳本. 手動執行後確認檔案新增時間, 才進行排程.
本機自行建立的腳本請依既有執行原則處理. 不要為了排程而關閉全機安全限制, 下載的腳本更應先核對來源與內容.
New-Item C:\TutorialLab -ItemType Directory -Force
'Get-Date -Format o | Add-Content C:\TutorialLab\maintenance.log' |
Set-Content C:\TutorialLab\maintenance.ps1
& C:\TutorialLab\maintenance.ps1
Get-Content C:\TutorialLab\maintenance.log
放大圖片
02建立工作並核對執行身分
按 Win+R, 執行 taskschd.msc, 在"工作排程器程式庫"建立工作, 使用可辨識名稱 TutorialMaintenance.
"一般"頁的帳號與登入條件決定工作在哪個身分下執行. 示範選擇目前帳號與僅在使用者登入時執行, 不勾選最高權限. 所以測試時要保持登入, 登出後不會依本設定執行. 正式工作請優先選有必要目錄權限的專用帳號, 不要將互動演練設定當作全天候維護方案.
放大圖片
03設定時間與動作
在"觸發程序"設定近期可觀察的時間. 在"動作"選啟動程式, 程式填完整 PowerShell 路徑, 引數與開始位置分開填.
程式: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe. 引數: -NoProfile -File C:\TutorialLab\maintenance.ps1. 開始位置: C:\TutorialLab. 圖中的測試時間需換成自己的時段.
放大圖片
04設定條件與執行限制
在"條件"及"設定"查看電源, 網路, 逾時與錯過排程後的處理方式. 伺服器維護工作請避免不必要的桌面閒置條件.
若腳本尚未結束, 通常應避免再啟動另一個執行個體. 此示範設 5 分鐘執行上限, 並以 IgnoreNew 防止同時堆疊.
放大圖片
05驗證一次真正的時間觸發
先手動執行確認輸出, 再等待設定時間自動執行. 檢查"上次執行結果"與時間記錄檔, 不只看工作是否存在.
此示範已等待一次時間觸發並取得新記錄. 0 或 0x0 是程序回傳結果, 仍要核對腳本確實產生預期內容.
Get-ScheduledTaskInfo -TaskName TutorialMaintenance |
Select-Object LastRunTime,LastTaskResult,NextRunTime
Get-Content C:\TutorialLab\maintenance.log
放大圖片
06停用演練工作並保留設定
測試完成後在工作清單停用 TutorialMaintenance, 或改成真正需要的時段. 匯出工作 XML 前檢查路徑與帳號資訊是否適合分享.
若正式工作使用儲存的帳號認證, 帳號密碼變更後需要更新認證並再次測試. 演練工作停用後仍可查看其設定與上次結果.
放大圖片
完成後如何確認
手動與時間觸發都產生實際記錄, 並已停用演練工作. 正式排程還應持續檢查失敗記錄與輸出內容.
常見問題
上次執行結果是 0, 就完全成功嗎?
仍需核對輸出. 腳本若把錯誤忽略後正常結束, 排程器可能只看到程序成功退出.