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 モジュールの About トピックを参照してください。
PSScheduledJob モジュールをインポートし、「Get-Help about_Scheduled*
」と入力するか、about_Scheduled_Jobsを参照してください。
このコマンドレットは、Windows PowerShell 3.0 で導入されました。
例
例 1: ジョブが実行するスクリプトを変更する
PS C:\> Get-ScheduledJob -Name "Inventory"
Id Name Triggers Command Enabled
-- ---- -------- ------- -------
1 Inventory {1} C:\Scripts\Get-Inventory.ps1 True
The second command uses the Get-ScheduledJob cmdlet to get the Inventory scheduled job. A pipeline operator (|) sends the scheduled job to the **Set-ScheduledJob** cmdlet. The **Set-ScheduledJob** cmdlet uses the *Script* parameter to specify a new script, Get-FullInventory.ps1. The command uses the *Passthru* parameter to return the scheduled job after the change.
PS C:\> 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: スケジュールされたジョブの実行履歴を削除する
PS C:\> Get-ScheduledJob BackupArchive | Set-ScheduledJob -ClearExecutionHistory
このコマンドは、BackupArchive スケジュール・ジョブの現在の実行履歴と保存されたジョブ結果を削除します。
このコマンドでは、Get-ScheduledJob コマンドレットを使用して、スケジュールされた BackupArchive ジョブを取得します。 パイプライン演算子 (|) は、ジョブを Set-ScheduledJob コマンドレットに送信して変更します。 Set-ScheduledJob コマンドレットは、ClearExecutionHistory パラメーターを使用して、実行履歴と保存された結果を削除します。
スケジュールされたジョブの実行履歴と保存されたジョブ結果の詳細については、「about_Scheduled_Jobs」を参照してください。
例 3: リモート コンピューターでスケジュールされたジョブを変更する
PS C:\> Invoke-Command -Computer "Server01, Server02" -ScriptBlock {Get-ScheduledJob | Set-ScheduledJob -InitializationScript \\SrvA\Scripts\SetForRun.ps1}
このコマンドは、Server01 および Server02 コンピュータ上のすべてのスケジュールされたジョブの初期化スクリプトを変更します。
このコマンドでは、Invoke-Command コマンドレットを使用して、Server01 コンピューターと Server02 コンピューターでコマンドを実行します。
remote コマンドは、コンピューター上のすべてのスケジュールされたジョブを取得する Get-ScheduledJob コマンドで始まります。 スケジュールされたジョブは Set-ScheduledJob コマンドレットにパイプ処理され、初期化スクリプトが に変更されます SetForRun.ps1。
パラメーター
-ArgumentList
FilePath パラメーターで指定されたスクリプトのパラメーター、または ScriptBlock パラメーターで指定されたコマンドの値を指定します。
型: | Object[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Authentication
ユーザーの資格情報を認証するために使用するメカニズムを指定します。 このパラメーターに使用できる値は次のとおりです。
- 既定値
- ベーシック
- クレドスプ
- ダイジェスト
- Kerberos
- 交渉する
- NegotiateWithImplicitCredential(インプリシットクレデンシャルで交渉する)
既定値は Default です。 このパラメーターの値の詳細については、MSDN ライブラリ AuthenticationMechanism 列挙 を参照してください。
注意: Credential Security Support Provider (CredSSP) 認証は、ユーザーの資格情報が認証されるリモート コンピュータに渡され、リモート ネットワーク共有へのアクセスなど、複数のリソースで認証を必要とするコマンド用に設計されています。 このメカニズムにより、リモート操作のセキュリティ リスクが高まります。 リモート コンピューターが侵害された場合、それに渡される資格情報を使用してネットワーク セッションを制御できます。
型: | AuthenticationMechanism |
指定可能な値: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
配置: | Named |
規定値: | Default |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-ClearExecutionHistory
スケジュールされたジョブの現在の実行履歴と保存されている結果を削除します。
ジョブの実行履歴とジョブの結果は、スケジュールされたジョブと共に、ジョブが作成されたコンピューターの $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs ディレクトリに保存されます。 実行履歴を表示するには、Get-Job コマンドレットを使用します。 ジョブの結果を取得するには、Receive-Job コマンドレットを使用します。
このパラメーターによって、タスク スケジューラから Windows イベント ログに書き込まれたイベントが影響を受けることはありません。また、Windows PowerShell がジョブの結果の保存を停止することもありません。 保存されるジョブ結果の数を管理するには、 MaxResultCount パラメーターを使用します。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Credential
スケジュールされたジョブを実行するアクセス許可を持つユーザー アカウントを指定します。 既定値は現在のユーザーです。
User01 や Domain01\User01 などのユーザー名を入力するか、Get-Credential コマンドレットの PSCredential オブジェクトを入力します。 ユーザー名のみを入力すると、パスワードの入力を促すメッセージが表示されます。
型: | PSCredential |
配置: | Named |
規定値: | Current user |
必須: | 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 は、スケジュールされたジョブのトリガーされた各インスタンスの実行履歴と結果をディスクに保存します。 このパラメーターの値は、このスケジュールされたジョブに対して保存されるジョブ インスタンスの結果の数を決定します。 ジョブ インスタンスの結果の数がこの値を超えると、Windows PowerShell は、最も古いジョブ インスタンスの結果を削除して、最新のジョブ インスタンスの結果を確認できます。
ジョブの実行履歴とジョブの結果は、ジョブが作成されたコンピューター上の $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp> ディレクトリに保存されます。 実行履歴を表示するには、Get-Job コマンドレットを使用します。 ジョブの結果を取得するには、Receive-Job コマンドレットを使用します。
MaxResultCount パラメーターは、スケジュールされたジョブの ExecutionHistoryLength プロパティの値を設定します。
現在の実行履歴とジョブの結果を削除するには、 ClearExecutionHistory パラメーターを使用します。
型: | Int32 |
配置: | Named |
規定値: | 32 |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Name
スケジュールされたジョブの新しい名前とスケジュールされたジョブのインスタンスを指定します。 名前は、ローカル コンピューター上で一意である必要があります。
変更するスケジュールされたジョブを識別するには、 InputObject パラメーターを使用するか、スケジュールされたジョブを Get-ScheduledJob から Set-ScheduledJob にパイプします。
このパラメーターによって、ディスク上のジョブ インスタンスの名前が変更されることはありません。 このコマンドが完了した後に開始されるジョブ インスタンスのみが影響を受けます。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-PassThru
作業中のアイテムを表すオブジェクトを返します。 既定では、このコマンドレットは出力を生成しません。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-RunAs32
スケジュールされたジョブを 32 ビット プロセスで実行します。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | 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
スケジュールされたジョブのトリガーを指定します。 scheduledJobTrigger オブジェクト (New-JobTrigger コマンドレットが返すオブジェクトなど) またはジョブ トリガーのキーと値のハッシュ テーブルを 1 つ以上入力します。
ジョブ トリガーは、スケジュールされたジョブを、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 |
入力
スケジュールされたジョブを Set-ScheduledJob にパイプできます。
出力
None or Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
Passthru パラメーターを使用すると、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