タスクスケジューラを PowerShell で管理してみる。<Get 編 其の一>

管理ツール「タスクスケジューラ」(taskschd.msc)を PowerShell で操作するためには、モジュール「ScheduledTasks」のコマンドレットを使用します。

なお、このモジュールは、 Windows Server 2012 や Windows 8 以降の OS でしか使えません。

同じ PowerShell 3.0 を Windows Server 2008、Windows Server 2008 R2 、Windows 7 にインストールしてみましたが、使えませんでした。

 

PowerShell において、なんらかの設定情報を取得するためには " Get-***** " というコマンドレットを打つのが常道ですから、とりあえず " Get-ScheduledTask " を実行してみます。

すると、タスクの一覧を取得できました。

コマンドプロンプトで " SCHTASKS /Query " コマンドを実行した場合と似ています。

(PowerShell もコマンドプロンプトも、「管理者として実行」していない場合、アクセス権が及ばないタスクの情報は取得できません。)

 

 







 

一覧ではなく、特定のタスクの詳細な情報を得るには、" -TaskName " オプションによりタスク名を指定します。

 

 

せっかくですので、デフォルトで存在するタスクではなく、タスクスケジューラで手動作成したタスクを対象にやってみることにします。

タスク作成手順は以下のとおりです。(特に記載のない部分は全てデフォルト値のまま。)

- a: Windows Server 2012 に、ビルトイン Administrator としてログオン。

- b: タスク スケジューラー ライブラリ 配下に、フォルダー「test」を作成。

- c: 「test」配下に、新しいタスクを作成。

- d: 名前は「task」。

- e: タスクの実行時に使うユーザーアカウントは、Administrators グループに所属するローカルユーザー「u001」。

ログオンしているかどうかに関わらず実行する。

f: トリガーは「毎週一回、日曜日の 03:30 」。

- g: 操作は、プログラムが「powershell.exe」。引数として「E:¥script.ps1」。

最後の保存時に、u001 のパスワードを入力して完成です。

u001 が、E ドライブ直下にあるスクリプトファイル「script.ps1」を、 毎週日曜深夜三時半に実行するタスクが出来上がりました。

 

 

このタスクの一通りの情報(各種プロパティ)をリスト形式で表示するために、" Get-ScheduledTask -TaskName task | Format-List " というコマンドレットを実行してみたのですが・・・

どういうわけか、中途半端な情報しか得られません。

 

 

[Author] というプロパティから、このタスクの作成者が Administrator であることがわかります。

[Date] は、作成日時を示すようです。

[State] の "Ready" は、タスクスケジューラで「状態」の列に表示される「準備完了」の事だと思われます。

[TaskPath] で、このタスクが " ¥test¥ " というフォルダ内にあることがわかります。

 

 

しかし、実行する処理、スケジュール、実行ユーザーについては、一切分かりません。

その代わり(?)に、[Actions][Principal][Triggers] といったプロパティに、「MSFT_Task******」という意味ありげな文字列が表示されています。

<Get 編 其の二> では、これらのプロパティを詳しく見ていきます。