前提・実現したいこと
タスクスケジューラにて起動させたPowershellを
日本時間17:30で強制終了させたい。
試したこと
.batのtaskkillコマンド(.ps1の名前を指定)を試しましたが終了させられません。
発生している問題・エラーメッセージ
初心者のため調べても解決できず、
調べ方についても的を得ているのか分かりません。
何卒ご教授いただきたく存じます。
検証までするのも面倒なので適当にググった結果次の情報が見つかりました。
https://qiita.com/hadacchi/items/749bcdabe44d8c5c8532
試して結果を追記してください。
アドバイスありがとうございます。
「taskkill /IM test.ps1」でタスクを終了することができませんでした。
otn さんの回答にあるとおり、ps1 ではなく それをホストしている powershell.exe または pwsh.exe を taskkill してください。
複数起動していてそのうちスクリプトを走らせているものだけ判別するには、MainWindowTitle を変更するという手もありますが、少し面倒なので必要がなければ言及しません。
MainWindowTitleですか...。知識がなくピンとこない状況です。
otn 様へもご質問させて頂き、ご回答いただいておりますが、
PowerShell内に"17:30に自動で終了する"ようなものを組み込めれば、という願いがございます。
上手く実装できる方法をご教授いただければ幸いです。
宜しくお願い致します。
私が書いたのは最終手段で、他に手がない時のものです。
otn さんのコメントの通り、定期的にスクリプト中で時刻([DateTime]::Now)をチェックし、終了時刻になれば終了するという方法が良いと思います。
# 初期化
$endTime = [DateTime]"17:30"
# 以下ループ中に実行
if ($endTime -le ([DateTime]::Now)) {
exit
}
ご回答ありがとうございます。
一旦、短い時間でテストし問題なく終了するようでしたら
17:30で本稼働してみたいと思います。
何度か試しておりますが、終了しない状況です。
https://www.inasoft.org/talk/h202005a.html
上記スクリプトを17:30に終わらせたい場合は、
先ほど記載していただきました方法では難しいのでしょうか。
※マナー違反であれば即URLの削除を行いますのでご指摘いただければ幸いです。
宜しくお願い致します。
私の書いたコードがどこにも書かれていないので終了しないと思います。
スクリプト内にZuishin 様からご教授いただいております、
================
# 初期化
$endTime = [DateTime]"17:30"
# 以下ループ中に実行
if ($endTime -le ([DateTime]::Now)) {
exit
}
================
をコピペして10分先の時刻を指定し
4回実行しましたが終了しませんでした。
スクリプト内の**適切な場所に**書く必要があります。
プログラミングをする人ではなく使うだけの人であるなら、正当な額の金銭的報酬を支払って作成してもらうのが筋です。
私は請け負いませんので、他の人をみつけてください。
今ならネットで簡単に探せます。
アドバイスありがとうございます。