Сценарий PowerShell, запущенный из запланированной задачи: не удалось запустить действие, недопустимое имя каталога

У меня на сервере Windows Server 2012 R2 выполняется запланированное задание с тремя действиями, каждое из которых выполняет сценарии PowerShell:

Каждое из этих действий "запускается" в соответствующем (и правильном) каталоге:

Первоначально третье действие - ApplyABPs - было настроено точно так же, как и два других, например, простая папка "начать в", а затем .\ApplyABPs.ps1 в качестве аргумента. Это сработало как задумано.

Я хотел добавить некоторые записи в последний скрипт, поэтому я добавил следующий код для точечного источника моего общего ресурса. FunctionsLibrary.ps1 файл, создайте файл журнала и запишите в него:

# Call functions file...
. (Join-Path "C:\scripts\" FunctionLibrary.ps1)

# Create a log file
$LogFile = Create-Log -Location $LogfileLocation

Write-Log -Important -Text "==== ApplyABPs.ps1 ====="

Дополнения к ApplyABPs сценарий и это FunctionLibrary.ps1 работа скрипта в других файлах.

Если я запускаю это ApplyABPs.ps1 Сценарий от PowerShell ISE, он работает как задумано - создает файл журнала и записывает в него.

Тем не менее, когда я пытаюсь запустить запланированную задачу, первые два действия запускаются как обычно, но третье действие не выполняется:

Этот код не дает мне много деталей, но Last Run Result вверху Task Scheduler говорит The directory name is invalid. (0x8007010B),

Итак... в целях тестирования я попытался добавить то же самое FunctionLibrary.ps1 и изменения в коде сценария для двух других действий. Затем планировщик задач сразу же завершился с ошибкой и возвратил ту же ошибку для самого первого действия.

Когда я затем возвращаю код, действия работают.

Я попытался изменить способ, которым запланированная задача вызывает PowerShell (поэтому -executionpolicy bypass, -noprofile а также -file параметры в верхнем скриншоте), но это не имеет значения.

На основе directory invalid мне интересно, если PowerShell - при вызове запланированной задачи - не может получить доступ к файлу с точечным источником или что-то в этом роде?

Если бы кто-то мог пролить свет на эту конкретную ошибку или дать представление о том, как планировщик задач вызывает PowerShell (и используемые им каталоги / относительность), это было бы идеально.

1 ответ

Используйте следующий синтаксис для запуска сценария PowerShell в планировщике задач:

Программа / скрипт: C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe

Добавьте аргументы: -NoLogo -Неинтерактивно -Noprofile -Command "&{C:\ScriptFolder\get-LicensingInputFromAD.ps1}"

И используйте полный путь \ имя файла для каждого файла.ps1 в поле аргументов задачи.

Другие вопросы по тегам