2015年7月15日(日本時間)にマイクロソフト社が提供しているOS
Windows Server 2003 のサポートが終了します。
Windows Server 2008R2、Windows Server 2012R2へのサーバーリプレイスを行う際、
タスクスケジューラーの移行でお悩みの方は参考にして下さい。
(Windows 2008R2にも適用出来ます)
1.Windows Server 2003 にてタスクリストを作成
コマンドプロンプトから C:\WINDOWS\Tasks に格納されている .job のリストを作成
cd C:\WINDOWS\Tasks
dir /w > [出力先ファイル名]
← ジョブファイル名のみの一覧が出力される
2.Windows Server 2012R2 からタスクのエキスポートを行う
Windows Server 2003ではXML形式でジョブのエキスポートが出来ない為、Windows Server 2012R2側でタスクのエキスポートを行う。
コマンドプロンプトより下記のコマンドを実行。
schtasks /query /s \[Windows Server 2003のIP Address] /tn "[タスク名]" /XML > [出力ファイル名].xml
※1.で出力したリストを正規表現等で上手に加工すれば.job数分のコマンドが楽に生成できます。
※複数タスクのエキスポートの際は .bat ファイルにして実行すると楽です。
3. [出力ファイル].xmlの中身を書き換える
Windows Server 2003のタスク設定に無い項目「構成」の設定方法
Task version="1.1" → Task version="1.x" に書き換える
※xは任意の数 例)"1.2" で 「Windows Server 2008R2」 となる
「構成」のプルダウンの内容が変わります。
Windows Server 2003のタスク設定に無い項目「最上位の特権で実行する」の設定方法
schtasks のオプション /RL でも設定出来るが /XML オプションとの併用が不可の為、xmlファイルに記述する。
<Principal>
<RunLevel>HighestAvailable</RunLevel>
</Principal>
これでチェックボックスにチェックが入る
UserIdをWindows Server 2012R2に合わせて書き換える
<UserId>[新サーバー名][実行ユーザー名]</UserId>
4.Windows Server 2012R2へタスクを作成
コマンドプロンプトより以下のコマンドで Windows Server 2012R2 にタスク作成を行う。
schtasks /create /tn "[タスク名]" /XML "[3.で加工したXMLファイル名]" /RU "[実行ユーザー名]" /RP [実行ユーザーパスワード]
※タスクを階層で作成したい場合は"[タスク名]"を"[ディレクトリ名]/[タスク名]"とする
※"[実行ユーザー名]"は"ServerName/UserName"の形で設定する
※2.で作成した .bat を正規表現等で上手に加工すればコマンドが楽に生成できます。
※複数タスク作成の際は .bat ファイルにして実行すると楽です。
以上の作業で Windows Server 2003 から Windows Server 2012R2 へタスクスケジューラーの移行が出来るはず!
無事に出来たかな??