Windows PowerShell バックグラウンド ジョブを停止します。

構文

Stop-Job [[-InstanceId] <Guid[]>] [-PassThru] [-確認] [-WhatIf] [<CommonParameters>]

Stop-Job [-Job] <Job[]> [-PassThru] [-確認] [-WhatIf] [<CommonParameters>]

Stop-Job [[-Name] <string[]>] [-PassThru] [-確認] [-WhatIf] [<CommonParameters>]

Stop-Job [-Id] <Int32[]> [-PassThru] [-確認] [-WhatIf] [<CommonParameters>]

Stop-Job [-State {<NotStarted> | <Running> | <Completed> | <Failed> | <Stopped> | <Blocked>}] [-PassThru] [-確認] [-WhatIf] [<CommonParameters>]

説明

Stop-Job コマンドレットは、進行中の Windows PowerShell バックグラウンド ジョブを停止します。このコマンドレットを使用すると、すべてのジョブを停止したり、名前、ID、インスタンス ID、または状態に基づいて選択したジョブのみを停止したりできます。また、ジョブ オブジェクトを Stop-Job に渡すことで停止することもできます。

Stop-Job を使用して、Start-Job、または Invoke-Command の AsJob パラメーターを使用して開始されたジョブを停止できます。バックグラウンド ジョブを停止すると、Windows PowerShell はジョブ キューにある保留中のすべてのタスクを完了してから、ジョブを終了します。このコマンドの送信後は、新しいタスクがキューに追加されることはありません。

このコマンドレットは、バックグラウンド ジョブを削除しません。ジョブを削除するには、Remove-Job を使用します。

パラメーター

-Id <Int32[]>

指定された ID を持つジョブを停止します。既定値は現在のセッションのすべてのジョブです。

ID は、現在のセッション内のジョブを一意に識別する整数です。InstanceId よりも覚えやすく入力も容易ですが、一意であるのは現在のセッション内のみです。1 つまたは複数の ID (コンマで区切る) を入力できます。ジョブの ID を検索するには、パラメーターを指定せずに「Get-Job」と入力します。

必須

true

位置

1

既定値

パイプライン入力を許可する

true (ByPropertyName)

ワイルドカード文字を許可する

false

-InstanceId <Guid[]>

指定されたインスタンス ID を持つジョブのみを停止します。既定値はすべてのジョブです。

インスタンス ID は、コンピューターのジョブを一意に識別する GUID です。ジョブのインスタンス ID を検索するには、Get-Job を使用します。

必須

false

位置

1

既定値

パイプライン入力を許可する

true (ByPropertyName)

ワイルドカード文字を許可する

false

-Job <Job[]>

停止するジョブを指定します。ジョブを格納する変数を入力するか、ジョブを取得するコマンドを入力します。パイプライン演算子を使用して、ジョブを Stop-Job コマンドレットに送信することもできます。既定では、Stop-Job は現在のセッションで開始されたすべてのジョブを削除します。

必須

true

位置

1

既定値

パイプライン入力を許可する

true (ByValue, ByPropertyName)

ワイルドカード文字を許可する

false

-Name <string[]>

指定されたフレンドリ名のジョブのみを停止します。ジョブ名の一覧をコンマ区切りで入力するか、ワイルドカード文字 (*) を使用してジョブ名パターンを入力します。既定では、Stop-Job は現在のセッションで作成されたすべてのジョブを停止します。

フレンドリ名が一意である保証はないため、名前を指定してジョブを停止するときには WhatIf パラメーターおよび Confirm パラメーターを使用します。

必須

false

位置

1

既定値

パイプライン入力を許可する

true (ByPropertyName)

ワイルドカード文字を許可する

true

-PassThru

新しいバックグラウンド ジョブを表すオブジェクトを返します。既定では、このコマンドレットによる出力はありません。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-State <JobState>

指定された状態にあるジョブのみを停止します。有効な値は、NotStarted、Running、Completed、Stopped、Failed、および Blocked です。

必須

false

位置

named

既定値

パイプライン入力を許可する

true (ByPropertyName)

ワイルドカード文字を許可する

false

-確認

コマンドを実行する前に確認メッセージを表示します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

-WhatIf

実際にコマンドを実行せずに、コマンドを実行すると何が起きるかを出力します。

必須

false

位置

named

既定値

パイプライン入力を許可する

false

ワイルドカード文字を許可する

false

<CommonParameters>

このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。Ô”¼š¤Ë¤Ä¤¤¤Æ¤Ï¡¢次を参照してください: about_Commonparameters.

入力と出力

入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。

入力

System.Management.Automation.RemotingJob

パイプを使用してジョブ オブジェクトを Stop-Job に渡すことができます。

出力

なし、または System.Management.Automation.RemotingJob

PassThru パラメーターが使用されると、Stop-Job はジョブ オブジェクトを返します。それ以外の場合、このコマンドレットによる出力はありません。

例 1

C:\PS>$s = new-pssession -computername Server01 -credential domain01\admin02

C:\PS> $j = invoke-command -session $s -scriptblock {start-job -scriptblock {get-eventlog system}} 

C:\PS> invoke-command -session $s -scriptblock {param($j) stop-job -job $j} -ArgumentList $j

