web-dev-qa-db-ja.com

PowerShell(または他の何か)を使用して、タスクスケジューラのタスクの特定のトリガーで有効/無効を切り替える

この質問に関連して:

TCのWindows Server、夏時間でタスクをシフトするにはタスクスケジューラが必要

そしてこの質問:

https://stackoverflow.com/questions/11458029/enabling-disabling-tasks-in-task-scheduler-using-a-powershell-script

PowerShellを使用して特定のトリガー(タスク全体ではない)を選択的に有効または無効にする方法はありますか?

UTCサーバーのタスクに2つの「毎日」トリガーがあり、1つは1時間後に実行されるようにスケジュールされています。 1つだけ有効にしたいので、年に2回切り替えたいと思います。

タスクスケジューラにはトリガーの一意の「名前」がないようで、「毎日」と表示されるだけです。

1
Cade Roux

タスクスケジューラとインターフェイスする方法はたくさんあります。たとえば、Schedule.ServiceCOMオブジェクトを使用できます。

$TaskScheduler = New-Object -COMObject Schedule.Service
$TaskScheduler.Connect()
$TaskFolder = $TaskScheduler.GetFolder("\") # If your task is in the root "folder"
$Task = $TaskFolder.GetTask("The Name Of Your Task")
$Triggers = $Task.Definition.Triggers
$FirstTrigger = $Triggers.Item(1)

これらのトリガーオブジェクトには、それぞれEnabledプロパティがあります。ここでの配列インデックスは1から始まると思います。これは奇妙ですが、何でもです。

編集:そうそう、RegisterTaskDefinition()メソッドは変更を保存する必要があります。

2
Ryan Ries