about_Scheduled_Jobs

簡単な説明

スケジュールされたジョブについて説明し、PowerShell と タスク スケジューラ でスケジュールされたジョブを使用および管理する方法について説明します。

長い説明

PowerShell のスケジュールされたジョブは、PowerShell バックグラウンド ジョブと複数のタスクを組み合タスク スケジューラです。

PowerShell バックグラウンド ジョブと同様に、スケジュールされたジョブはバックグラウンドで非同期的に実行されます。 実行されたスケジュールされたジョブのインスタンスStart-Jobは、 などのジョブ コマンドレットを使用してGet-Job``Stop-Job管理できますReceive-Job

スケジュールタスク スケジューラタスクと同様に、スケジュールされたジョブはディスクに保存されます。 タスク スケジューラ でジョブを表示および管理したり、必要に応じて有効または無効にしたり、それらを実行したり、テンプレートとして使用したり、ジョブを開始するための 1 回限りまたは定期的なスケジュールを確立したり、ジョブを開始する条件を設定することができます。

さらに、スケジュールされたジョブ インスタンスの結果は簡単にアクセスできる形式でディスクに保存され、ジョブ出力の実行中のログが提供されます。 スケジュールされたジョブには、それらを管理するための一連のコマンドレットがカスタマイズされています。 コマンドレットを使用すると、スケジュールされたジョブ、ジョブ トリガー、ジョブ オプションを作成、編集、管理、無効化、再び有効にできます。

この包括的で柔軟なツール セットにより、スケジュールされたジョブは、多くのプロフェッショナルな PowerShell IT ソリューションの不可欠なコンポーネントになります。

スケジュールされたジョブ コマンドレットは、PowerShell と一緒にインストールされる PSScheduledJob モジュールに含まれています。 このモジュールは PowerShell 3.0 で導入され、PowerShell 3.0 以降のバージョンの PowerShell で動作します。 PSScheduledJob モジュールに含まれているコマンドレットの詳細については、「PSScheduledJob」を参照してください

PowerShell バックグラウンド ジョブの詳細については、次のページを about_Jobs

の詳細については、「タスク スケジューラ」 をタスク スケジューラ

注意

PowerShell のスケジュールされたジョブを表示および管理するには、タスク スケジューラ。 PowerShell ジョブとスケジュールされたジョブ コマンドレットは、PowerShell で作成されたスケジュールされたジョブでのみ機能します。

クイック スタート

この例では、毎日午前 3 時に開始し、 コマンドレットを実行するスケジュールされたジョブを作成 Get-Process します。 コンピューターがバッテリで実行されている場合でも、ジョブが開始されます。

$trigger = New-JobTrigger -Daily -At 3AM
$options = New-ScheduledJobOption -StartIfOnBattery
Register-ScheduledJob -Name ProcessJob -ScriptBlock {Get-Process} `
-Trigger $trigger -ScheduledJobOption $options

コマンドレット Get-ScheduledJob は、ローカル コンピューター上のスケジュールされたジョブを取得します。

Get-ScheduledJob
Id         Name            Triggers        Command            Enabled
--         ----            --------        -------            -------
7          ProcessJob      {1}             Get-Process        True

Get-JobTrigger は ProcessJob のジョブ トリガーを 取得します。 トリガーはスケジュールされたジョブに保存されるので、入力パラメーターはトリガーではなくスケジュールされたジョブを指定します。

Get-JobTrigger -Name ProcessJob
Id         Frequency       Time                   DaysOfWeek        Enabled
--         ---------       ----                   ----------        -------
1          Daily           11/5/2011 3:00:00 AM                     True

この例では、 コマンドレットの ContinueIfGoingOnBattery Set-ScheduledJob パラメーターを使用して 、ProcessJobStopIfGoingOnBatteries プロパティを False に変更します。

Get-ScheduledJob -Name ProcessJob | Set-ScheduledJobOption `
-ContinueIfGoingOnBattery -Passthru
StartIfOnBatteries     : True
StopIfGoingOnBatteries : False
WakeToRun              : True
StartIfNotIdle         : True
StopIfGoingOffIdle     : False
RestartOnIdleResume    : False
IdleDuration           : 00:10:00
IdleTimeout            : 01:00:00
ShowInTaskScheduler    : True
RunElevated            : False
RunWithoutNetwork      : True
DoNotAllowDemandStart  : False
MultipleInstancePolicy : IgnoreNew
JobDefinition          : Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

コマンドレット Get-ScheduledJob は、 スケジュールされた ProcessJob ジョブを 取得します。

Get-ScheduledJob ProcessJob
Id         Name            Triggers        Command        Enabled
--         ----            --------        -------        -------
7          ProcessJob      {1}             Get-Process    True

コマンドレット Get-Job は、これまでに実行された ProcessJob スケジュールされたジョブのすべてのインスタンスを取得します。 この Get-Job コマンドレットは、 PSScheduledJob モジュールが現在のセッションにインポートされた場合にのみ、スケジュールされたジョブを取得します。

