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