次の方法で共有


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 モジュールの 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

入力

ScheduledJobDefinition

スケジュールされたジョブを Set-ScheduledJob にパイプできます。

出力

None or Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition

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