4

Я не буду публиковать, если бы я попробовал множество возможных решений, которые были опубликованы по этому поводу ранее.

Я разработал часть программного обеспечения, которая с помощью файла .vbs (exporter.vbs) выполняет .exe из другой части программного обеспечения (reporter.exe), которая установлена на клиентском компьютере.

Сценарии использования

Запуск файла exporter.vbs вручную (щелчок правой кнопкой мыши и открытие) работает идеально, точно так, как ожидалось. При запуске на моем компьютере через планировщик заданий в качестве моего собственного пользователя Windows, он работает идеально, именно так, как и ожидалось.

При запуске на клиентском компьютере с Windows Server 2008/2012 вручную он работает идеально, точно так, как ожидалось. При запуске через планировщик заданий от имени любого пользователя (исключая группу администраторов) планировщик заданий сообщает как 0x0, однако reporter.exe не сгенерировал файлы, как ожидалось.

При запуске на клиентском компьютере Windows Server 2008/2012 с помощью планировщика задач, выполняемого от имени администратора, он работает, однако в одночасье (когда наша задача настроена на запуск) не запускается.

Настройка запланированных задач - Общие

Настройка запланированных задач - Действия

Скрипты

В приведенных выше сценариях файл exporter.vbs , по-видимому, отключается на этом этапе выполнения сценария, когда выполняются другие части сценария (другая часть сценария очищает целевые файлы XML).

Function Export(filepath, report)
    dim fso
    set fso_tidy = CreateObject("Scripting.FileSystemObject")

    if fso_tidy.FileExists(filepath)=true then

        set fso_tidy = nothing

        set oShell = CreateObject("WScript.Shell")
        oShell.Run """"&simsdir&"\CommandReporter.exe"" /QUIET /user="""&simsu&""" /password="""&simsp&""" /REPORT:"""&report&" v"&rptv&""" /OUTPUT:"""&filepath&"""", 0, true

        set oShell = nothing

        set fso_tidy = CreateObject("Scripting.FileSystemObject")
        set objFile = fso_tidy.GetFile(filepath)

        if objFile.size > 64 then
            size = round(objFile.size / 1024, 1)
            WriteToLog "DATA", "(OK) "&report&" EXPORTED (size: "&size&"kb)"
        else
            WriteToLog "DATA", "(FAILED) "&report&" EXPORTED (size: "&size&"kb)"
        end if

        set objFile = nothing

    end if

    set fso_tidy = nothing
end Function

Эта функция вызывается 5 раз, один раз для каждого отчета, который нам нужен для экспорта данных из Программного обеспечения.

Что уже испробовано

  • Полные права пользователя в папке моего программного обеспечения
  • Пробовал работать под любым пользователем, будь то локальный или доменный уровень на клиентском сервере
  • Пробовал запускать vbs используя cscript.exe

Есть ли что-то, чего мне не хватает с точки зрения того, как VBS нужно запускать из планировщика задач, если они манипулируют файлами и т.д.

1 ответ1

0

У вас есть задача для запуска в контексте учетной записи локальной системы. Системная учетная запись не является полноценным интерактивным пользователем, поэтому не все будет работать в этом контексте. При использовании его для задач необходимо учитывать следующие соображения:

  • Локальная система представляет учетные данные вашей учетной записи компьютера в сети (т. COMPUTERNAME$), поэтому, если filepath находится в общем сетевом ресурсе, учетная запись локального компьютера должна иметь определенные разрешения для нее (или группы Все).
  • Локальная система не имеет профиля пользователя (технически он есть, но в нем ничего нет). Все, что относится к настройкам реестра для каждого пользователя или расположению файловой системы, скорее всего, потерпит неудачу.
  • Процессы, работающие как локальная система, не могут взаимодействовать с пользователем, поэтому, если ваш сценарий открывает диалоговое окно, пользователь не увидит его.

Попробуйте запустить свою задачу как подлинную локальную или доменную учетную запись вместо системной учетной записи. Вам, конечно, нужно будет встроить пароль в задачу, чтобы это работало.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .