Batchファイルでpowershellの指定ファイルのみ強制終了したい。

実現したいこと

-PC上で一定数のpowershellスクリプトが定周期で動いています。
-ここでは3つ動いているとして、roop.sp1とmain.ps1とerror.ps2があり、roopとmainが定周期で動いています。
-このうち、mainとerrorにスクリプト開始の命令をするのはtrigger.batとします。
-main.ps1に実行を命令しますが30秒待ってもmain.ps1がrunningの場合は強制終了を行い、エラー発報のためのerror.ps1にスクリプト開始を命令します。
-この強制終了の際、roop.ps1は別途定周期で正常に動いているため、exe全体をkillするのは禁止としてファイル指定を行い落としたいです。

発生している問題・分からないこと

https://qiita.com/bill_g/questions/528b2583dce487ef1f63
上記、@bill_g (ka g)様の投稿を基にpowershellに当てはめて行いましたが、mainが強制終了できませんでした。

以降の該当ソースコードで、exe全体へは有効であることを確認しています。
(プロセスID指定でも強制終了できませんでした。)
ファイル指定での強制終了のロジックについてご教示いただけないでしょうか。

該当のソースコード

bat

1@echo off 2setlocal 3 4REM スクリプトのパスを指定 5set "mainScript=C:\Users\*****\Desktop\main.ps1" 6 7REM 制限時間(秒)を設定 8set "timeoutSeconds=30" 9 10REM PowerShellスクリプトを非同期で実行 11start "" powershell -NoProfile -ExecutionPolicy Bypass -File "%mainScript%" 12 13REM 制限時間を待機 14timeout /t %timeoutSeconds% /nobreak 15 16echo %processId% 17 18REM PowerShell強制終了 19::taskkill /f /im powershell.exe 20 21REM 指定PowerShellプロセスを強制終了 22taskkill /f /im powershell.exe /fi "WINDOWTITLE eq main.ps1*" 23 24echo mainスクリプトがrunningのため強制終了しました。 25echo エラー発報します。 26 27REM エラー発報スクリプトのパスを指定 28set "alartScript=C:\Users\*****\Desktop\error.ps1" 29 30REM PowerShellスクリプトを非同期で実行 31start "" powershell -NoProfile -ExecutionPolicy Bypass -File "%alartScript%" 32 33pause

試したこと・調べたこと

上記の詳細・結果

-Googleで調べましたが、上記参考のようにテキストファイルに対しての説明のみでした。
-それらを基にpowershellに書き換えましたがいずれも動作せずでした。

補足

powershellのスクリプトに記述ミスはないものとします。
main.ps1は検証のためにStart-Sleepで強制的にrunningにさせているとします。

コメントを投稿

0 コメント