PowerShell可以讀取或修改計劃任務所有信息。不過請注意,小編是在Windows7,Windows 2008上測試的,貌似Windows2003好像有一些區別的。
下面來舉個例子,小編要演示的是修改/Microsoft/Windows/RAC/RACTask這個任務的RACTimeTrigger觸發器,設置它為Enable狀態。大致的思路是首先創建對象,連接到任務計劃程序。然后找到任務的目錄和任務本身。再下來通過任務的定義獲取任務的觸發器,找到RACTimeTrigger觸發器之后,設置它的Enable屬性為$true。最后將對象更新到任務計劃程序中。下面看具體步驟:
# 選擇指定目錄下的某個任務,小編這里測試使用/Microsoft/Windows/RAC/RACTask這個任務:
$folder = $service.GetFolder('/Microsoft/Windows/RAC')
$task = $folder.GetTask('RACTask')
# 獲取任務的“定義”,通過定義獲取任務的“觸發器”,再從觸發器中選擇ID為“RACTimeTrigger”的觸發器,最后把它設置為Enable(啟用)的狀態。
$definition = $task.Definition
$definition.triggers |
Where-Object { $_.ID -eq 'RACTimeTrigger' } |
ForEach-Object { $_.Enabled = $true }
#注意,這里的更新只是更新了PowerShell緩存的對象的屬性,并未真正更新到Schedule.Service(任務計劃程序)
# 將更新寫回到任務計劃程序
$folder.RegisterTaskDefinition($task.Name, $definition, 4, $null, $null, $null)
#注意:上面參數中的4表示Update。而RegisterTaskDefinition() 函數的返回值是$task這個任務的Definition。
新聞熱點
疑難解答
圖片精選