次の方法で共有


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 ジョブ トリガーに 3ID があることを示します。

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:0012/31/2013 9:00 PM3amなど) を入力します。

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

週単位でスケジュールされたジョブを実行する曜日を指定します。 MondayThursday、整数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 パラメーターの両方を含める必要があります。 他の種類のジョブ トリガーの繰り返し期間または繰り返し間隔を変更するには、コマンドに OnceAtRepetitionInterval および RepetitionDuration パラメーターを含める必要があります。

型:TimeSpan
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-RepetitionInterval

ジョブは、指定された時間間隔で繰り返し実行されます。 たとえば、このパラメーターの値が 2 時間の場合、ジョブは 2 時間おきにトリガーされます。 既定値の 0 では、ジョブは繰り返されません。

New-TimeSpan コマンドレットが返す timespan オブジェクトや、1:05:30などの timespan オブジェクトに変換できる文字列など、timespan オブジェクトを入力します。

Once ジョブ トリガーの繰り返し期間または繰り返し間隔を変更するには、コマンドに RepetitionInterval パラメーターと RepetitionDuration パラメーターの両方を含める必要があります。 他の種類のジョブ トリガーの繰り返し期間または繰り返し間隔を変更するには、コマンドに OnceAtRepetitionInterval および 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 の値を指定すると、スケジュールされたジョブは、週 147 などによって開始されます。 既定値は 1 です。

型:Int32
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

ScheduledJobTrigger

ジョブ トリガーをこのコマンドレットにパイプできます。

出力

None

既定では、このコマンドレットは出力を返しません。

ScheduledJobTrigger

PassThru パラメーターを使用すると、このコマンドレットは変更されたジョブ トリガーを返します。

メモ

  • ジョブ トリガーには、スケジュールされたジョブに関連付ける JobDefinition プロパティがあります。 スケジュールされたジョブのジョブ トリガーを変更すると、ジョブが変更されます。 スケジュールされたジョブに変更されたトリガーを適用するために、 Set-ScheduledJob コマンドを使用する必要はありません。