次の方法で共有


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 にパイプ処理するか、トリガーを変数に保存し、Set-JobTrigger コマンドレットの InputObject パラメーターを使用してトリガーを識別します。 Set-JobTrigger の残りのパラメーターを使用して、ジョブ トリガーを変更します。

ジョブ トリガーの種類 (毎日または毎週のトリガーから AtLogon トリガーに変更するなど) を変更すると、元のトリガー プロパティが削除されます。 ただし、週単位のトリガーの曜日の変更など、トリガーの種類ではなく、値を変更した場合は、指定したプロパティのみが変更されます。 元のジョブ トリガーの他のすべてのプロパティは保持されます。

Set-JobTrigger は、Windows PowerShell に含まれる PSScheduledJob モジュール内のジョブ スケジューリング コマンドレットのコレクションの 1 つです。

スケジュールされたジョブの詳細については、PSScheduledJob モジュールの About トピックを参照してください。 PSScheduledJob モジュールをインポートし、「Get-Help about_Scheduled*」と入力するか、about_Scheduled_Jobsを参照してください。

このコマンドレットは、Windows PowerShell 3.0 で導入されました。

例 1: ジョブ トリガーの日数を変更する

PS C:\> Get-JobTrigger -Name "DeployPackage"
Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Weekly          9/29/2011 12:00:00 AM  {Wednesday, Saturday}   True

The second command uses the Get-JobTrigger cmdlet to get the job trigger of the DeployPackage scheduled job. A pipeline operator (|) sends the trigger to the **Set-JobTrigger** cmdlet, which changes the job trigger so that it starts the DeployPackage job on Wednesdays and Sundays. The command uses the *Passthru* parameter to return the trigger after the change.
PS C:\> 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: ジョブ トリガーの種類を変更する

PS C:\> Get-JobTrigger -Name "Inventory"
Id         Frequency       Time                   DaysOfWeek              Enabled
--         ---------       ----                   ----------              -------
1          Daily           9/27/2011 11:00:00 PM                          True
2          AtStartup                                                      True

The second command uses the **Get-JobTrigger** cmdlet to get the *AtStartup* job trigger of the Inventory job. The command uses the *TriggerID* parameter to identify the job trigger. A pipeline operator (|) sends the job trigger to the **Set-JobTrigger** cmdlet, which changes it to a weekly job trigger that runs every four weeks on Monday at midnight. The command uses the *Passthru* parameter to return the trigger after the change.
PS C:\> 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

この例では、ジョブを開始するジョブ トリガーの種類を変更する方法を示します。 この例のコマンドは、AtStartup ジョブ・トリガーを週次トリガーに置き換えます。

最初のコマンドでは、Get-JobTrigger コマンドレットを使用して、Inventory スケジュールされたジョブのジョブ トリガーを取得します。 出力には、ジョブに 1 日あたりのトリガーと AtStartup トリガーが 2 つあることが示されています。

このコマンドは必須ではありません。トリガーの変更の結果を表示するためにのみ含まれています。

例 3: リモート ジョブ トリガーでユーザーを変更する

PS C:\> Invoke-Command -ComputerName "Server01" -ScriptBlock {Get-ScheduledJob | Get-JobTrigger | Where-Object {$_.User} | Set-JobTrigger -User "Domain01/Admin02"}

このコマンドは、Server01 コンピューター上のスケジュールされたジョブのすべての AtLogon ジョブ トリガーのユーザーを変更します。

このコマンドでは、Invoke-Command コマンドレットを使用して Server01 コンピューターでコマンドを実行します。

remote コマンドは、コンピューター上のすべてのスケジュールされたジョブを取得する Get-ScheduledJob コマンドで始まります。 スケジュールされたジョブは Get-JobTrigger コマンドレットにパイプ処理され、スケジュールされたジョブのジョブ トリガーが取得されます。 各ジョブ トリガーには、スケジュールされたジョブを含む JobDefinition プロパティが含まれているため、トリガーは変更された場合でもスケジュールされたジョブに関連付けられたままになります。

ジョブ トリガーは Where-Object コマンドレットにパイプ処理され、User プロパティを持つジョブ トリガーが取得されます。 選択したジョブ トリガーは Set-JobTrigger コマンドレットにパイプ処理され、ユーザーは Domain01\Admin02 に変更されます。

例 4: 多数のジョブ トリガーのいずれかを変更する

PS C:\> 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

The second command uses the **TriggerID** parameter of the **Get-JobTrigger** cmdlet to get the *Once* trigger of the SecurityCheck scheduled job. The command pipes the trigger to the Format-List cmdlet, which displays all of the properties of the *Once* job trigger.The output shows that the trigger starts the job once every hour (RepetitionInterval = 1 hour) for one day (RepetitionDuration = 1 day).
PS C:\> 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

The third command changes the repetition interval of the job trigger from one hour to 90 minutes. The command does not return any output.
PS C:\> Get-JobTrigger -Name "SecurityCheck" -TriggerId 3 | Set-JobTrigger -RepetitionInterval (New-TimeSpan -Minutes 90)

The fourth command displays the effect of the change.The output shows that the trigger starts the job once every 90 minutes (RepetitionInterval = 1 hour, 30 minutes) for one day (RepetitionDuration = 1 day).
PS C:\> 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

この例のコマンドは、SecurityCheck スケジュール済みジョブの Once ジョブ・トリガーの繰り返し間隔を 60 分ごとから 90 分ごとに変更します。 SecurityCheck スケジュールされたジョブには 3 つのジョブ トリガーがあるため、コマンドは Get-JobTrigger コマンドレットの TriggerId パラメーターを使用して、変更されるジョブ トリガーを識別します。

