Назад | Перейти на главную страницу

Мой сценарий PowerShell не сохраняется в файл при использовании планировщика заданий; мне нужно указать конкретный аргумент?

У меня есть сценарий, который загружает временный файл Excel, копирует его части в новый файл и сохраняет его в определенном месте в сети.

Проблема в том, что новый файл никогда не создается / не сохраняется. Если я запускаю сценарий локально (через cmd.exe, PowerShell или PowerShell ISE), он БУДЕТ сохранять файл локально или в сети. Если я попытаюсь запустить сценарий по расписанию или по запросу через планировщик задач, временный файл будет создан, но окончательный документ никогда не будет создан и сохранен. Есть ли конкретный аргумент, который мне нужно передать, или что-то, что я делаю неправильно? Я сейчас использую эту команду:

    powershell.exe -file C:\path\to\my\powershell\script\thescript.ps1

Поскольку он вызывает переменные среды и другие переменные, относящиеся к положению скрипта, я также установил для параметра "Начать в" значение

    C:\path\to\my\powershell\script\

Я пробовал использовать

    \\MYSERVER\Path\To\Directory\file.xlsx

в качестве расположения файла в сети (как предлагается здесь), но это тоже не работает.

Скрипты работают, когда вы их запускаете, потому что у ВАС есть права на место назначения. По умолчанию запланированная задача запускается от имени пользователя локальной системы.

Для этой цели вам следует создать нового выделенного пользователя в своем домене, дать ему именно те права, которые необходимы для выполнения этой задачи (и не более того), и настроить запланированную задачу для запуска от имени этого пользователя.

Каким образом вы указываете параметры в сценарии PowerShell (можете ли вы опубликовать его фрагмент с указанными частями)? Вам обычно нужно double quotes вокруг параметров при вызове из Task Scheduler.

Скрипт работает, если вызвать его из Powershell command prompt?

это вопрос может немного помочь. Не совсем то же самое, но я уверен, что это аналогичное решение.

Вот - еще одна статья TechNet, которая может помочь в решении этой проблемы. Краткое содержание:

Found the answer to this - enclosing my entire arguments in double quotes and then my parameters in single quotes ensured that the correct values were being passed to my parameters.