ヒント

スケジュールされたジョブコマンドレットを使用してスケジュールされたジョブを管理しますが、ジョブ コマンドレットを使用してスケジュールされたジョブのインスタンスを管理します。

Get-Job -Name ProcessJob
Id     Name        PSJobTypeName  State    HasMoreData   Location   Command
--     ----        ------------   -----    -----------   --------   -------
45     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
46     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
47     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
48     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
49     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
50     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process
51     ProcessJob  PSScheduledJob Completed       True   localhost   Get-Process

コマンドレット Receive-Job は、スケジュールされた ProcessJob ジョブの最新のインスタンスの結果を取得します (ID = 51)。

Receive-Job -ID 51

コマンドに Receive-Job Keep パラメーターが含めなかった場合でも、ジョブの結果は、削除するか、結果の最大数を超えるまでディスクに保存されます。

ジョブの結果は、このセッションでは使用できなくなりましたが、新しいセッションを開始するか、新しい PowerShell ウィンドウを開いた場合は、ジョブの結果を再度使用できます。

次のコマンドは、 コマンドレットの DefinitionName パラメーターを使用 Start-Job して 、スケジュールされた ProcessJob ジョブを 開始します。

コマンドレットを使用して開始されるジョブ Start-Job は、スケジュールされたジョブのインスタンスではなく、標準の PowerShell バックグラウンド ジョブです。 すべてのバックグラウンド ジョブと同様に、これらのジョブは直ちに開始され、ジョブ オプションの影響を受けなかったり、ジョブ トリガーの影響を受けなかったりします。また、その出力はスケジュールされたジョブ ディレクトリの出力ディレクトリに保存されません。

Start-Job -DefinitionName ProcessJob

コマンドレット Unregister-ScheduledJob は、 ProcessJob スケジュールされたジョブ とそのジョブ インスタンスの保存された結果をすべて削除します。

Unregister-ScheduledJob ProcessJob

スケジュールされたジョブの概念

スケジュールされたジョブは、コマンドまたはスクリプトを実行します。 スケジュールされたジョブには、ジョブを開始するジョブ トリガーと、ジョブを実行するための条件を設定するジョブ オプションを含めできます。

ジョブ トリガーは、スケジュールされたジョブを自動的に開始します。 ジョブ トリガーには、1 回限りまたは定期的なスケジュールを含めるか、ユーザーがログオンしたり、ジョブを開始Windowsできます。 スケジュールされたジョブには、1 つ以上のジョブ トリガーを含め、ジョブ トリガーを作成、追加、有効化、無効化、および取得できます。

ジョブ トリガーは省略可能です。 スケジュールされたジョブをすぐに開始するには、 Start-Job cmdletを使用するか、 RunNow パラメーターをコマンドに追加 Register-ScheduledJob します。

ジョブ オプションは、スケジュールされたジョブを実行するための条件を設定します。 スケジュールされたジョブごとに、1 つのジョブ オプション オブジェクトがあります。 ジョブ オプション オブジェクトを作成および編集し、それらを 1 つ以上のスケジュールされたジョブに追加できます。

スケジュールされたジョブが開始されるたび、ジョブ インスタンスが作成されます。 PowerShell ジョブ コマンドレットを使用して、ジョブ インスタンスを表示および管理します。

スケジュールされたジョブはディスクに保存され、 ではなく コマンドレット動詞 Registerを使用します New。 XML ファイルは、 ディレクトリ内のローカル コンピューターにあります $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs

PowerShell は、スケジュールされたジョブごとにディレクトリを作成し、ジョブ コマンド、ジョブ トリガー、ジョブ オプション、ジョブの結果をスケジュールされたジョブ ディレクトリに保存します。 ジョブ トリガーとジョブ オプションは、個別にディスクに保存されません。 これらは、関連付けられているスケジュールされた各ジョブのスケジュールされたジョブ XML に保存されます。

スケジュールされたジョブ、ジョブ トリガー、およびジョブ オプションは、オブジェクトとして PowerShell に表示されます。 オブジェクトは相互にリンクされています。これにより、コマンドやスクリプトで簡単に検出して使用できます。

スケジュールされたジョブは ScheduledJobDefinition オブジェクトとして表示 されます。 ScheduledJobDefinition オブジェクトには、スケジュールされたジョブのジョブ トリガーを含む JobTriggers プロパティと、ジョブ オプションを含む Options プロパティがあります。 それぞれジョブ トリガーとジョブ オプションを表す ScheduledJobTriggers オブジェクトと ScheduledJobOptions オブジェクトには、関連付けられているスケジュールされたジョブを含む JobDefinition プロパティがあります。 この再帰的な相互接続により、スケジュールされたジョブのトリガーとオプションを簡単に見つけ、ジョブ トリガーまたはジョブ オプションが関連付けられているスケジュールされたジョブを検索、スクリプト、および表示できます。

関連項目