У меня есть сценарий, который загружает временный файл 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.