Start-Job
コマンドレットと-FilePath
パラメーターを使用して他の PowerShell スクリプトを呼び出す (継承した) PowerShell スクリプトがあります。たとえば、何もしないスクリプトがあります。
Start-Sleep -Seconds 86400
ジョブを介して呼び出すことができるもの:
PS> Start-Job -Name "Test Job" -FilePath ".\Wait-AllDay.ps1"
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
2 Test Job BackgroundJob Running True localhost Start-Sleep...
PS> Get-Job -Id 2
State : Running
HasMoreData : True
StatusMessage :
Location : localhost
Command : Start-Sleep -Seconds (60*60*24)
JobStateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : 0c0e2c32-cbc5-4d70-b7cb-28771626cf20
Id : 2
Name : Test Job
ChildJobs : {Job3}
PSBeginTime : 25/01/2016 15:06:22
PSEndTime :
PSJobTypeName : BackgroundJob
このジョブに関連付けられているプロセスを見つけるための簡単で信頼できる方法はありますか (追加のpowershell.exeになると思います)。明らかに、これは 1 つのジョブだけでテストするのは簡単ですが、サーバー上では、これらの多くを同時に実行する場合があります。
なぜ私はこれをしたい/知りたいのですか?
私は新しい役割を担っており、さまざまなスクリプトを実行する複数のスケジュールされたタスクを持つサーバーで作業しています。これらのいくつかは、私の前任者が Start-Job を使用して呼び出すことを選択した他のスクリプトを呼び出します。これはおそらく、実行時間が長く (数時間) かかる可能性があり、並行して動作することを望んでいたためです。時折、彼らは立ち往生しているように見え、私は彼らを殺したいと思っていますが、まだ健全なものを止める危険を冒したくありません.
近い将来、これらのスクリプトのいくつかを書き直し始める可能性が高いため、この道を歩み始めたので、ジョブとプロセスをどのように一致させるかについては、おそらく単純な好奇心です。