Set-JobTrigger
スケジュールされたジョブのジョブ トリガーを変更します。
構文
Set-JobTrigger
[-InputObject] <ScheduledJobTrigger[]>
[-DaysInterval <Int32>]
[-WeeksInterval <Int32>]
[-RandomDelay <TimeSpan>]
[-At <DateTime>]
[-User <String>]
[-DaysOfWeek <DayOfWeek[]>]
[-AtStartup]
[-AtLogOn]
[-Once]
[-RepetitionInterval <TimeSpan>]
[-RepetitionDuration <TimeSpan>]
[-RepeatIndefinitely]
[-Daily]
[-Weekly]
[-PassThru]
[<CommonParameters>]
説明
Set-JobTrigger
コマンドレットは、スケジュールされたジョブのジョブ トリガーのプロパティを変更します。 このコマンドレットを使用すると、ジョブを開始する時間や頻度を変更することや、時間ベースのスケジュールから、ログオンまたは起動によってトリガーされるスケジュールに変更することができます。
ジョブ トリガーは、スケジュールされたジョブを開始するための定期的なスケジュールまたは条件を定義します。 ジョブ トリガーはディスクに保存されませんが、スケジュールされたジョブのジョブ トリガーを変更することはできます。スケジュールされたジョブは、ディスクに保存されます。
スケジュールされたジョブのジョブ トリガーを変更するには、まず、 Get-JobTrigger
コマンドレットを使用して、スケジュールされたジョブのジョブ トリガーを取得します。 次に、トリガーをパイプ処理して、トリガーを Set-JobTrigger
または変数に保存し、コマンドレットの InputObject パラメーター Set-JobTrigger
使用してトリガーを識別します。
ジョブ トリガーを変更するには、 Set-JobTrigger
の残りのパラメーターを使用します。
ジョブ トリガーの種類 (毎日または毎週のトリガーから AtLogon トリガーに変更するなど) を変更すると、元のトリガー プロパティが削除されます。 ただし、週単位のトリガーの曜日の変更など、トリガーの種類ではなく、値を変更した場合は、指定したプロパティのみが変更されます。 元のジョブ トリガーの他のすべてのプロパティは保持されます。
Set-JobTrigger
は、Windows PowerShell に含まれる PSScheduledJob モジュールのジョブ スケジューリング コマンドレットのコレクションの 1 つです。
スケジュールされたジョブの詳細については、PSScheduledJob モジュールの概要トピックを参照してください。 PSScheduledJob モジュールをインポートし、「 Get-Help about_Scheduled*
」と入力するか、 about_Scheduled_Jobsを参照してください。
このコマンドレットは、Windows PowerShell 3.0 で導入されました。
例
例 1: ジョブ トリガーの日数を変更する
この例では、週単位のジョブ トリガーの曜日を変更する方法を示します。
Get-JobTrigger -Name "DeployPackage"
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Weekly 9/29/2011 12:00:00 AM {Wednesday, Saturday} True
Get-JobTrigger -Name "DeployPackage" | Set-JobTrigger -DaysOfWeek "Wednesday", "Sunday" -Passthru
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Weekly 9/29/2011 12:00:00 AM {Wednesday, Sunday} True
最初のコマンドでは、 Get-JobTrigger
コマンドレットを使用して、スケジュールされたジョブのジョブ トリガー DeployPackage
取得します。 出力には、トリガーによって毎週水曜日と土曜日の午前 0 時にジョブが開始されることが示されています。
2 番目のコマンドでは、 Get-JobTrigger
コマンドレットを使用して、スケジュールされたジョブのジョブ トリガー DeployPackage
取得します。 パイプライン演算子 (|
) は、 Set-JobTrigger
コマンドレットにトリガーを送信します。このコマンドレットは、水曜日と日曜日に DeployPackage
ジョブを開始するようにジョブ トリガーを変更します。 このコマンドは、 Passthru パラメーターを使用して、変更後にトリガーを返します。
このコマンドは必須ではありません。トリガーの変更の結果を表示するためにのみ含まれています。
例 2: ジョブ トリガーの種類を変更する
この例では、ジョブを開始するジョブ トリガーの種類を変更する方法を示します。 この例のコマンドは、 AtStartup
ジョブ トリガーを週単位のトリガーに置き換えます。
Get-JobTrigger -Name "Inventory"
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 9/27/2011 11:00:00 PM True
2 AtStartup True
Get-JobTrigger -Name "Inventory" -TriggerID 2 | Set-JobTrigger -Weekly -WeeksInterval 4 -DaysOfWeek Monday -At "12:00 AM"
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 9/27/2011 11:00:00 PM True
2 Weekly 10/31/2011 12:00:00 AM {Monday} True
最初のコマンドでは、 Get-JobTrigger
コマンドレットを使用して、スケジュールされたジョブのジョブ トリガー Inventory
取得します。 出力には、ジョブに 1 日あたりのトリガーと AtStartup トリガーが 2 つあることが示されています。
2 番目のコマンドでは、Get-JobTrigger
コマンドレットを使用して、Inventory
ジョブの AtStartup ジョブ トリガーを取得します。 このコマンドは、 TriggerID パラメーターを使用してジョブ トリガーを識別します。 パイプライン演算子 (|
) は、ジョブ トリガーを Set-JobTrigger
コマンドレットに送信します。このコマンドレットは、月曜日の午前 0 時に 4 週間ごとに実行される毎週のジョブ トリガーに変更します。 このコマンドは、 Passthru パラメーターを使用して、変更後にトリガーを返します。
このコマンドは必須ではありません。トリガーの変更の結果を表示するためにのみ含まれています。
例 3: リモート ジョブ トリガーでユーザーを変更する
Invoke-Command -ComputerName "Server01" -ScriptBlock {Get-ScheduledJob | Get-JobTrigger | Where-Object {$_.User} | Set-JobTrigger -User "Domain01/Admin02"}
このコマンドは、Server01 コンピューター上のスケジュールされたジョブのすべての AtLogon ジョブ トリガーのユーザーを変更します。
このコマンドでは、 Invoke-Command
コマンドレットを使用して Server01 コンピューターでコマンドを実行します。
リモート コマンドは、コンピューター上のすべてのスケジュールされたジョブを取得する Get-ScheduledJob
コマンドで始まります。 スケジュールされたジョブは、スケジュールされたジョブのジョブ トリガーを取得する Get-JobTrigger
コマンドレットにパイプされます。 各ジョブ トリガーには、スケジュールされたジョブを含む JobDefinition プロパティが含まれているため、変更された場合でも、トリガーはスケジュールされたジョブに関連付けられたままになります。
ジョブ トリガーは、 Where-Object
コマンドレットにパイプ処理され、 User プロパティを持つジョブ トリガーが取得されます。 選択したジョブ トリガーは、 Set-JobTrigger
コマンドレットにパイプ処理され、ユーザーが Domain01\Admin02
に変更されます。
例 4: 多数のジョブ トリガーのいずれかを変更する
Get-JobTrigger -Name "SecurityCheck"
Id Frequency Time DaysOfWeek Enabled
-- --------- ---- ---------- -------
1 Daily 4/24/2013 3:00:00 AM True
2 Weekly 4/24/2013 4:00:00 PM {Sunday} True
3 Once 4/24/2013 4:00:00 PM True
Get-JobTrigger -Name "SecurityCheck" -TriggerID 3 | Format-List -Property *
At : 4/24/2012 4:00:00 PM
DaysOfWeek :
Interval : 1
Frequency : Once
RandomDelay : 00:00:00
RepetitionInterval : 01:00:00
RepetitionDuration : 1.00:00:00
User :
Id : 3
Enabled : True
JobDefinition : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
Get-JobTrigger -Name "SecurityCheck" -TriggerId 3 | Set-JobTrigger -RepetitionInterval (New-TimeSpan -Minutes 90)
Get-JobTrigger -Name "SecurityCheck" -TriggerID 3 | Format-List -Property *
At : 4/24/2012 4:00:00 PM
DaysOfWeek :
Interval : 1
Frequency : Once
RandomDelay : 00:00:00
RepetitionInterval : 01:30:00
RepetitionDuration : 1.00:00:00
User :
Id : 3
Enabled : True
JobDefinition : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
この例のコマンドは、スケジュールされたジョブの Once ジョブ トリガーの繰り返し間隔 SecurityCheck
60 分ごとに 90 分ごとに変更します。 スケジュールされたジョブSecurityCheck
には 3 つのジョブ トリガーがあるため、コマンドは Get-JobTrigger
コマンドレットの TriggerId パラメーターを使用して、変更されるジョブ トリガーを識別します。
最初のコマンドでは、 Get-JobTrigger
コマンドレットを使用して、スケジュールされたジョブのすべてのジョブ トリガー SecurityCheck
取得します。 ジョブ トリガーの ID を表示する出力では、Once ジョブ トリガーに 3
の ID があることを示します。
2 番目のコマンドでは、Get-JobTrigger
コマンドレットの TriggerID パラメーターを使用して、スケジュールされたジョブの Once トリガーSecurityCheck
取得します。 このコマンドは、 Format-List
コマンドレットにトリガーをパイプ処理し、 Once ジョブ トリガーのすべてのプロパティを表示します。 出力は、トリガーがジョブを 1 時間に 1 回開始することを示しています (RepetitionInterval は 1 時間)、1 日 (RepetitionDuration は 1 日です)。
3 番目のコマンドは、ジョブ トリガーの繰り返し間隔を 1 時間から 90 分に変更します。 このコマンドは出力を返しません。
4 番目のコマンドは、変更の効果を表示します。出力は、トリガーが 90 分 (RepetitionInterval は 1 時間 30 分) ごとに 1 日に 1 回ジョブを開始することを示しています (RepetitionDuration は 1 日です)。
パラメーター
-At
指定された日時にジョブを開始します。 DateTimeオブジェクト (Get-Date
コマンドレットが返すオブジェクトなど) または時刻に変換できる文字列 (April 19, 2012 15:00
、12/31/2013 9:00 PM
、3am
など) を入力します。
DateTime オブジェクトの要素 (秒など) を指定しない場合、ジョブ トリガーのその要素は変更されません。 元のジョブ トリガーに DateTime オブジェクトが含まれていない場合、要素を省略すると、ジョブ トリガーは現在の日時の対応する要素で作成されます。
Once パラメーターを使用する場合は、At パラメーターの値を特定の日時に設定します。 DateTime オブジェクトの既定の日付は現在の日付であるため、明示的な日付を指定せずに現在の時刻より前の時刻を設定すると、過去の時刻のジョブ トリガーが発生します。
DateTime オブジェクト、および DateTime オブジェクトに変換される文字列は、コントロール パネルの地域と言語でローカル コンピューターに対して選択された日付と時刻の形式と互換性を持つよう自動的に調整されます。
型: | DateTime |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-AtLogOn
指定されたユーザーがコンピューターにログオンしたときに、スケジュールされたジョブを開始します。 ユーザーを指定するには、 User パラメーターを使用します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-AtStartup
Windows の起動時に、スケジュールされたジョブを開始します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Daily
日単位の定期的なジョブ スケジュールを指定します。 スケジュールの詳細を指定するには、 Daily パラメーター セット内の他のパラメーターを使用します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-DaysInterval
日単位のスケジュールの実行間隔を日数で指定します。 たとえば、 3
の値を指定すると、スケジュールされたジョブが 1
日、 4
日、 7
日などに開始されます。 既定値は 1
です。
型: | Int32 |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-DaysOfWeek
週単位でスケジュールされたジョブを実行する曜日を指定します。 Monday
、Thursday
、整数0
-6
などの日の名前を入力します。ここで、0
は日曜日を表し、毎日を表すアスタリスク (*
) を入力します。 このパラメーターは、 Weekly パラメーター セットで必要です。
ジョブ トリガーでは、曜日名は整数値に変換されます。 コマンドで日の名前を引用符で囲む場合は、各日の名前を個別の引用符 ( "Monday", "Tuesday"
など) で囲みます。 複数の曜日名を 1 つの引用符のペアで囲んだ場合は、対応する整数値が合計されます。 たとえば、 "Monday, Tuesday"
(1 + 2
) の場合、値は Wednesday
(3
) になります。
型: | DayOfWeek[] |
指定可能な値: | Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-InputObject
ジョブ トリガーを指定します。 ScheduledJobTrigger オブジェクトを含む変数を入力するか、Get-JobTrigger
コマンドなどのScheduledJobTrigger オブジェクトを取得するコマンドまたは式を入力します。
ScheduledJobTrigger オブジェクトをパイプ処理してSet-JobTrigger
することもできます。
複数のジョブ トリガーを指定した場合、 Set-JobTrigger
はすべてのジョブ トリガーに同じ変更を加えます。
型: | ScheduledJobTrigger[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Once
定期的ではない (1 回だけ) のスケジュールを指定します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-PassThru
変更されたジョブ トリガーを返します。 既定では、このコマンドレットによる出力はありません。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-RandomDelay
スケジュールされた開始時刻のランダムな遅延を有効にし、遅延の最大値を設定します。
遅延の長さは、開始ごとに擬似ランダムに設定され、遅延なしから、このパラメーターの値で指定された時間の間で変動します。 既定値の 0 (00:00:00
) は、ランダム遅延を無効にします。
New-TimeSpan
コマンドレットによって返される timespan オブジェクトを入力するか、timespan オブジェクトに自動的に変換される<hours>:<minutes>:<seconds>
形式の値を入力します。
型: | TimeSpan |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-RepeatIndefinitely
Windows PowerShell 4.0 以降で使用できるこのパラメーターを使用すると、スケジュールされたジョブを無期限に繰り返し実行するために、RepetitionDuration パラメーターに TimeSpan.MaxValue 値を指定する必要がなくなります。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-RepetitionDuration
指定された期間を過ぎるまでジョブを繰り返し実行します。 繰り返し頻度は、 RepetitionInterval パラメーターの値によって決まります。 たとえば、 RepetitionInterval の値が 5 分で、 RepetitionDuration の値が 2 時間の場合、ジョブは 5 分ごとに 2 時間トリガーされます。
New-TimeSpan
コマンドレットが返す timespan オブジェクトや、1:05:30
などの timespan オブジェクトに変換できる文字列など、timespan オブジェクトを入力します。
ジョブを無期限に実行するには、代わりに RepeatIndefinitely パラメーターを追加します。
ジョブ トリガーの繰り返し期間が経過する前にジョブを停止するには、 RepetitionDuration 値を 0 (0
) に設定します。
Once ジョブ トリガーの繰り返し期間または繰り返し間隔を変更するには、コマンドに RepetitionInterval パラメーターと RepetitionDuration パラメーターの両方を含める必要があります。 他の種類のジョブ トリガーの繰り返し期間または繰り返し間隔を変更するには、コマンドに Once、 At、 RepetitionInterval および RepetitionDuration パラメーターを含める必要があります。
型: | TimeSpan |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-RepetitionInterval
ジョブは、指定された時間間隔で繰り返し実行されます。 たとえば、このパラメーターの値が 2 時間の場合、ジョブは 2 時間おきにトリガーされます。 既定値の 0
では、ジョブは繰り返されません。
New-TimeSpan
コマンドレットが返す timespan オブジェクトや、1:05:30
などの timespan オブジェクトに変換できる文字列など、timespan オブジェクトを入力します。
Once ジョブ トリガーの繰り返し期間または繰り返し間隔を変更するには、コマンドに RepetitionInterval パラメーターと RepetitionDuration パラメーターの両方を含める必要があります。 他の種類のジョブ トリガーの繰り返し期間または繰り返し間隔を変更するには、コマンドに Once、 At、 RepetitionInterval および RepetitionDuration パラメーターを含める必要があります。
型: | TimeSpan |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-User
スケジュールされたジョブの AtLogon 開始をトリガーするユーザーを指定します。 ユーザーの名前を <UserName>
または <Domain>\<Username>
形式で入力するか、アスタリスク (*
) を入力してすべてのユーザーを表します。 既定値は、すべてのユーザーです。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Weekly
週単位の定期的なジョブ スケジュールを指定します。 スケジュールの詳細を指定するには、 Weekly パラメーター セット内の他のパラメーターを使用します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-WeeksInterval
週単位のジョブ スケジュールの実行間隔を週数で指定します。 たとえば、 3
の値を指定すると、スケジュールされたジョブは、週 1
、 4
、 7
などによって開始されます。 既定値は 1
です。
型: | Int32 |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
ジョブ トリガーをこのコマンドレットにパイプできます。
出力
None
既定では、このコマンドレットは出力を返しません。
PassThru パラメーターを使用すると、このコマンドレットは変更されたジョブ トリガーを返します。
メモ
- ジョブ トリガーには、スケジュールされたジョブに関連付ける JobDefinition プロパティがあります。 スケジュールされたジョブのジョブ トリガーを変更すると、ジョブが変更されます。 スケジュールされたジョブに変更されたトリガーを適用するために、
Set-ScheduledJob
コマンドを使用する必要はありません。
関連リンク
- Add-JobTrigger
- Disable-JobTrigger
- Disable-ScheduledJob
- Enable-JobTrigger
- Enable-ScheduledJob
- Get-JobTrigger
- Get-ScheduledJob
- Get-ScheduledJobOption
- New-JobTrigger
- New-ScheduledJobOption
- Register-ScheduledJob
- Remove-JobTrigger
- Set-JobTrigger
- Set-ScheduledJob
- Set-ScheduledJobOption
- Unregister-ScheduledJob
PowerShell