Windows Server 2003のタスクスケジューラにはエクスポート機能がない。そこでWindows Server 2012 R2側の機能を活用することで、タスクをエクスポート/インポートして移行する方法を解説。
対象OS:Windows Server 2003/Windows Server 2012 R2
Windows Server 2003のタスクスケジューラには、タスクを他のコンピューターに移行するためのエクスポート機能が備わっていない。
それでもWindows Server 2003同士であれば、タスクの実体である.jobファイルをコピーすれば移行は可能だ。しかし、移行先がWindows Server 2008以降のタスクスケジューラだと、.jobファイルを読み込む機能はなく、この方法では移行できない。
だが、移行先の新サーバー(Windows Server 2012 R2)から旧サーバー(Windows Server 2003)にリモート接続すると、タスクのエクスポート/インポートによる移行が実現できる。本TIPSではその具体的な手順と注意点を説明する。
本TIPSで説明する移行方法では、新サーバーのタスクスケジューラから旧サーバーへネットワーク経由で接続できる必要がある。それには両サーバー間でMicrosoft Windowsネットワークの通信が可能でなければならない。オフラインでは移行できない。
旧サーバーが新サーバーとは別のネットワーク(例えばDMZ)に接続されている場合は、一時的にVPNを設けるなどして、接続を確立していただきたい。
また本TIPSでは、Windows Server 2008以降のタスクスケジューラの基本的な機能が利用できることを前提としている。タスクスケジューラの基本的な使い方については、TIPS「タスクスケジューラの基本的な使い方(Windows 7/8/8.1編)」を参照していただきたい。
まずは旧サーバーのタスクをXMLファイルにエクスポートする。それには、新サーバーでタスクスケジューラを起動して、そこから旧サーバーに接続し、タスクのエクスポートを実行する。旧サーバーを直接操作する必要はなく、新サーバーからリモートで接続できればよい。
以上でタスクのエクスポート作業は完了だ。
次に、新サーバーにタスクのXMLファイルをインポートする。それには、新サーバーでタスクスケジューラをあらためて起動し、前述の手順で作成した旧サーバーのタスクのXMLファイルを指定してインポートする。
以上でタスクのインポート作業は完了だ。
移行すべきタスクがたくさんある場合は、Windowsに標準装備されているschtasksコマンドを利用するとよい。コマンドラインやバッチコマンドでタスクの移行作業を自動的に実行しやすいからだ。
旧サーバーのタスク一覧を確認するには、新サーバーでコマンドプロンプトを管理者権限で起動してから、次のようにschtasksコマンドを実行する(findコマンドを併用することで、タスク名のみを抽出している)。
schtasks /Query /S <旧サーバー名> /U <ユーザー名> /P <パスワード> /FO LIST | find "タスク名:"
<ユーザー名>と<パスワード>には、旧サーバーにリモート接続するためのユーザーアカウント名とそのパスワードを指定する。ドメイン環境で、新サーバーにサインインしたユーザーアカウントが旧サーバーでも通用する場合、これらの指定は省いてよい(簡略化のため、以下のコマンドラインでは省略している)。
複数のスケジュール(タスクを起動するサイクル)が登録されているタスクが存在する場合、上記のコマンドラインを実行すると、スケジュールの数だけタスク名が重複して出力されるので注意が必要だ。
さてタスク名を確認したら、次のコマンドラインでタスクの内容をXMLファイルにエクスポートする。
schtasks /Query /S <旧サーバー名> /TN "<タスク名>" /XML > <エクスポートファイル名>
最後に、次のコマンドラインでエクスポートファイルから新サーバー上にタスクを作成する。
schtasks /Create /TN "<タスク名>" /XML <エクスポートファイル名> /RU <実行アカウント名> /RP "<実行アカウントのパスワード>"
<実行アカウント名>と<実行アカウントのパスワード>には、対象のタスクを実行するのに用いるアカウントの情報を指定する。<実行アカウントのパスワード>を指定しないと、コマンド実行後にパスワードの入力が求められる。
以上の作業で新サーバーにタスクが作成されたはずだ。タスクの設定を変更するには、前述のタスクスケジューラのほか、schtasks /Changeコマンドも利用できる。その詳細は「schtasks /Change /?」と実行すると表示されるヘルプを参照していただきたい。
新サーバーからタスクスケジューラあるいはschtasksコマンドで旧サーバーに接続した際、特定のタスクだけが参照できず、リストアップもエクスポートもエラーが発生して失敗することがある(このとき、旧サーバーでは正常にプロパティを参照できる)。
schtasks /Queryコマンドで参照した場合は、「エラー: パラメーターが間違っています。」というエラーメッセージが表示される。
筆者がこのエラーに遭遇したとき、その原因は特定できなかった。こうした場合は手動でタスクを作り直すしかないだろう。すなわち、旧サーバーでプロパティを開いてパラメーターをメモし、新サーバーで新たにタスクを作成して、メモしたパラメーターを反映することになる。
タスクで起動される実行ファイルは、別途新サーバーにセットアップする必要がある(上記の作業では移行されない)。タスクを実行する前に、まずは実行ファイルを手動で直接起動して、正常に実行できるか確認しよう。
その後で、手動でタスクの起動を試してみよう。旧サーバーのように正しく実行できなかった場合は、タスクの設定や実行ファイルの設定などを見直すこと。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.