次の方法で共有


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-JobTriggerSet-JobTriggerSet-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: ジョブが実行するスクリプトを変更する

この例では、スケジュールされたジョブで実行するスクリプトを変更する方法を示します。

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

入力

ScheduledJobDefinition

スケジュールされたジョブをこのコマンドレットにパイプできます。

出力

None

既定では、このコマンドレットは出力を返しません。

ScheduledJobDefinition

PassThru パラメーターを使用すると、このコマンドレットは変更されたスケジュールされたジョブを返します。