AT コマンドが廃止されてた。

Windows の「タスクスケジューラ」にタスクを登録するコマンドとしては、"at" , "schtasks" の2つがありますが、Windows Server 2012 で "at" コマンドを実行すると、「それもう廃止されたから "schtasks" 使ってね。」という旨のメッセージが表示されます。

 

"at" コマンドの特徴として、登録したタスクが、既定では [SYSTEM] アカウントにより実行される、という点が挙げられます。

[SYSTEM] アカウントとは、通常はコンピューターの内部処理に使われるものであり、ユーザーがこのアカウントを用いて対話的にログオンする事は出来ません。

大変強い権限があるため、Administrator でもアクセス許可が無い「何か」へアクセスするタスクは、"at" コマンドで作成すると便利です。

 

 

その "at" コマンドが無くなってしまいました・・・

では 今後、[SYSTEM] アカウントによりタスクを実行したい場合はどうしたらよいのでしょうか?

手段を3つ考えてみました。(Windows Server 2008 R2 SP1 および Windows Server 2012 にて確認。)

 

 

<1> まず一番簡単なのは、手動による変更です。

GUI (タスクスケジューラ)ないし "schtasks" コマンドにより作成したタスクは、GUI 上の操作(タスクを右クリック -> プロパティの[全般]タブ内)でその実行ユーザーを変更することが可能なので、 [SYSTEM] アカウントに変更します。

 

 

<2> タスクの作成および作成後に、GUIでの操作が一切出来ないというケースもあるかと思います。

そのような場合には、"schtasks" コマンドによりタスクを作成する際に、実行ユーザーを指定するオプション "/RU" の引数に [SYSTEM] と記述します。(パスワードの入力は不要です。)

 

 

<3> "schtasks" コマンドによる、「XML ファイルのインポート」という手もあります。

GUI上でタスクを右クリックし、「エクスポート」を選択することで、実行ユーザー等の設定情報が記述されたXMLファイルが保存されます。

あらかじめ [SYSTEM] アカウントにより実行されるよう設定したタスクをエクスポートしておき、"schtasks" コマンドによりタスクを作成する際、XMLファイルを読み込むオプション "/XML" の引数としてそのXMLファイルのフルパスを記述します。

これにより、"/RU" オプション無しでも、 [SYSTEM] アカウントにより実行されるタスクが作成されます。

※"/RU" オプションにより、XML内の記述と異なる実行ユーザーを指定した場合は、"/RU" オプションが優先されます。

 

 

このXMLファイルには、実行ユーザー以外にもタスクの設定情報が多く記述されていて、メモ帳でも編集可能です。

"schtasks" コマンドによりタスクを作成する際のオプションとしては存在しない設定も、どうやら編集出来るようなので、覚えておいて損は無い方法だと思います。