最初のコマンドでは、 Get-JobTrigger コマンドレットを使用して、SecurityCheck スケジュールされたジョブのすべてのジョブ トリガーを取得します。 ジョブ トリガーの ID を表示する出力は、 Once ジョブ トリガーの ID が 3 であることを示しています。

パラメーター

-At

指定した日時にジョブを開始します。 Get-Date コマンドレットから返される DateTime オブジェクト、または時刻に変換できる文字列 ("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
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-AtStartup

Windows の起動時にスケジュールされたジョブを開始します。

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

-Daily

定期的な毎日のジョブ スケジュールを指定します。 スケジュールの詳細を指定するには、Daily パラメーター セットの他のパラメーターを使用します。

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

-DaysInterval

1 日のスケジュールで出現する間隔の日数を指定します。 たとえば、値 3 を指定すると、スケジュールされたジョブは 1 日目、4 日目、7 日目などに開始されます。 既定値は 1 です。

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

-DaysOfWeek

毎週スケジュールされたジョブを実行する曜日を指定します。 Monday、Thursday、0-6 の整数 (0 は日曜日を表す)、または毎日を表すアスタリスク (*) などの曜日名を入力します。 このパラメーターは、Weekly パラメーター セットで必須です。

日の名前は、ジョブ トリガーの整数値に変換されます。 コマンドで曜日名を引用符で囲む場合は、各曜日名を別々の引用符で囲みます (例: "Monday"、"Tuesday")。 複数の日の名前を単一引用符のペアで囲む場合、対応する整数値が合計されます。 たとえば、"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
規定値:False
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-PassThru

変更されたジョブ トリガーを返します。 既定では、このコマンドレットは出力を生成しません。

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

-RandomDelay

スケジュールされた開始時刻に開始するランダム遅延を有効にし、最大遅延値を設定します。 遅延の長さは、開始ごとに擬似ランダムに設定され、遅延なしからこのパラメーターの値で指定された時間まで変化します。 デフォルト値の 0 (00:00:00) は、ランダム遅延を無効にします。

New-TimeSpan コマンドレットによって返されるオブジェクトなどの timespan オブジェクトを入力するか、 <hours>:<minutes>:<seconds> 形式で値を入力します。この形式は、自動的に timespan オブジェクトに変換されます。

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

-RepeatIndefinitely

Windows PowerShell 4.0 以降で使用できるこのパラメーターを使用すると、スケジュールされたジョブを無期限に繰り返し実行するために、の RepeatedDuration パラメーターに TimeSpan.MaxValue 値を指定する必要がなくなります。

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

-RepetitionDuration

指定した時間が経過するまでジョブを繰り返します。 繰り返し頻度は、の繰り返し間隔 パラメーターの値によって決まります。 たとえば、の RepetitionInterval の値が 5 分で、の繰り返し期間 の値が 2 時間の場合、ジョブは 5 分ごとに 2 時間トリガーされます。

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

ジョブを無期限に実行するには、代わりに RepeatIn 無期限 パラメーター 追加します。

ジョブ・トリガーの繰り返し期間が経過する前にジョブを停止するには、 RepetitionDuration 値をゼロ (0) に設定します。

Once ジョブ トリガーの繰り返し期間または繰り返し間隔を変更するには、コマンドに RepetitionInterval パラメーターと RepetitionDuration パラメーターの両方を含める必要があります。 他の種類のジョブ トリガーの繰り返し期間または繰り返し間隔を変更するには、コマンドに OnceAtRepetitionInterval および RepetitionDuration パラメーターを含める必要があります。

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

-RepetitionInterval

指定した時間間隔でジョブを繰り返します。 たとえば、このパラメーターの値が 2 時間の場合、ジョブは 2 時間ごとにトリガーされます。 デフォルト値の 0 では、ジョブは繰り返されません。

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

Once ジョブ トリガーの繰り返し期間または繰り返し間隔を変更するには、コマンドに RepetitionInterval パラメーターと RepetitionDuration パラメーターの両方を含める必要があります。 他の種類のジョブ トリガーの繰り返し期間または繰り返し間隔を変更するには、コマンドに OnceAtRepetitionInterval および RepetitionDuration パラメーターを含める必要があります。

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

-User

スケジュールされたジョブの開始 AtLogon をトリガーするユーザーを指定します。 ユーザーの名前を <UserName> または <Domain\Username> の形式で入力するか、すべてのユーザーを表すアスタリスク (*) を入力します。 既定値はすべてのユーザーです。

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

-Weekly

定期的な毎週のジョブ スケジュールを指定します。 スケジュールの詳細を指定するには、週次 パラメーター セットの他のパラメーターを使用します。

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

-WeeksInterval

週単位のジョブ スケジュールで出現する間隔を週数で指定します。 たとえば、値 3 を指定すると、スケジュールされたジョブは第 1 週、第 4 週、第 7 週などに開始されます。 既定値は 1 です。

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

入力

ScheduledJobTrigger

複数のジョブ トリガーを Set-JobTrigger にパイプ処理できます。

出力

None or Microsoft.PowerShell.ScheduledJob.ScheduledJobTrigger

Passthru パラメーターを使用すると、Set-JobTrigger は変更されたジョブ トリガーを返します。 それ以外の場合、このコマンドレットは出力を生成しません。

メモ

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