Share via


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-ScheduledJobTrigger パラメーターは、ジョブを開始する 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: ジョブが実行するスクリプトを変更する

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 コマンドレットを使用して、インベントリスケジュールされたジョブを取得します。 出力には、ジョブで 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 コンピューターでコマンドを実行します。

リモート コマンドは、コンピューター上のすべてのスケジュールされたジョブを取得する Get-ScheduledJob コマンドで始まります。 スケジュールされたジョブは Set-ScheduledJob コマンドレットにパイプされ、初期化スクリプトが SetForRun.ps1 に変更されます。

パラメーター

-ArgumentList

FilePath パラメーターで指定されたスクリプトのパラメーター、または ScriptBlock パラメーターで指定されたコマンドの値を指定します。

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Authentication

ユーザーの資格情報の認証に使用するメカニズムを指定します。 このパラメーターの有効値は、次のとおりです。

  • Default
  • Basic
  • Credssp
  • ダイジェスト
  • Kerberos
  • ネゴシエート
  • NegotiateWithImplicitCredential

既定値は Default です。 このパラメーターの値の詳細については、MSDN ライブラリの 「AuthenticationMechanism 列挙 」を参照してください。

注意: ユーザーの資格情報が認証されるリモート コンピューターにユーザーの資格情報が渡される資格情報セキュリティ サポート プロバイダー (CredSSP) 認証は、リモート ネットワーク共有へのアクセスなど、複数のリソースでの認証を必要とするコマンド用に設計されています。 このメカニズムを使用すると、リモート操作のセキュリティ リスクが高まります。 リモート コンピューターのセキュリティが低下している場合は、そのリモート コンピューターに渡される資格情報を使用してネットワーク セッションが制御される場合があります。

Type:AuthenticationMechanism
Accepted values:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Position:Named
Default value:Default
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ClearExecutionHistory

スケジュールされたジョブの現在の実行履歴と保存されている結果を削除します。

ジョブの実行履歴とジョブの結果は、スケジュールされたジョブと共に、ジョブが作成されたコンピューターの $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs ディレクトリに保存されます。 実行履歴を表示するには、Get-Job コマンドレットを使用します。 ジョブの結果を取得するには、Receive-Job コマンドレットを使用します。

このパラメーターによって、タスク スケジューラから Windows イベント ログに書き込まれたイベントが影響を受けることはありません。また、Windows PowerShell がジョブの結果の保存を停止することもありません。 保存されるジョブの結果の数を管理するには、MaxResultCount パラメーターを使用します。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

スケジュールされたジョブを実行するアクセス許可を持つユーザー アカウントを指定します。 既定値は現在のユーザーです。

User01 や Domain01\User01 などのユーザー名を入力するか、 psCredential オブジェクト (Get-Credential コマンドレットのオブジェクトなど) を入力します。 ユーザー名のみを入力すると、パスワードの入力を促すメッセージが表示されます。

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FilePath

スケジュールされたジョブで実行するスクリプトを指定します。 ローカル コンピューター上の .ps1 ファイルのパスを入力します。 スクリプト パラメーターの既定値を指定するには、ArgumentList パラメーターを使用します。 スケジュールされたすべてのジョブには、ScriptBlock 値または FilePath 値が必ず設定されています。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InitializationScript

Windows PowerShell スクリプト (.ps1) の完全修飾パスを指定します。 初期化スクリプトは、ScriptBlock パラメーターで指定されたコマンドまたは FilePath パラメーターで指定されスクリプトの前に、バックグラウンド ジョブ用に作成されたセッションで実行されます。 初期化スクリプトを使用すると、ファイル、関数、またはエイリアスの追加、ディレクトリの作成、前提条件の確認など、セッションを構成することができます。

プライマリ ジョブ コマンドを実行するスクリプトを指定するには、FilePath パラメーターを使用します。

初期化スクリプトで終了しないエラーを含むエラーが生成された場合、スケジュールされたジョブの現在のインスタンスは実行されず、その状態は Failed になります。

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

