管理ツール「タスクスケジューラ」(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 編 其の二> では、これらのプロパティを詳しく見ていきます。