説明
-----------
この例では、リモート コンピューター上で実行中のジョブを Stop-Job コマンドレットを使用して停止する方法を示します。

Invoke-Command を使用してリモートから Start-Job コマンドを実行することでジョブを開始したため、ジョブ オブジェクトはリモート コンピューター上に保存されています。そのため、別の Invoke-Command コマンドを使用してリモートから Stop-Job コマンドを実行する必要があります。リモート バックグラウンド ジョブの詳細については、「about_Remote_Jobs」を参照してください。

最初のコマンドは、Server01 コンピューター上に Windows PowerShell セッション (PSSession) を作成し、そのセッション オブジェクトを $s 変数に保存します。このコマンドは、ドメイン管理者の資格情報を使用します。

2 番目のコマンドは、Invoke-Command コマンドレットを使用して、セッションで Start-Job コマンドを実行します。ジョブのコマンドは、システム イベント ログのすべてのイベントを取得します。結果のジョブ オブジェクトは、$j 変数に保存されます。

3 番目のコマンドはジョブを停止します。Invoke-Command コマンドレットを使用して、Server01 上の PSSession で Stop-Job コマンドを実行します。ジョブ オブジェクトはローカル コンピューター上の変数である $j に保存されるため、コマンドは "param" キーワードを使用してローカル変数をコマンド内で宣言し、ArgumentList パラメーターを使用して変数の値を指定します。

コマンドが完了すると、ジョブは停止し、$s に保存された PSSession が使用可能になります。






例 2

C:\PS>stop-job -state failed

説明
-----------
このコマンドは、State 値が "Failed" であるすべてのジョブを停止します。






例 3

C:\PS>stop-job -name job1

説明
-----------
このコマンドは、Job1 バックグラウンド ジョブを停止します。






例 4

C:\PS>stop-job -id 1, 3, 4

説明
-----------
このコマンドは、3 つのジョブを停止します。これらのジョブは、ID により識別されます。






例 5

C:\PS>get-job | stop-job

説明
-----------
このコマンドは、現在のセッションのすべてのバックグラウンド ジョブを停止します。






例 6

C:\PS>stop-job -state blocked

説明
-----------
このコマンドは、ジョブの状態が "Blocked" であるすべてのジョブを停止します。






例 7

C:\PS>get-job | format-table ID, Name, Command, @{Label="State";Expression={$_.jobstateinfo.state}}, I
nstanceID -auto

Id Name Command                 State  InstanceId
-- ---- -------                 -----  ----------
 1 Job1 start-service schedule Running 05abb67a-2932-4bd5-b331-c0254b8d9146
 3 Job3 start-service schedule Running c03cbd45-19f3-4558-ba94-ebe41b68ad03
 5 Job5 get-service s*         Blocked e3bbfed1-9c53-401a-a2c3-a8db34336adf

C:\PS> stop-job -instanceid e3bbfed1-9c53-401a-a2c3-a8db34336adf

説明
-----------
これらのコマンドでは、インスタンス ID に基づいてジョブを停止する方法を示します。

最初のコマンドは、Get-Job コマンドを使用して、現在のセッションのジョブを取得します。このコマンドは、パイプライン演算子 (|) を使用してジョブを Format-Table コマンドに送信し、各ジョブの指定されたプロパティを表形式で表示します。表には、各ジョブのインスタンス ID が含まれます。集計プロパティを使用してジョブの状態を表示します。

2 番目のコマンドは、Stop-Job コマンドを InstanceID パラメーターと共に使用して、選択されたジョブを停止します。






例 8

C:\PS>$j = invoke-command -computername Server01 -scriptblock {get-eventlog system} -asjob

C:\PS> $j | stop-job -passthru

Id    Name    State      HasMoreData     Location         Command
--    ----    ----      -----------     --------          -------
5     Job5    Stopped    True            judithh-tablet   get-eventlog system

説明
-----------
この例では、リモート コンピューター上で実行中のジョブを Stop-Job コマンドレットを使用して停止する方法を示します。

Invoke-Command の AsJob パラメーターを使用してジョブを開始したため、ジョブはリモート コンピューターで実行されますが、ジョブ オブジェクトはローカル コンピューターに存在します。そのため、ローカルの Stop-Job コマンドを使用してジョブを停止できます。

最初のコマンドは、Invoke-Command コマンドレットを使用して、バックグラウンド ジョブを Server01 コンピューター上で開始します。このコマンドは、AsJob パラメーターを使用して、バックグラウンド ジョブとしてリモート コマンドを実行します。

このコマンドは、Start-Job によって返されるジョブ オブジェクトと同じジョブ オブジェクトを返します。このコマンドは、ジョブ オブジェクトを $j 変数に保存します。

2 番目のコマンドは、パイプライン演算子を使用して、$j 変数に保存されたジョブを Stop-Job に送信します。このコマンドは、PassThru パラメーターを使用して、ジョブ オブジェクトを返すように Stop-Job に指示します。ジョブ オブジェクトの表示で、ジョブの State が "Stopped" であることを確認します。

リモート バックグラウンド ジョブの詳細については、「about_Remote_Jobs」を参照してください。






関連項目




目次