sumitk.cadc Ответов: 1

Win32_scheduledjob не возвращает никаких результатов в C# ?


привет всем я использую приведенный ниже код для получения расписания всех задач в окне 7

ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\cimv2");

          string query = "SELECT * FROM Win32_ScheduledJob";

          ManagementObjectSearcher searchCom;
          ManagementObjectCollection moCollection;
          WqlObjectQuery result = new WqlObjectQuery(query);
          searchCom = new ManagementObjectSearcher(scope,result);
          moCollection = searchCom.Get();


но это не дает никакого результата.
может ли кто-нибудь сказать мне, что не так в приведенном выше коде?

ТИА

Что я уже пробовал:

Я поискал в google, но не получил никакого решения

Richard MacCutchan

Может быть, нет никаких запланированных заданий.

sumitk.cadc

я создал задание для получения информации

1 Ответов

Рейтинг:
2

EskeRahn

Причина в том, что этот вызов внутренне использует старый протокол AT (то есть NT-стиль, как и старая команда AT), а не те, которые созданы, скажем, в планировщике задач.

см., например: [^]

Но на очевидный вопрос о том, как мы доберемся до всего остального, на Win8/WinSrv2012 и далее удаленно у меня, к сожалению, нет ответа...

ДОБАВЛЯТЬ:
Найдено решение с помощью этого пакета MicroSoft Nuget:

using Microsoft.Win32.TaskScheduler;
using (TaskService ts = new TaskService($"\\\\{host}", username, domName, password)) {
    Task[] tasks = ts.FindAllTasks(new System.Text.RegularExpressions.Regex("."),true);
    foreach(Task task in tasks) {
        TaskPrincipal princ = task.Definition.Principal;
        Console.WriteLine($"{host} SchedJob:'{task.Name}' usr:'{princ.UserId}' Enabled:{task.Enabled}")
    }
}


EskeRahn

Обратите внимание, что это (как код OP) проходит через RPC, который не так часто открывается на машинах вообще. т. е. не через обычно открытый WinRM. Видишь ли https://github.com/dahall/TaskScheduler/issues/785