変更するスケジュールされたジョブを指定します。 ScheduledJobDefinition オブジェクトを含む変数を入力するか、ScheduledJobDefinition オブジェクトを取得するコマンドまたは式 (Get-ScheduledJob コマンドなど) を入力します。 ScheduledJobDefinition オブジェクトを Set-ScheduledJob にパイプすることもできます。

複数のスケジュールされたジョブを指定すると、Set-ScheduledJob はすべてのジョブに同じ変更を加えます。

Type:ScheduledJobDefinition
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-MaxResultCount

スケジュールされたジョブに対して保持されるジョブの結果のエントリ数を指定します。 既定値は 32 です。

Windows PowerShell では、スケジュールされたジョブのトリガーされた各インスタンスの実行履歴と結果をディスクに保存します。 このパラメーターの値により、このスケジュールされたジョブに対して保存されるジョブ インスタンスの結果の数が決まります。 ジョブ インスタンスの結果の数がこの値を超えた場合は、最新のジョブ インスタンスの結果を保存するために、最も古いジョブ インスタンスの結果が削除されます。

ジョブの実行履歴とジョブの結果は、ジョブが作成されたコンピューター上の $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp> ディレクトリに保存されます。 実行履歴を表示するには、Get-Job コマンドレットを使用します。 ジョブの結果を取得するには、Receive-Job コマンドレットを使用します。

MaxResultCount パラメーターは、スケジュールされたジョブの ExecutionHistoryLength プロパティの値を設定します。

現在の実行履歴とジョブの結果を削除するには、ClearExecutionHistory パラメーターを使用します。

Type:Int32
Position:Named
Default value:32
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

スケジュールされたジョブの新しい名前とスケジュールされたジョブのインスタンスを指定します。 名前は、ローカル コンピューター上で一意である必要があります。

変更するスケジュールされたジョブを識別するには、 InputObject パラメーターを使用するか、スケジュールされたジョブを Get-ScheduledJob から Set-ScheduledJob にパイプします。

このパラメーターによって、ディスク上のジョブ インスタンスの名前が変更されることはありません。 このコマンドが完了した後に開始されるジョブ インスタンスのみが影響を受けます。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

作業中の項目を表すオブジェクトを返します。 既定では、このコマンドレットによる出力はありません。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunAs32

スケジュールされたジョブを 32 ビット プロセスで実行します。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunEvery

ジョブを実行する頻度を指定するために使用します。 たとえば、15 分ごとにジョブを実行するには、このオプションを使用します。

Type:TimeSpan
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RunNow

Set-ScheduledJob コマンドレットが実行されるとすぐにジョブを開始します。 このパラメーターを使用すると、登録後すぐにタスク スケジューラをトリガーして Windows PowerShell スクリプトを実行する必要がなくなります。また、ユーザーが開始日時を指定したトリガーを作成する必要もありません。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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}

Type:ScheduledJobOptions
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ScriptBlock

スケジュールされたジョブで実行するコマンドを指定します。 コマンドを中かっこ ({ }) で囲み、スクリプト ブロックを作成します。 コマンド パラメーターの既定値を指定するには、ArgumentList パラメーターを使用します。

すべての Register-ScheduledJob コマンドで、ScriptBlock パラメーターと FilePath パラメーターのどちらかを使用する必要があります。

Type:ScriptBlock
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Trigger

スケジュールされたジョブのトリガーを指定します。 1 つ以上の ScheduledJobTrigger オブジェクト (New-JobTrigger コマンドレットから返されるオブジェクト、ジョブ トリガーのキーと値のハッシュ テーブルなど) を入力します。

ジョブ トリガーは、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 頻度値でのみ使用されます)

}

Type:ScheduledJobTrigger[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

ScheduledJobDefinition

パイプを使用して、スケジュールされたジョブを Set-ScheduledJob に渡すことができます。

出力

None or Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

Passthru パラメーターを使用すると、Set-ScheduledJob は変更されたスケジュールされたジョブを返します。 それ以外の場合、このコマンドレットによる出力はありません。