各タスクは多重起動されない(繰り返し実行する設定でも現在のタスクが終了しない限り、次のタスクは実行されない)
原因は、作業フォルダの設定が無いため
作業フォルダの設定は、実行するプログラムを指定する際にある「開始(オプション)(T):」にログを出力するフォルダを指定する。
参照:Winのタスクスケジューラが実行されないときの対応
もしくは、実行するプログラムがバッチファイルであれば、バッチ内で下記コードを記述してカレントフォルダを指定する。
cd /d %~dp0
プルダウン・リストボックスにない間隔は、「1234 秒間」「12 分間」「3 時間」「01:23:45」といったように直接入力できる。
タススケジューラーの仕様
https://docs.microsoft.com/ja-jp/windows/win32/taskschd/repeating-a-task
繰り返し間隔が1分、繰り返し時間が4分であるトリガーを含むタスクを登録すると、タスクは5回開始されます。5回の繰り返しは、次のパターンで定義できます。
毎日6:00から繰り返し間隔1時間で4:00と5:00の監視は外したい場合に継続時間22時間とすると4:00の監視は動作してしまうので、継続時間は想定より1回分少ない21時間で設定する。
※設定を継続時間1日から22時間に変更した初回は3:00の監視が動作せず、次の日は4:00の監視は動作した。
全般タブのセキュリティオプションで「ログオンしているときのみ実行する」とする。
タスクマネージャーで、「Console」ユーザーにメッセージ送信する。
逆に「ログオンしているかどうかにかかわらず実行する」になっていれば、必ずバックグラウンドで実行されるので、コマンドプロンプトの姿を見ることはできません。
タスクスケジューラーでPowerShellを動かすと一瞬青い画面が表示される。これを非表示化したい。
conhost.exe –headless を使用することで、powershell の一瞬青い画面が表示されなくなります。
PowerShellスクリプトを非表示で実行するための効果的な方法と手順 - conhost.exeを使った方法
プログラム | conhost.exe |
---|---|
引数の追加 | –headless powershell -NoProfile -ExecutionPolicy Bypass D:\web_projects\wh_rdp\GetClientName.ps1 |
開始 | D:\web_projects\wh_rdp |
NoProfileは、PowerShellの実行時に読み込む環境情報を読み込まないため、起動が多少速くなる 開始(オプション)のパスはPowerShellスクリプトの作業用の「カレントディレクトリ」を指定するため
Use PowerShell to Create Scheduled Tasks Folders
ルート直下に「Test」フォルダ作成を作成する。
$scheduleObject = New-Object -ComObject schedule.service $scheduleObject.connect() $rootFolder = $scheduleObject.GetFolder("\") $rootFolder.CreateFolder("Test")
コード | 説明 |
---|---|
0 (0x0) | この操作は正しく終了しました。 |
1 (0x1) | 関数が正しくありません。 |
2 (0x2) | 指定されたファイルが見つかりません。 |
英語のところは日本語に翻訳する。
タスクが実行するバッチ内で、pause コマンドが入ったままになっていた。
0x8004131F:An instance of this task is already running.
0x8004131F:このタスクのインスタンスは既に実行中です。
サーバー起動時に発生、再起動では発生していない。
0x800710E0:オペレーターまたは管理者が要求を拒否しました。
対処方法として、タスクスケジューラーの条件タブの「コンピューターをAC電源で使用している場合のみタスクを開始する」をオフに設定する。
0x80070002:指定されたファイルが見つかりません。
対処方法として、指定のファイルが見つからないので設定を見直す。
0x41303:タスクは実行されていません。
対処方法として、タスクを実行する。もしくはタスクスケジューラーの開始日を未来の日付にする。
操作タブにbat実行等2つ以上設定している場合にサーバ起動後の初回とそれ以降の自動実行がエラーになる場合がある。
タスク スケジューラにて、タスクに “操作” を複数 (2 つ以上) 登録した場合、タスクのスケジュール時刻がスキップされたタイミング以降に、タスクがスケジュール実行されなくなる問題があります。
[設定] タブにて「タスクスケジュールされた時刻にタスクを開始できなかった場合、すぐにタスクを実行する」にチェックを入れる。
操作を1つにしていただくことで回避が可能