質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

1回答

7206閲覧

タスクスケジューラに登録したPowerShellスクリプトスクリプトがタイムアウトしない

tetsuy

総合スコア22

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

1クリップ

投稿2019/09/03 09:36

スクリプトは自動停止しないため、タスクスケジューラにて指定時間経過後にプロセスを強制終了させようとしていますが、強制終了してくれません。

前提・実現したいこと

OSは Windows 10 Pro 1803 です。

PowerShellスクリプトをタスクスケジューラに登録し、定期実行させようとしています。

PowerShellスクリプト内では別のexeを実行してその結果をファイルに書き出しています。(実際には他の処理を書いていますが以下の単純なスクリプトで再現できたため、あえてこのような内容にしています)

powershell

1& ping -t localhost | Out-File "test.txt"

タスクスケジューラでは、実行するプログラムに
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
を指定し、その引数には
-NoProfile -ExecutionPolicy Unrestricted "PowerShellスクリプトファイル"
を指定しています。
「トリガー」タブ内の設定ではタスクの繰り返し間隔を、「設定」タブでは「タスクを停止するまでの時間」を指定して、途中でタスクが強制終了するようにしています。

発生している問題

スクリプトはちゃんと実行されますが、指定時間経過後もスクリプトが終了されずに実行され続けてしまっています。

タスクマネージャで確認すると、タスク実行時にはきちんとプロセスが立ち上がり正常に動いています。
タスク実行時

指定時間経過時、タスクスケジューラのログ上は「タイムアウトに達したため、タスクが停止しています」と表示されています。
しかし、PowerShellのプロセスとコンソールウィンドウホストのプロセスは終了しているのですが、スクリプトから呼び出しているプロセス(Ping)は残ってしまいます。スクリプトを実行しているウィンドウも消えずそのまま残ってしまいます。
指定時間経過時

タスクスケジューラで指定したタイムアウト時間で、スクリプトから呼び出しているプロセスも一緒に強制終了させることはできないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/09/07 02:11

回答しています。思っていた回答と違うなら、そのむねコメントして質問を編集してください。 その際は質問の主旨は変えず、まったく別種の質問を加えず、また現在の質問を削除せず、文末に追記してください。
guest

回答1

0

タスクスケジューラで強制終了させるのをやめ、スクリプトで終了させてください。
以下のスクリプトで 30 秒後に終了するのを確認しました。

PowerShell

1$job = Start-Job -ScriptBlock { ping -t localhost | Out-File "test.txt" } 2Start-Sleep 30 3Stop-Job $job

投稿2019/09/03 14:01

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問