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