Batch計画タスク情報の取得
3213 ワード
ソース:Windows計画タスクステータスモニタリング
Windows計画タスク情報を収集します.手順は次のとおりです.スクリプトによって条件に合致する計画タスクのリストを取得する. スクリプトを使用して、指定された計画タスクのステータスと前回の実行結果をクエリーします.
実は上の手順があれば、batchのほうがずっとやりやすいです.
具体的な考え方は以下の通りです. Windowsで計画タスク情報を取得するコマンドがあることを確認する. コマンド出力の内容が需要を満たしているかどうかをテストします. コマンド出力内容をクリーンアップし、必要な結果に簡略化する. テスト、リリース.
分析結果があれば、やりやすいので、3つのステップに分けます.テスト計画タスクコマンド; 計画タスクの発見スクリプトを作成する. 計画タスク情報の取得スクリプトを作成する.
マイクロソフトの公式に計画タスクの命令を調べたところ、Windowsには
基本情報取得(/nhパラメータは使用できません):
すべての計画タスクの人物名、ステータス、および最終実行結果を取得します.
特定の計画タスクのフィルタを追加するには、次の手順に従います.
上記コマンドがbatchに含まれる場合、上記コマンドの変数は
使用方法:
使用方法:
このスクリプトは、Windows 2003、2008で実行されます.他に解決できなかった問題についてお話しします.
一部のマシンはローカル言語パッケージの問題で、
エラー:カラムリソースをロードできません.
このとき、コマンドラインであれば、
しかし、
一部のシステムでは実行時にのみステータスRunningが返され,その他の場合は空であるため,/fo csv方式を用いて処理を行うことが考えられる.
需要
Windows計画タスク情報を収集します.手順は次のとおりです.
ぶんせき
実は上の手順があれば、batchのほうがずっとやりやすいです.
具体的な考え方は以下の通りです.
ソリューション
分析結果があれば、やりやすいので、3つのステップに分けます.
タスクを計画するコマンド
マイクロソフトの公式に計画タスクの命令を調べたところ、Windowsには
schtasks.exe
というプログラムが提供されていた.勉強の下で使う.基本情報取得(/nhパラメータは使用できません):
schtasks.exe /query | findstr “Taskname1 Taskname2"
Folder: \
TaskName Next Run Time Status
======================================== ====================== ===============
Taskname1 N/A Disabled
Taskname2 N/A Disabled
すべての計画タスクの人物名、ステータス、および最終実行結果を取得します.
for /f "tokens=2,5,9" %a in ('schtasks.exe /query /v /nh') do @echo %a %b %c
特定の計画タスクのフィルタを追加するには、次の手順に従います.
for /f "tokens=2,5,9" %a in ('schtasks.exe /query /v /nh') do @echo %a %b %c | findstr "taskname1 taskname2 …"
上記コマンドがbatchに含まれる場合、上記コマンドの変数は
%
、例えば%%a
を加える必要があります.ただし、前回の実行結果のフィールドは16進数、出力は10進数であり、変換に注意してください.一部の計画タスクの名前にスペースが含まれているため、コメントを抽出することも考えられます.計画タスクの自動検出
使用方法:
schtasksdiscovery.bat "name1 name2 name3"
REM
REM schtasksdiscovery.bat "name1 name2 name3"
@echo off
@setlocal enabledelayedexpansion
REM IMPORTANT!!! ext is bat.
REM discovery all want monitored scheduled tasks name.
set "str={ ^"data^":["
if NOT [%1]==[] (set "para=%*") else set "para=none"
for /f "tokens=2 delims=," %%a in ('schtasks.exe /query /v /nh /fo csv ^| findstr %para%') do set "str=!str! {"{#SCHTASKNAME}^":^%%a^},"
if "%str:~-1,1%"=="," set "str=%str:~0,-1%"
set "str=%str% ] }"
echo %str%
計画タスク情報の収集
使用方法:
schtaskstat.bat taskname
REM
schtaskstat.bat taskname
@echo off
REM IMPORTANT!!! ext is bat.
REM get status of specified task
for /f "tokens=5,9" %%a in ('schtasks.exe /query /v /nh /fo csv^| findstr "%1"') do @echo %%a %%b
その他
このスクリプトは、Windows 2003、2008で実行されます.他に解決できなかった問題についてお話しします.
Language Packの問題
一部のマシンはローカル言語パッケージの問題で、
schtasks.exe /query
コマンドを実行するとエラーが発生します.エラー:カラムリソースをロードできません.
このとき、コマンドラインであれば、
chcp 437
を使用し、修正スクリプトの2,5,9
を2,5,10
とすることができる.正しい結果が得られる.しかし、
chcp 437
が実行されると、新しいサブプロセスが開かれることがわかります.この方法は少なくともZabbixでは正常に使用できず,依然として文字化けしていることを試験した.chcpがどのように加入しても、正常に有効になりません.結果は問題を返します
一部のシステムでは実行時にのみステータスRunningが返され,その他の場合は空であるため,/fo csv方式を用いて処理を行うことが考えられる.