Set-ScheduledJob
スケジュールされたジョブを変更します。
構文
Set-ScheduledJob
[-Name <String>]
[-ScriptBlock <ScriptBlock>]
[-Trigger <ScheduledJobTrigger[]>]
[-InitializationScript <ScriptBlock>]
[-RunAs32]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-ScheduledJobOption <ScheduledJobOptions>]
[-InputObject] <ScheduledJobDefinition>
[-MaxResultCount <Int32>]
[-PassThru]
[-ArgumentList <Object[]>]
[-RunNow]
[-RunEvery <TimeSpan>]
[<CommonParameters>]
Set-ScheduledJob
[-Name <String>]
[-FilePath <String>]
[-Trigger <ScheduledJobTrigger[]>]
[-InitializationScript <ScriptBlock>]
[-RunAs32]
[-Credential <PSCredential>]
[-Authentication <AuthenticationMechanism>]
[-ScheduledJobOption <ScheduledJobOptions>]
[-InputObject] <ScheduledJobDefinition>
[-MaxResultCount <Int32>]
[-PassThru]
[-ArgumentList <Object[]>]
[-RunNow]
[-RunEvery <TimeSpan>]
[<CommonParameters>]
Set-ScheduledJob
[-InputObject] <ScheduledJobDefinition>
[-ClearExecutionHistory]
[-PassThru]
[<CommonParameters>]
説明
Set-ScheduledJob
コマンドレットは、ジョブを実行するコマンドやジョブの実行に必要な資格情報など、スケジュールされたジョブのプロパティを変更します。 このコマンドレットを使用して、スケジュールされたジョブの実行履歴をクリアすることもできます。
このコマンドレットを使用するには、まず、 Get-ScheduledJob
コマンドレットを使用してスケジュールされたジョブを取得します。 次に、スケジュールされたジョブをパイプ処理して、ジョブを Set-ScheduledJob
または変数に保存し、 InputObject パラメーターを使用してジョブを識別します。 ジョブのプロパティを変更したり、実行履歴をクリアしたりするには、 Set-ScheduledJob
の残りのパラメーターを使用します。
Set-ScheduledJob
を使用してスケジュールされたジョブのトリガーとオプションを変更できますが、Add-JobTrigger
、Set-JobTrigger
、Set-ScheduledJobOption
コマンドレットを使用すると、これらのタスクを簡単に実行できます。 新しいスケジュールされたジョブを作成するには、 Register-ScheduledJob
コマンドレットを使用します。
Set-ScheduledJob
の Trigger パラメーターは、ジョブを開始する 1 つ以上のジョブ トリガーを追加します。
Trigger パラメーターは省略可能であるため、スケジュールされたジョブの作成時にトリガーを追加したり、後でジョブ トリガーを追加したり、RunNow パラメーターを追加してジョブをすぐに開始したり、Start-Job
コマンドレットを使用していつでもすぐにジョブを開始したり、トリガーされていないスケジュールされたジョブを他のジョブのテンプレートとして保存したりできます。
Set-ScheduledJob
は、Windows PowerShell に含まれる PSScheduledJob モジュールのジョブ スケジューリング コマンドレットのコレクションの 1 つです。
スケジュールされたジョブの詳細については、PSScheduledJob モジュールの概要トピックを参照してください。 PSScheduledJob モジュールをインポートし、「 Get-Help about_Scheduled*
」と入力するか、 about_Scheduled_Jobsを参照してください。
このコマンドレットは、Windows PowerShell 3.0 で導入されました。
例
例 1: ジョブが実行するスクリプトを変更する
この例では、スケジュールされたジョブで実行するスクリプトを変更する方法を示します。
Get-ScheduledJob -Name "Inventory"
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
1 Inventory {1} C:\Scripts\Get-Inventory.ps1 True
Get-ScheduledJob -Name "Inventory" | Set-ScheduledJob -FilePath "C:\Scripts\Get-FullInventory.ps1" -Passthru
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
1 Inventory {1} C:\Scripts\Get-FullInventory.ps1 True
最初のコマンドでは、 Get-ScheduledJob
コマンドレットを使用して、Inventory のスケジュールされたジョブを取得します。 出力には、ジョブで Get-Inventory.ps1 スクリプトが実行されることが示されています。
2 番目のコマンドでは、 Get-ScheduledJob
コマンドレットを使用して、Inventory のスケジュールされたジョブを取得します。 パイプライン演算子 (|
) は、スケジュールされたジョブを Set-ScheduledJob
コマンドレットに送信します。 Set-ScheduledJob
コマンドレットでは、Script パラメーターを使用して、新しいスクリプト (Get-FullInventory.ps1
) を指定します。 コマンドは、 Passthru パラメーターを使用して、変更後にスケジュールされたジョブを返します。
このコマンドは必須ではありません。スクリプトの変更の結果を表示するためにのみ含まれています。
例 2: スケジュールされたジョブの実行履歴を削除する
次の使用例は、スケジュールされたジョブの現在の実行履歴と保存されたジョブの結果を削除します。
Get-ScheduledJob BackupArchive | Set-ScheduledJob -ClearExecutionHistory
このコマンドでは、 Get-ScheduledJob
コマンドレットを使用して、BackupArchive のスケジュールされたジョブを取得します。 パイプライン演算子 (|
) は、ジョブを変更するために Set-ScheduledJob
コマンドレットに送信します。 Set-ScheduledJob
コマンドレットは、ClearExecutionHistory パラメーターを使用して、実行履歴と保存された結果を削除します。
スケジュールされたジョブの実行履歴と保存されたジョブの結果の詳細については、 about_Scheduled_Jobsを参照してください。
例 3: リモート コンピューターでスケジュールされたジョブを変更する
このコマンドは、リモート コンピューター上のすべてのスケジュールされたジョブの初期化スクリプトを変更します。
Invoke-Command -Computer "Server01, Server02" -ScriptBlock {Get-ScheduledJob |
Set-ScheduledJob -InitializationScript \\SrvA\Scripts\SetForRun.ps1}
このコマンドでは、 Invoke-Command
コマンドレットを使用して、Server01 コンピューターと Server02 コンピューターでコマンドを実行します。
リモート コマンドは、コンピューター上のすべてのスケジュールされたジョブを取得する Get-ScheduledJob
コマンドで始まります。 スケジュールされたジョブは、 Set-ScheduledJob
コマンドレットにパイプ処理され、初期化スクリプトが SetForRun.ps1
に変更されます。
パラメーター
-ArgumentList
FilePath パラメーターで指定されたスクリプトのパラメーター、または ScriptBlock パラメーターで指定されたコマンドの値を指定します。
型: | Object[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Authentication
ユーザーの資格情報の認証に使用するメカニズムを指定します。 このパラメーターの有効値は、次のとおりです。
Default
Basic
Credssp
Digest
Kerberos
Negotiate
NegotiateWithImplicitCredential
既定値は Default
です。 このパラメーターの値の詳細については、PowerShell SDK の AuthenticationMechanism 列挙型 を参照してください。
注意事項
ユーザーの資格情報が認証されるリモート コンピューターに渡される資格情報セキュリティ サポート プロバイダー (CredSSP) 認証は、リモート ネットワーク共有へのアクセスなど、複数のリソースで認証を必要とするコマンド用に設計されています。 このメカニズムを使用すると、リモート操作のセキュリティ リスクが高まります。 リモート コンピューターのセキュリティが低下している場合は、そのリモート コンピューターに渡される資格情報を使用してネットワーク セッションが制御される場合があります。
型: | AuthenticationMechanism |
指定可能な値: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ClearExecutionHistory
スケジュールされたジョブの現在の実行履歴と保存されている結果を削除します。
ジョブの実行履歴とジョブの結果は、スケジュールされたジョブと共に、ジョブが作成されたコンピューター上の $HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs
ディレクトリに保存されます。 実行履歴を表示するには、 Get-Job
コマンドレットを使用します。 ジョブの結果を取得するには、 Receive-Job
コマンドレットを使用します。
このパラメーターによって、タスク スケジューラから Windows イベント ログに書き込まれたイベントが影響を受けることはありません。また、Windows PowerShell がジョブの結果の保存を停止することもありません。 保存されるジョブ結果の数を管理するには、 MaxResultCount パラメーターを使用します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Credential
スケジュールされたジョブを実行するアクセス許可を持つユーザー アカウントを指定します。 既定値は現在のユーザーです。
User01 や Domain01\User01 などのユーザー名を入力するか、 PSCredential オブジェクト ( Get-Credential
コマンドレットのオブジェクトなど) を入力します。 ユーザー名のみを入力すると、パスワードの入力を促すメッセージが表示されます。
型: | PSCredential |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-FilePath
スケジュールされたジョブで実行するスクリプトを指定します。 ローカル コンピューター上の .ps1 ファイルのパスを入力します。 スクリプト パラメーターの既定値を指定するには、 ArgumentList パラメーターを使用します。 スケジュールされたすべてのジョブには、 ScriptBlock または FilePath 値が必要です。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-InitializationScript
Windows PowerShell スクリプト (.ps1
) への完全修飾パスを指定します。 初期化スクリプトは、 ScriptBlock パラメーターで指定されたコマンドまたは FilePath パラメーターで指定されたスクリプトの前に、バックグラウンド ジョブ用に作成されたセッションで実行されます。 初期化スクリプトを使用すると、ファイル、関数、またはエイリアスの追加、ディレクトリの作成、前提条件の確認など、セッションを構成することができます。
プライマリ ジョブ コマンドを実行するスクリプトを指定するには、 FilePath パラメーターを使用します。
初期化スクリプトで終了しないエラーを含むエラーが生成された場合、スケジュールされたジョブの現在のインスタンスは実行されず、状態は Failed になります。
型: | ScriptBlock |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-InputObject
変更するスケジュールされたジョブを指定します。 ScheduledJobDefinition オブジェクトを含む変数を入力するか、Get-ScheduledJob
コマンドなどのScheduledJobDefinition オブジェクトを取得するコマンドまたは式を入力します。 ScheduledJobDefinition オブジェクトをパイプ処理してSet-ScheduledJob
することもできます。
スケジュールされたジョブを複数指定した場合、 Set-ScheduledJob
はすべてのジョブに同じ変更を加えます。
型: | ScheduledJobDefinition |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-MaxResultCount
スケジュールされたジョブに対して保持されるジョブの結果のエントリ数を指定します。 既定値は 32 です。
Windows PowerShell では、スケジュールされたジョブのトリガーされた各インスタンスの実行履歴と結果をディスクに保存します。 このパラメーターの値により、このスケジュールされたジョブに対して保存されるジョブ インスタンスの結果の数が決まります。 ジョブ インスタンスの結果の数がこの値を超えた場合は、最新のジョブ インスタンスの結果を保存するために、最も古いジョブ インスタンスの結果が削除されます。
ジョブの実行履歴とジョブの結果は、$HOME\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp>
ジョブが作成されるコンピューター上のディレクトリ。 実行履歴を表示するには、 Get-Job
コマンドレットを使用します。 ジョブの結果を取得するには、 Receive-Job
コマンドレットを使用します。
MaxResultCount パラメーターは、スケジュールされたジョブの ExecutionHistoryLength プロパティの値を設定します。
現在の実行履歴とジョブの結果を削除するには、 ClearExecutionHistory パラメーターを使用します。
型: | Int32 |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Name
スケジュールされたジョブの新しい名前とスケジュールされたジョブのインスタンスを指定します。 名前は、ローカル コンピューター上で一意である必要があります。
変更するスケジュールされたジョブを識別するには、 InputObject パラメーターを使用するか、スケジュールされたジョブを Get-ScheduledJob
から Set-ScheduledJob
にパイプします。
このパラメーターによって、ディスク上のジョブ インスタンスの名前が変更されることはありません。 このコマンドが完了した後に開始されるジョブ インスタンスのみが影響を受けます。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-PassThru
作業中の項目を表すオブジェクトを返します。 既定では、このコマンドレットによる出力はありません。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-RunAs32
スケジュールされたジョブを 32 ビット プロセスで実行します。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-RunEvery
ジョブを実行する頻度を指定するために使用します。 たとえば、15 分ごとにジョブを実行するには、このオプションを使用します。
型: | TimeSpan |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-RunNow
Set-ScheduledJob
コマンドレットが実行されるとすぐにジョブを開始します。 このパラメーターを使用すると、登録後すぐにタスク スケジューラをトリガーして Windows PowerShell スクリプトを実行する必要がなくなります。また、ユーザーが開始日時を指定したトリガーを作成する必要もありません。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ScheduledJobOption
スケジュールされたジョブのオプションを設定します。 ScheduledJobOptions オブジェクト (New-ScheduledJobOption
コマンドレットを使用して作成するもの、ハッシュ テーブル値など) を入力します。
スケジュールされたジョブのオプションは、スケジュールされたジョブを登録するとき、または Set-ScheduledJobOption
または Set-ScheduledJob
コマンドレットを使用してオプションを設定または変更するときに設定できます。
さまざまなオプションとその既定値により、スケジュールされたジョブが実行されるかどうかとそのタイミングが決まります。 ジョブをスケジュールする前に、必ずこれらのオプションを確認してください。 スケジュールされたジョブ オプションの説明 (既定値を含む) については、 New-ScheduledJobOption
を参照してください。
ハッシュ テーブルを渡すには、次のキーを使用します。 次のハッシュ テーブルには、キーとその既定値が示されています。
@{# Power SettingsStartIfOnBattery=$False;StopIfGoingOnBattery=$True; WakeToRun=$False; # Idle SettingsStartIfNotIdle=$False; IdleDuration="00:10:00"; IdleTimeout="01:00:00"; StopIfGoingOffIdle=$True; RestartOnIdleResume=$False;# Security settingsShowInTaskScheduler=$TrueRunElevated=$False;# MiscRunWithoutNetwork=$False;DoNotAllowDemandStart=$False;MultipleInstancePolicy=IgnoreNew# Can be IgnoreNew, Parallel, Queue, StopExisting}
型: | ScheduledJobOptions |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ScriptBlock
スケジュールされたジョブで実行するコマンドを指定します。 コマンドを中かっこ ({}
) で囲み、スクリプト ブロックを作成します。 コマンド パラメーターの既定値を指定するには、 ArgumentList パラメーターを使用します。
すべての Register-ScheduledJob
コマンドでは、 ScriptBlock または FilePath パラメーターを使用する必要があります。
型: | ScriptBlock |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Trigger
スケジュールされたジョブのトリガーを指定します。 New-JobTrigger
コマンドレットから返されるオブジェクトなどの 1 つ以上のScheduledJobTrigger オブジェクト、またはジョブ トリガーのキーと値のハッシュ テーブルを入力します。
ジョブ トリガーは、スケジュールされたジョブを、1 回限りまたは定期的なスケジュールに基づいて、またはイベントが発生したときに自動的に開始します。
ジョブ トリガーは省略可能です。 スケジュールされたジョブの作成時にトリガーを追加したり、 Add-JobTrigger
または Set-ScheduledJob
コマンドレットを使用して後でトリガーを追加したり、 Start-Job
コマンドレットを使用してスケジュールされたジョブをすぐに開始したりできます。 また、ジョブ トリガーのないスケジュールされたジョブを作成し、管理することもできます。
ハッシュ テーブルを渡すには、次のキーを使用します。
@{Frequency="Once" (or Daily, Weekly, AtStartup, AtLogon);At="3am"
(または任意の有効な時刻文字列); DaysOfWeek="Monday", "Wednesday"
(または曜日名の任意の組み合わせ); Interval=2
(または任意の有効な頻度間隔); RandomDelay="30minutes"
(または任意の有効な期間の文字列); User="Domain1\User01"
(または有効なユーザー。AtLogon の頻度値でのみ使用されます)
}
型: | ScheduledJobTrigger[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
スケジュールされたジョブをこのコマンドレットにパイプできます。
出力
None
既定では、このコマンドレットは出力を返しません。
PassThru パラメーターを使用すると、このコマンドレットは変更されたスケジュールされたジョブを返します。
関連リンク
- 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