前提・実現したいこと
以下powershellの処理がたまに「処理が途中で停止」あるいは「一定時間経過後に処理される」場合があります。
安定して処理できるようにしたいと思っております。
発生している問題・エラーメッセージ
上記に記載しました通り、たまに「処理が途中で停止」あるいは「一定時間経過後に処理される」場合があります。
処理停止箇所は、ソースコードの以下部分になります。
■処理停止箇所 >$ObjC = Start-Process .\CombineText.exe -WindowStyle Hidden -PassThru -Wait ■エラーメッセージ エラーにはならないため、メッセージは特にありません。
該当のソースコード
powershell
1$JobA_DataDel = { 2$ObjA = Start-Process .\DataDel.ps1 -WindowStyle Hidden -PassThru -Wait 3} 4 5$JobB_GetData = { 6$ObjB = Start-Process .\GetData1.exe -WindowStyle Hidden -PassThru -Wait 7 8Copy-Item .\Config_DivideText_1.xlsx ..\Config_DivideText.xlsx 9Start-Sleep -s 3 10$ObjB = Start-Process .\DivideText.exe -WindowStyle Hidden -PassThru -Wait 11} 12 13$JobC_GetData = { 14Copy-Item .\Config_GetData2_1.xlsx ..\Config_GetData2.xlsx 15Start-Sleep -s 3 16$ObjC = Start-Process .\GetData2.exe -WindowStyle Hidden -PassThru -Wait 17 18Copy-Item .\Config_CombineText_1.xlsx ..\Config_CombineText.xlsx 19Start-Sleep -s 3 20$ObjC = Start-Process .\CombineText.exe -WindowStyle Hidden -PassThru -Wait 21} 22 23## ★Job_1 24Start-Job -Name "JobA_DataDel" $JobA_DataDel 25Get-Job -State Running | Wait-Job | Receive-Job 26Remove-Job -Name "JobA_DataDel" 27 28## ★Job_2 29Start-Job -Name "JobB_GetData" $JobB_GetData 30Start-Job -Name "JobC_GetData" $JobC_GetData 31Get-Job -State Running | Wait-Job | Receive-Job 32Remove-Job -Name "JobB_GetData" 33Remove-Job -Name "JobC_GetData" 34 35## ★Job_3 36(省略) 37 38## ★Job_4 39(省略) 40
試したこと
PCの実行環境の問題かと思い、別PCでも実行しましたが、状況は変わりませんでした。
補足情報(FW/ツールのバージョンなど)
Windows10
PSVersion:5.1.17763.1490
CombineText.exe が止まっているように見えますが。
ご回答ありがとうございます。
ちょっと理解不足で申し訳ないのですが、止まっているとは具体的には以下の「-Wait」の部分を
除外すればよいということでしょうか。
この後に後続処理があるため、「-Wait」を入れておりました。「-Wait」を除外しても、CombineText.exeが終了後に後続処理が走るようになりますか?
>$ObjC = Start-Process .\CombineText.exe -WindowStyle Hidden -PassThru -Wait
-Wait をつけると、CombineText.exe が終了するまで停止します。つまり CombineText.exe が終了しないから停止しているということでしょう。
>-Wait をつけると、CombineText.exe が終了するまで停止します。
↑これが目的でして、CombineText.exeの終了後にJob_3を実行させたいのです。
基本的には期待通りに動くのですが、たまにここで止まってしまいます。
※先ほど「-Wait」を除外して実行してみましたが、CombineText.exeの終了を待たずに
Job3が動いてしまいました。
だから、CombineText が終了せず止まっているんでしょう。
CombineText がどんな仕様か知りませんが、アプリケーションはウィンドウが閉じてもすぐに終了するとは限りません。タスクマネージャーで確認してみたらどうですか?
すみません。終了しないから、後続に進まないと言われているんですね。
なぜかCombineTextが開始すらしないんです。開始しても、一時間ほど経過後に開始されます。
CombineText の方を確かめてみてください。それと、他のアプリケーションでも同じように開始しないかどうかも。
ありがとうございます。承知しました、確認してみます。
あなたの回答
tips
プレビュー