Сценарий 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 в поле аргументов задачи.