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

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

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

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

Первоначально действие третье - Применить ABPs - был настроен точно так же, как и два других, например простая папка "начать в", а затем .\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 в верхней части планировщика заданий написано The directory name is invalid. (0x8007010B).

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

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

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

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

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

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

Программа / сценарий: C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe

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

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