Windows Server 2008 システムで実行されている TaskService (COM タスク スケジューラ 1.1 タイプ ライブラリの相互運用) クラスを使用して、別の Windows サーバー システムのタスク スケジューラにリモート接続しています。関連するコード スニペットは次のとおりです。
var ts = new TaskService(IP address, userId, domain, password);
foreach (Task task in ts.RootFolder.Tasks)
{
Console.Writeline(task.Definition.Principal.UserId);
}
これは、ターゲットが Windows 2008 および Windows 7 の場合にうまく機能しますが、Windows サーバー 2012 および Windows 8 では、次の COM 例外が発生します。
「タスク XML には、形式が正しくないか範囲外の値が含まれています。(HRESULT からの例外: 0x80041318)」
上記で返されたタスクの Xml プロパティを調べました。唯一の違いは、Windows 2012 の場合はタスク バージョン =\"1.4\" ですが、リモート システムが Windows 2008 または Windows 7 の場合、タスク バージョン=\"1.3\" 以下であることです。"
プロパティ アクセサー task.Definition が例外をスローしています:
System.Runtime.InteropServices.COMException (0x80041318): The task XML contains
a value which is incorrectly formatted or out of range. (Exception from HRESULT:
0x80041318)
at TaskScheduler.IRegisteredTask.get_Definition()
ITaskSchedulerService インターフェイスは、XML を使用してタスクを定義します。Windows 8 および Windows 2012 では、バージョン 1.2 ~ 1.3 を使用する最も古い Windows OS と互換性のない新しいタスク スケジューラ リモーティング プロトコル (バージョン 1.4) を使用します。
Windows 2008 システムからリモートで Win 2012 または Win8 タスク スケジューラをターゲットにする方法はありますか?